13112009
Attendees: Jesper Jakobsen, Mads Hansen Lund and Michael Nygaard Pedersen
Work time: 9.15 - 13.35
Goal
The goal is to investigate different types of navigation e.g. tacho counter and a digital compass.
The robot construction is based on “Maximum Lego NXTBuilding Robots with Java Brains” Ref1 to get a horizontal placement of the NXT. The horizontal placement of the NXT is done to satisfy a horizontal placement of the compass sensor. The specific requirements from “HiTechnic’s Compass Sensor manual” will be satisfied (see the requirements below).
The specific requirements from HiTechnic’s Compass Sensor Manual:
· The compass has to be placed at least 10 cm from the NXT.
· The compass has to be placed at least 15 cm from the motors.
· Calibration for the compass.
o Turn at least 360 degrees.
o The circular spin should not be done too fast (use at least 2 seconds for a rotation)
Sub goals
The NXT robot should be able to navigate in a Cartesian coordinate system and reproduce the same movement several times. There is several physical aspects to take in account, because the simple navigator refers to physical size, which might vary as a function of the robot weight and construction quality.
Plan
· Implement a simple navigator based on readings from the tacho counters, which is placed in a standard NXT motor
· Investigate the possibilities to implement an ultra sonic sensor to avoid collision during a navigation sequence.
· Implement and test the compass functionality by implementing the compass class and compare the performance with the simple tacho navigator.
Results
Description of experiment
Four different investigations where preformed during this lab session.
Tacho counter navigation
A differential driven NXT robot was build with respect to the building instructions given on page 293 to 296 in Ref2 with a board marker mounted to gather information on the movements of the robot.
Using the SimpleNavigator class of lejos.robotics.navigation, the robot was programmed to follow the pattern shown below;
robot.goTo(50,0);
robot.goTo(25,25);
robot.goTo(25,-12.5f);
robot.goTo(0,0);
This pattern was repeated six times to investigate the accuracy of the goTo method of the SimpleNavigator class (i.e. does the robot return to its starting position?).
The results are presented in the picture below;
Figure 1 - Tacho navigator pattern
Clearly, the robot does not return to its original position. Each repetition of the pattern is shifted approximately 10 degrees with respect to the previous run through. The distances driven are the same, but the robot seems to loose track of its position when doing turns, i.e. the robot does not rotate as much in reality as it “thinks” it does, which then gives rice to the 10 degree (±2) shifting in track orientation.
This 10 degree shifting was attempted minimized by changing the value (in software) of the wheel diameter as well as the value of the track width. Unfortunately no radical improvement was observed. The surface also changed the result.
Tacho counter combined collision detection (investigation)
The tacho counter functionality can be thought of as the most primitive layer in a behavior model, if the purpose of the system is to navigate without any caretaking to surroundings. A simple two layer suppression strategy can be added, if the robot should be able to avoid collision (Figure 2).
Figure 2 - Suppression strategy
When the navigation drive is suppressed it must begin calculating how the route changes and continue to log coordinates so it can drive to the preferred set point (if possible).
The center of the circular movement can be calculated by the equation beneath.
The speed can be calculated by the following differential equation (presented in matrix form) and a numerical integrator can then approximate the new x and y coordinates (Ref8).
This approach has not been fully implemented because of the limited time.
Digital compass calibration
The earth differs in its magnetic field depending on the placement. The compass sensor has to be calibrated to compensate for local magnetic field. A recalibration is only needed when the robot is tested on a new localization. The manual and “Maximum Lego NXTBuilding Robots with Java Brains” does not mention a specific requirement for the how much the localization has to differ for a needed recalibration.
The calibration code is more or less copied from “Maximum Lego NXTBuilding Robots with Java Brains” with small modified correction for the leJos version 0.85.
The test run of calibration was not succeeded since the software didn’t stop after its predefined rotation and instead run into an unlimited loop.
Modification from “Maximum Lego NXTBuilding Robots with Java Brains” to leJos version 0.85:
Added
import lejos.nxt.addon.*;
Chanced from import lejos.navigation.*; to import lejos.robotics.navigation.*;
Added cmps as a extra parameter
CompassPilot hector = new CompassPilot(cmps, 5.6F, 16.0F, Motor.B, Motor.C, true);
Handheld compass
The handheld compass code is more or less copied from “Maximum Lego NXTBuilding Robots with Java Brains” with small modified correction for the leJos version 0.85.
The test run of the handheld compass code showed that the compass sensor is very sensitive to Electromagnetic emission. It can be concluded that robot does not have the optimized environment to succeed with the today’s lab session.
Modification from “Maximum Lego NXTBuilding Robots with Java Brains” to leJos version 0.85:
Added
import lejos.nxt.addon.*;
Digital compass navigation
The compass navigation code is more or less copied from “Maximum Lego NXTBuilding Robots with Java Brains” with small modified correction for the leJos version 0.85.
The test run of the compass navigation didn’t succeed; this was already expected from the handheld test run.
Modification from “Maximum Lego NXTBuilding Robots with Java Brains” to leJos version 0.85:
Chanced from SimpleNavigator robot = new CompassNavigator(pilot);
To SimpleNavigator robot = new SimpleNavigator(pilot);
Pictures of Lego model
Figure 3 - Picture of robot
Observations
Problems encountered
Mentioned in the chapters: Digital compass calibration and Digital compass navigation and observed (see videos)
Conclusion
The conclusion can be made by just observing the uploaded videos. The simple navigator worked “ok”, but was not very precise. A performance optimization was not obtained by including the compass functionality, because of either missing calibration or electromagnetic emission.
References
Ref1: Brian Bagnall, Maximum Lego NXTBuilding Robots with Java Brains, Chapter 12, Localization, p.292 - p.296
Ref 2: Brian Bagnall, Maximum Lego NXTBuilding Robots with Java Brains, Chapter 12, Localization, p.285 - p.302
Ref 3: Brian Bagnall, Maximum Lego NXTBuilding Robots with Java Brains, Chapter 12, Localization, p.300
Ref 4: Recorded video of the test run Compass Calibration.
Ref 5: Brian Bagnall, Maximum Lego NXTBuilding Robots with Java Brains, Chapter 12, Localization, p.301
Ref 6: Brian Bagnall, Maximum Lego NXTBuilding Robots with Java Brains, Chapter 12, Localization, p.302
Ref 7: Recorded video of the test run Compass Navigation.
Ref 8: Forward Kinematics for the Khepera Robot - Thomas Hellström
Ingen kommentarer:
Send en kommentar