... | @@ -24,7 +24,7 @@ We plan to complete the work on Friday the 20th of May and so will continue work |
... | @@ -24,7 +24,7 @@ We plan to complete the work on Friday the 20th of May and so will continue work |
|
|
|
|
|
We started by stripping the robot of all the gear from the sumo wrestling tournament, and rebuilt it to the base ExpressBot. Then we attached the tiny orange pointer in the front, to use for measuring movement precision as seen in Figure 1.
|
|
We started by stripping the robot of all the gear from the sumo wrestling tournament, and rebuilt it to the base ExpressBot. Then we attached the tiny orange pointer in the front, to use for measuring movement precision as seen in Figure 1.
|
|
|
|
|
|
![rebuilt robot build](https://gitlab.au.dk/LEGO/lego-kode/blob/master/week13/img/rebuild_robot_build.PNG)
|
|
![rebuilt robot build](https://gitlab.au.dk/LEGO/lego-kode/raw/master/week13/img/rebuild_robot_build.PNG)
|
|
|
|
|
|
*Figure 1: Rebuilt robot for precise tracking during the following exercises.*
|
|
*Figure 1: Rebuilt robot for precise tracking during the following exercises.*
|
|
|
|
|
... | @@ -32,13 +32,13 @@ We started by stripping the robot of all the gear from the sumo wrestling tourna |
... | @@ -32,13 +32,13 @@ We started by stripping the robot of all the gear from the sumo wrestling tourna |
|
|
|
|
|
We ran the **_PilotSquare.java_** [5] on the NXT that would cause the robot to drive in a simple square using the *DifferentialPilot*, by starting the robot on the 0.5 cm divisioned piece of paper, and positioning it such that the pointer was at the center, as seen in Figure 2.
|
|
We ran the **_PilotSquare.java_** [5] on the NXT that would cause the robot to drive in a simple square using the *DifferentialPilot*, by starting the robot on the 0.5 cm divisioned piece of paper, and positioning it such that the pointer was at the center, as seen in Figure 2.
|
|
|
|
|
|
![Robot on precision paper](https://gitlab.au.dk/LEGO/lego-kode/blob/master/week13/img/IMG_2378.JPG)
|
|
![Robot on precision paper](https://gitlab.au.dk/LEGO/lego-kode/raw/master/week13/img/IMG_2378.JPG)
|
|
|
|
|
|
*Figure 2: Robot placed on paper prior to PilotSquare run*
|
|
*Figure 2: Robot placed on paper prior to PilotSquare run*
|
|
|
|
|
|
Our initial run failed miserably because we had positioned the orange pointer too low so it was scraping along the table and interrupting the robot’s movements. We repositioned it as seen in Figure 3.a, which made it a bit harder to position the robot precisely as seen in Figure 3.b.
|
|
Our initial run failed miserably because we had positioned the orange pointer too low so it was scraping along the table and interrupting the robot’s movements. We repositioned it as seen in Figure 3.a, which made it a bit harder to position the robot precisely as seen in Figure 3.b.
|
|
|
|
|
|
![Changed position of orange pointer](https://gitlab.au.dk/LEGO/lego-kode/blob/master/week13/img/orange_pointer_reposition.PNG)
|
|
![Changed position of orange pointer](https://gitlab.au.dk/LEGO/lego-kode/raw/master/week13/img/orange_pointer_reposition.PNG)
|
|
|
|
|
|
*Figure 3: Reposition of the orange pointer and the effect on start position placement*
|
|
*Figure 3: Reposition of the orange pointer and the effect on start position placement*
|
|
|
|
|
... | @@ -52,7 +52,7 @@ We did another fourth and fifth run and saw that the robot moved to the same fin |
... | @@ -52,7 +52,7 @@ We did another fourth and fifth run and saw that the robot moved to the same fin |
|
|
|
|
|
IDATODO: INDARBEJD I OVENSTÅENDE
|
|
IDATODO: INDARBEJD I OVENSTÅENDE
|
|
|
|
|
|
![Screenshots of pose provider’s info on PilotSquare before calibration](https://gitlab.au.dk/LEGO/lego-kode/blob/master/week13/img/square.PNG)
|
|
![Screenshots of pose provider’s info on PilotSquare before calibration](https://gitlab.au.dk/LEGO/lego-kode/raw/master/week13/img/square.PNG)
|
|
|
|
|
|
*Figure TODO: Screenshots of the end location info computed by the OdometryPoseProvider on four runs of PilotSquare before calibration. The values shown on the screenshot are differences on the x-axis (Pose x) and the y-axis (Pose y), and the difference in angle (Pose v). The average size of the deviation is 0.059 on the x-axis, 0.061 on the y-axis, and 0.247 on the angle.*
|
|
*Figure TODO: Screenshots of the end location info computed by the OdometryPoseProvider on four runs of PilotSquare before calibration. The values shown on the screenshot are differences on the x-axis (Pose x) and the y-axis (Pose y), and the difference in angle (Pose v). The average size of the deviation is 0.059 on the x-axis, 0.061 on the y-axis, and 0.247 on the angle.*
|
|
|
|
|
... | @@ -111,7 +111,7 @@ We changed *leftWheelDiameter* back to 5.6 and ran the program again. This time |
... | @@ -111,7 +111,7 @@ We changed *leftWheelDiameter* back to 5.6 and ran the program again. This time |
|
|
|
|
|
Despite basing our decisions on visual observations, we also noted the *OdometryPoseProvider*’s calculated end positions. These are shown in Figure TODO below. The deviations calculated by the *OdometryPoseProvider* are a lot smaller than the ones we observed. We weigh our visual observations higher than these, as the *OdometryPoseProvider* only reports values calculated based on tacho count and might miss some physical influences. Additionally, the deviations in the values reported by the *OdometryPoseProvider* are so small that it is hard to judge whether there are any improvements, which we have seen was indeed very feasible using our visual judgements.
|
|
Despite basing our decisions on visual observations, we also noted the *OdometryPoseProvider*’s calculated end positions. These are shown in Figure TODO below. The deviations calculated by the *OdometryPoseProvider* are a lot smaller than the ones we observed. We weigh our visual observations higher than these, as the *OdometryPoseProvider* only reports values calculated based on tacho count and might miss some physical influences. Additionally, the deviations in the values reported by the *OdometryPoseProvider* are so small that it is hard to judge whether there are any improvements, which we have seen was indeed very feasible using our visual judgements.
|
|
|
|
|
|
![Screenshots of pose provider’s info on WheelCalibration](https://gitlab.au.dk/LEGO/lego-kode/blob/master/week13/img/wheel_calibration.PNG)
|
|
![Screenshots of pose provider’s info on WheelCalibration](https://gitlab.au.dk/LEGO/lego-kode/raw/master/week13/img/wheel_calibration.PNG)
|
|
|
|
|
|
*Figure TODO: Screenshots of the end location info computed by the OdometryPoseProvider on runs 2-5 of WheelCalibration.*
|
|
*Figure TODO: Screenshots of the end location info computed by the OdometryPoseProvider on runs 2-5 of WheelCalibration.*
|
|
|
|
|
... | @@ -129,11 +129,11 @@ We wrote a program, **_trackCalibration.java_** [7], to calibrate the track widt |
... | @@ -129,11 +129,11 @@ We wrote a program, **_trackCalibration.java_** [7], to calibrate the track widt |
|
|
|
|
|
We placed the robot on the paper track, positioning the wheels on the same line and the orange pointer on another line perpendicular to the line that the wheels were placed on, as shown in Figure 4.
|
|
We placed the robot on the paper track, positioning the wheels on the same line and the orange pointer on another line perpendicular to the line that the wheels were placed on, as shown in Figure 4.
|
|
|
|
|
|
![Position before track calibration](https://gitlab.au.dk/LEGO/lego-kode/blob/master/week13/img/IMG_2399.JPG)
|
|
![Position before track calibration](https://gitlab.au.dk/LEGO/lego-kode/raw/master/week13/img/IMG_2399.JPG)
|
|
|
|
|
|
*Figure 4: Position of robot before running trackCalibration program.*
|
|
*Figure 4: Position of robot before running trackCalibration program.*
|
|
|
|
|
|
We then ran the program and found it to miraculously rotate a perfect 180 degrees (judging by eye) with our measured 16.2 cm set as the track width. The *OdometryPoseProvider* reported an angle of -179,9012 degrees, confirming our observation (see https://gitlab.au.dk/LEGO/lego-kode/blob/master/week13/img/trackcal.JPG). As this by far lived up to the precision obtained during our wheel calibration, we did not try to do any calibration on the track width.
|
|
We then ran the program and found it to miraculously rotate a perfect 180 degrees (judging by eye) with our measured 16.2 cm set as the track width. The *OdometryPoseProvider* reported an angle of -179,9012 degrees, confirming our observation (see [the screenshots](https://gitlab.au.dk/LEGO/lego-kode/raw/master/week13/img/trackcal.JPG)). As this by far lived up to the precision obtained during our wheel calibration, we did not try to do any calibration on the track width.
|
|
|
|
|
|
[Har valgt at udelade en video af track-caliebration, fordi videoen virkelig er dårlig! /Camilla
|
|
[Har valgt at udelade en video af track-caliebration, fordi videoen virkelig er dårlig! /Camilla
|
|
|
|
|
... | @@ -149,13 +149,13 @@ However, on the GUI display, the *OdometryPoseProvider* showed that it believed |
... | @@ -149,13 +149,13 @@ However, on the GUI display, the *OdometryPoseProvider* showed that it believed |
|
|
|
|
|
We ran *PilotSquare* a total of five times. The *OdometryPoseProvider* provided end coordinates deviating by an average of 0.057 cm on its x-axis and 0.054 cm on its y-axis. Thus, we see no remarkable improvement compared to the pre-calibration runs (0.059 on the x-axis and 0.061 on the y-axis) - considering that we only performed five runs, the small difference may very well be due to non-systematic errors and variations. The average deviation of the angle, 0.469, is nearly twice that obtained before the calibration, but the magnitude of these deviations is so small that they could still be random.
|
|
We ran *PilotSquare* a total of five times. The *OdometryPoseProvider* provided end coordinates deviating by an average of 0.057 cm on its x-axis and 0.054 cm on its y-axis. Thus, we see no remarkable improvement compared to the pre-calibration runs (0.059 on the x-axis and 0.061 on the y-axis) - considering that we only performed five runs, the small difference may very well be due to non-systematic errors and variations. The average deviation of the angle, 0.469, is nearly twice that obtained before the calibration, but the magnitude of these deviations is so small that they could still be random.
|
|
|
|
|
|
![Screenshots of the OdometryPoseProvider’s info on PilotSquare after calibration](https://gitlab.au.dk/LEGO/lego-kode/blob/master/week13/img/calibrated_square.PNG)
|
|
![Screenshots of the OdometryPoseProvider’s info on PilotSquare after calibration](https://gitlab.au.dk/LEGO/lego-kode/raw/master/week13/img/calibrated_square.PNG)
|
|
|
|
|
|
*Figure TODO: Screenshots of the end location info computed by the OdometryPoseProvider on four runs of PilotSquare **after** calibration. The average size of the deviation is 0.057 on the x-axis, 0.054 on the y-axis, and 0.469 on the angle.*
|
|
*Figure TODO: Screenshots of the end location info computed by the OdometryPoseProvider on four runs of PilotSquare **after** calibration. The average size of the deviation is 0.057 on the x-axis, 0.054 on the y-axis, and 0.469 on the angle.*
|
|
|
|
|
|
During the five runs, we found our ending position to be randomly distributed around a point that was not exactly our origin point, but around 0.5 cm away from it - again, judging by eye. Plotting the readings shown in Figure TODO above, we obtain a pattern that supports this observation - see Figure TODO below.
|
|
During the five runs, we found our ending position to be randomly distributed around a point that was not exactly our origin point, but around 0.5 cm away from it - again, judging by eye. Plotting the readings shown in Figure TODO above, we obtain a pattern that supports this observation - see Figure TODO below.
|
|
|
|
|
|
![Plotting the OdometryPoseProvider’s info on PilotSquare after calibration](https://gitlab.au.dk/LEGO/lego-kode/blob/master/week13/img/calibratedsquare_ends.PNG)
|
|
![Plotting the OdometryPoseProvider’s info on PilotSquare after calibration](https://gitlab.au.dk/LEGO/lego-kode/raw/master/week13/img/calibratedsquare_ends.PNG)
|
|
|
|
|
|
*Figure TODO: Plot of the OdometryPoseProvider’s readings.*
|
|
*Figure TODO: Plot of the OdometryPoseProvider’s readings.*
|
|
|
|
|
... | @@ -203,11 +203,11 @@ We first ran *wheelCalibration* that drives 50 cm forward, repeating it 5 times. |
... | @@ -203,11 +203,11 @@ We first ran *wheelCalibration* that drives 50 cm forward, repeating it 5 times. |
|
|
|
|
|
[Note: All angles too far over 180]
|
|
[Note: All angles too far over 180]
|
|
|
|
|
|
![Screenshots of pose providers info on WheelCalibration after calibration](https://gitlab.au.dk/LEGO/lego-kode/blob/master/week13/img/calibrated_line.PNG)
|
|
![Screenshots of pose providers info on WheelCalibration after calibration](https://gitlab.au.dk/LEGO/lego-kode/raw/master/week13/img/calibrated_line.PNG)
|
|
|
|
|
|
*Figure TODO*: [blabla]
|
|
*Figure TODO*: [blabla]
|
|
|
|
|
|
![Screenshots of pose providers info on TrackCalibration after calibration](https://gitlab.au.dk/LEGO/lego-kode/blob/master/week13/img/calibrated_180.PNG)
|
|
![Screenshots of pose providers info on TrackCalibration after calibration](https://gitlab.au.dk/LEGO/lego-kode/raw/master/week13/img/calibrated_180.PNG)
|
|
|
|
|
|
*Figure TODO*: [blabla]
|
|
*Figure TODO*: [blabla]
|
|
|
|
|
... | @@ -293,7 +293,7 @@ TODO: Kort konklusion på, hvordan det, vi har lært her, kan bruges i Lesson 11 |
... | @@ -293,7 +293,7 @@ TODO: Kort konklusion på, hvordan det, vi har lært her, kan bruges i Lesson 11 |
|
|
|
|
|
[6] Our program for wheel calibration, [WheelCalibration.java](https://gitlab.au.dk/LEGO/lego-kode/blob/master/src/Lesson10programs/NXT/WheelCalibration.java)
|
|
[6] Our program for wheel calibration, [WheelCalibration.java](https://gitlab.au.dk/LEGO/lego-kode/blob/master/src/Lesson10programs/NXT/WheelCalibration.java)
|
|
|
|
|
|
[7] Our program for track width calibration, [TrackCalibration.java]([https://gitlab.au.dk/LEGO/lego-kode/blob/master/src/Lesson10programs/NXT/TrackCalibration.java](https://gitlab.au.dk/LEGO/lego-kode/blob/master/src/Lesson10programs/NXT/TrackCalibration.java))
|
|
[7] Our program for track width calibration, [TrackCalibration.java]([https://gitlab.au.dk/LEGO/lego-kode/](https://gitlab.au.dk/LEGO/lego-kode/blob/master/src/Lesson10programs/NXT/TrackCalibration.java)[blob](https://gitlab.au.dk/LEGO/lego-kode/blob/master/src/Lesson10programs/NXT/TrackCalibration.java)[/master/src/Lesson10programs/NXT/TrackCalibration.java](https://gitlab.au.dk/LEGO/lego-kode/blob/master/src/Lesson10programs/NXT/TrackCalibration.java))
|
|
|
|
|
|
[TODO: fix nr. når vi er færdige]
|
|
[TODO: fix nr. når vi er færdige]
|
|
|
|
|
... | | ... | |