activated
Duckietown
Home
build details

Show: section status errors & todos local changes recent changes last change in-page changes feedback controls

Camera calibration

Modified 2018-06-24 by Andrea Censi

This camera calibration procedure is outdated. See Unit A-16 - Camera calibration and validation for the updated procedure.

You can see the camera image on the laptop. The procedure is documented in Unit A-13 - RC+camera remotely.

You have all the repositories cloned properly and you have your environment variables set properly.

Calibration for the robot camera.

Extrinsic calibration

Modified 2018-06-22 by Andrea Censi

Setup

Modified 2018-06-22 by Andrea Censi

Arrange the Duckiebot and checkerboard according to Figure 17.10. Note that the axis of the wheels should be aligned with the y-axis (Figure 17.10).

Figure 17.12 shows a view of the calibration checkerboard from the Duckiebot. To ensure proper calibration there should be no clutter in the background and two A4 papers should be aligned next to each other.

Calibration procedure

Modified 2018-06-22 by Andrea Censi

Log in into your robot using SSH and launch the camera:

duckiebot $ cd duckietown root
duckiebot $ source environment.sh
duckiebot $ roslaunch duckietown camera.launch veh:=robot name raw:=true

Run the ground_projection_node.py node on your laptop:

laptop $ cd duckietown root
laptop $ source environment.sh
laptop $ source set_ros_master.sh robot name
laptop $ roslaunch ground_projection ground_projection.launch  veh:=robot name local:=true

Check that everything is working properly. In a new terminal (with environment sourced and ros_master set to point to your robot as above)

laptop $ rostopic list

You should see new ros topics:

/robot name/camera_node/camera_info
/robot name/camera_node/framerate_high_switch
/robot name/camera_node/image/compressed
/robot name/camera_node/image/raw
/robot name/camera_node/raw_camera_info

The ground_projection node has two services. They are not used during operation. They just provide a command line interface to trigger the extrinsic calibration (and for debugging).

laptop $ rosservice list

You should see something like this:

...
/robot name/ground_projection/estimate_homography
/robot name/ground_projection/get_ground_coordinate
...

If you want to check whether your camera output is similar to the one at the Figure 17.12 you can start rqt_image_view:

laptop $ rosrun rqt_image_view rqt_image_view

In the rqt_image_view interface, click on the drop-down list and choose the image topic:

/robot name/camera_node/image/compressed

Now you can estimate the homography by executing the following command (in a new terminal):

laptop $ rosservice call /robot name/ground_projection/estimate_homography

This will do the extrinsic calibration and automatically save the file to your laptop:

duckiefleet root/calibrations/camera_extrinsic/robot name.yaml

As before, add this file to your local Git repository on your laptop, push the changes to your branch and do a pull request to master. Finally, you will want to update the local repository on your Duckiebot.

Because of mathjax bug

No questions found. You can ask a question on the website.