Reference no: EM132563841
Coursework: Localization and Navigation on the Anki Cozmo Robot
The aim of this assignment is for you to familiarize yourself with the actuation, navigation, and localization of mobile robots. You will demonstrate the use of motion models, path generation, odometry, probabilistics, and the Monte-Carlo localization algorithm.
Learning Outcome 1. Design and construct a robotic system to satisfy a given set of requirements, taking commer- cial and economic considerations into account
Learning Outcome 2. Demonstrate an awareness of the application of specific engineering principles and relevant professional, legal, ethical, environmental and social issues to robotic systems
Learning Outcome 3. Use mathematics to analyse and reason about a robotic system design
Learning Outcome 4. Analyse real world problems and synthesise integrated hardware and software solutions
Learning Outcome 5. Manage a well defined small scale research project
Learning Outcome 6. Apply appropriate transferable skills to document, report, analyse and evaluate a research project
Learning Outcome 7. Select, justify and apply appropriate software engineering processes to robotic systems
Learning Outcome 8. Work and study in a guided independent manner on a well defined research project
Report and assessment
Part 1) Motion Model and Driving
a) Determine and implement the robot's driving motion model parameters based on the standard differential drive model (implement track_speed_to_pose_change function stub in cozmo_interface.py)
i. Experimentally determine the model's wheel distance parameter
b) Experimentally demonstrate the model's accuracy (e.g. by driving a full circle with track speed )
i. Complete the odometry loop in run-cozmo-odometry.py
ii. Demonstrate the accuracy by comparing to robot's physical position after motion
c) Implement track-motion's inverse kinematics (implement velocity_to_track_speed in cozmo_interface.py)
d) Implement a turn-approach-turn maneuver to drive the robot onto a desired target position and orientation (implement target_pose_to_velocity_linear and complete loop in cozmo-run-linear-approach.py). Evaluate the effectiveness of this maneuver.
e) Implement a cubic spline interpolation based maneuver to drive the robot onto a desired target position and orientation (implement target_pose_to_velocity_spline and implement cozmo-run-spline-approach.py analogous to previous maneuver). Evaluate the effectiveness of this maneuver.
Part 2) Integration of Monte-Carlo Localization in Simulation
a) Implement a particle motion update, utilizing the previously developed probabilistic motion model (make use of the Frame2D and Gaussian classes)
b) Implement particle importance weighting, utilizing the sensor model cozmo_sensor_model provided in the file cozmo_sim_world.py, which models cube sensing and cliff sensing.
c) Experimentally determine a suitable number of particles and a suitable number of new, uniform random particle spawns in each iteration
• An integration loop including a re-sampling algorithm and a visualization will be provided
• The file run-mcl-sim.py provides a full template for this part of the coursework with clearly highlighted todo's.
4) Driving Integration: Simulation Robot-go-home competition
a) Write a program on the basis of run-mcl-sim.py that drive the robot onto the designated target on the map while avoiding obstacles (in particular the trench in the middle). You may use planning, but a crude via-point based decision making may be sufficient on this map.
b) Use MCL to determine the current position on the given map (determine best position to represent current particle population)
c) Successfully participate in timed challenge against other students by submitting your competition code on moodle.
• The robot may first have to perform exploratory action to get a good estimate of its position
• Cozmo's cubes are placed on marked positions on map for orientation. Further, odometry and cliff-sensor information may be used.
• The best average time (best two out of three runs) wins. Maximum time is one minute per run.
Attachment:- Localization and Navigation on the Anki Cozmo Robot.rar