Skip to content

GitLab

  • Menu
Projects Groups Snippets
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • L LEGO
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • LEGO Group 8
  • LEGO
  • Wiki
  • lab report notebook 1

lab report notebook 1 · Changes

Page history
fjerlv created page: lab report notebook 1 authored Feb 19, 2015 by Frederik Jerløv-Troelsen's avatar Frederik Jerløv-Troelsen
Hide whitespace changes
Inline Side-by-side
lab-report-notebook-1.markdown 0 → 100644
View page @ 764d2063
# Group 8
## Lab Notebook 1
**Date:** 12/2-2015
**Duration:** 5-6 hours
**Participants:**
- Frederik Jerløv
- Casper Christensen
- Mark Sejr Gottenborg
- Peder Detlefsen
## Goal
The goal to equip our NXT Robot with a light sensor and execute the exercises.
See more [1].
## Plan
Our plan is to follow the exercises exactly as described.
## Results
### Exercise 1
The goal of this exercise was to measure the light values for different colors. We collected lightsensor values for different colors and determined a threshold for black and white.
| Color | Value
|-------------|-------
| White | 58
| Grey 1 | 51
| Grey 2 | 47
| Grey 3 | 42
| Grey 4 | 37
| Black | 32
| Light Blue | 47
| Blue | 40
| Light Green | 38
| Dark Green | 35
| Red | 55
| Dark Red | 53
| Yellow | 56
| Dark Yellow | 56
Afterwards we set the `blackWhiteTreshold` to `white + black / 2 = (58 + 32) / 2 = 45` which is the median.
Note that the largest difference is 26.
### Exercise 2
In this exercise we experimented with the flood light setting of the light sensor. We started out by calling `light.setFloodLight(false)` which disables the flood light and then measured again.
| Color | Value | Value no FloodLight
|-------------|-------|----------------------
| White | 58 | 30
| Grey 1 | 51 | 25
| Grey 2 | 47 | 22
| Grey 3 | 42 | 19
| Grey 4 | 37 | 17
| Black | 32 | 17
| Light Blue | 47 | 27
| Blue | 40 | 26
| Light Green | 38 | 25
| Dark Green | 35 | 23
| Red | 55 | 30
| Dark Red | 53 | 27
| Yellow | 56 | 30
| Dark Yellow | 56 | 30
The maximum difference is halved to 13.
Thus we have double the accuracy with flood light turned on.
### Exercise 3
Now we had to test the effects of using different amounts of delay between the light sensor readings. Here are our results:
- 100 milliseconds
It gets to the opposite side of the black line and ends up turning all the way around to find the line again.
- 500 milliseconds
It only looks once every half second. If it's turning `right` looking for the black line and misses, it continues turning until black is observed.
- 1000 milliseconds
The same thing happens as described with 500 milliseconds.
One annoying side effect is that you have to hold Esc for at most (worst-case) 1000 milliseconds to stop the running NXT program.
### Exercise 4
In this exercise we used data logger [2], to log the measured light values. These values we then plotted in a graph to see the difference. We did this exercise on a circle track which is shown below.
![Image of the track](http://i.imgur.com/eAUy4IU.jpg?1)
Note that the `y`-axis is light registered from the light sensor where high numbers represent white and low numbers represent black. The `x`-axis is time.
![sampleInterval = 10ms](http://i.imgur.com/tkQTXvT.png)
> The robot moves quickly back and forth between black and white and follows the line fine.
![sampleInteval = 50ms](http://i.imgur.com/fmbNo4u.png)
> We almost the same thing as interval 10ms, however it doesn't make decisions as often, but still keeps on track.
![sampleInterval = 100ms](http://i.imgur.com/Th2wqaM.png)
> Here we see that our NXT missed the black line and kept looking in the white area for way too long.
### Exercise 5
In this exercise we experimented with the raw values from the light sensor which are between 0 and 1023. Let us return to our table and fill out raw values with FloodLight on.
| Color | Value | Value no Flood Light | Raw |
|-------------|-------|----------------------| -------------------- |
| White | 58 | 30 | 444 |
| Grey 1 | 51 | 25 | 502 |
| Grey 2 | 47 | 22 | 537 |
| Grey 3 | 42 | 19 | 607 |
| Grey 4 | 37 | 17 | 654 |
| Black | 32 | 17 | 695 |
| Light Blue | 47 | 27 | 550 |
| Blue | 40 | 26 | 643 |
| Light Green | 38 | 25 | 635 |
| Dark Green | 35 | 23 | 661 |
| Red | 55 | 30 | 445 |
| Dark Red | 53 | 27 | 488 |
| Yellow | 56 | 30 | 449 |
| Dark Yellow | 56 | 30 | 444 |
These new values show us that the raw data can be used to get a more accurate measurement in comparison to the light percentage. A good example is the colors Grey 1 and Light Blue which both have a light percentage of 47. That would make them indistinguishable unless the raw values 537 and 550 were used.
### Exercise 6
When the variables `left` and `right` are predefined, the String is just called by reference. So when we send a new string object the `Runtime.getRuntime().freeMemory()` gets smaller and smaller faster because we keep throwing `Strings`-objects on top of the stack. When this value gets too large the strings get cleaned up by the JVM garbage collector.
The difference in time it takes to invoke the garbage collector is seen in the two following charts `New String` and `Reference String`.
The `y`-axis is free memory. The `x`-axis is time in milliseconds.
![Reference String](http://i.imgur.com/uevEMHg.png)
![New String](http://i.imgur.com/LmOimn4.png)
## Conclusion
We equipped our LEGO car with a light sensor and we compiled and uploaded a program (`LineFollower.java`) to make it follow a black line on a white surface. We then extended its functionality by adding the `DataLogger`-class which made it easier to plot the data.
We have achieved a better understanding of how the NXT brick observes the world and how we can intercept and analyze it.
## References
[1] [Exercise material](http://legolab.cs.au.dk/DigitalControl.dir/NXT/Lesson1.dir/Lesson.html)
[2] [Data logger - Wikipedia](https://en.wikipedia.org/wiki/Data_logger "Wikipedia")
[3] [LeJOS - Java for Lego Mindstorms](http://www.lejos.org/)
Clone repository
  • Home
  • lab report notebook 1
  • lab report notebook 10
  • lab report notebook 2
  • lab report notebook 3
  • lab report notebook 4
  • lab report notebook 5
  • lab report notebook 6
  • lab report notebook 7
  • lab report notebook 8
  • lab report notebook 9