PA Fiducials slides |

Fiducial Navigation Programming Assignment

Introduction

  • This final programming assignment pulls together what we’ve learned up to now
  • You will practice detecting fiducials and using them to do simple navigation
  • You will have to make sure the camera sees the fiducial and then navigates to it
  • The task seems quite simple but it requires mastery of several aspects of Robotics at once
  • What you learn here will very likely be directly applicable to your projects.
  • Note that this assignment will only be done IRL.

Expected preparation

  • Remember that the Platform and BranBot robots are preconfigured for fiducials where as the turtlebots will need some packages installed.
  • Before tackling the full assignment, experiment with the fiducials IRL interactively
  • You have to write a test program that prints out information of the fiducial it sees
  • You can choose to use OpenCV’s fiducial algorithms by themselves or use the aruco_detect layer
  • Re-read PRR Chapter 2 to refresh your memory of coordinates and tfs/

Additional references and resources

Requirements for the PA

  • Setup
    • Four red blocks in a square with about 2m edges (you can tweak this if you need to)
    • Fiducial taped to each of the blocks, facing inwards
    • Robot in the center of the square
  • roslaunch your package
    • The robot spins in place until it seems one (or more) fiducials
    • It drives slowly up to one, and returns to the center
    • And does it for the other three `

Steps

  1. Study and understand the mapper.py file.
  2. Change the fid_ids parameter of the mapper.py file to match the ids of your fiducials.
  3. Complete the nav_real.py file such that the robot:
    1. rotates in place to scan all the target fiducials; and
    2. moves to each target fiducial in turn.
  4. Complete the nav_sim.py file such that the robot:
    1. rotates in place to scan all the target fiducials; and
    2. moves to each target fiducial in turn.

The Skeleton Code (Real)

  1. bringup (onboard the robot)
  2. roslaunch fiducial_nav fiducials_real.launch (on your vnc)
  3. rosrun rviz rviz (on your vnc. Tune the RViz to visualize what you want.)
  4. rosrun fiducial_nav nav_real.py

What to submit

  • A correctly structured ROS package including
    • Nicely commented python source files
    • Readme how to run it
    • Appropriate launch file
  • Video of your program running
    • IRL
    • Best to put the video on youtube and give the link
    • In your own voice, explain how the code works