Note: Currently this tutorial assumes you are using cob3-3. This tutorial assumes that you have completed the previous tutorials: Prepare Care-O-bot 3 for calibration.
(!) Please ask about problems and questions regarding this tutorial on answers.ros.org. Don't forget to include in your question the link to this page, the versions of your OS & ROS, and also add appropriate tags.

Automatic Camera and Robot Calibration of Care-O-bot 3

Description: This tutorial guides you through the automatic calibration of the cameras and kinematic components of the Care-O-bot 3.

Tutorial Level: ADVANCED

Overview

This tutorial guides you through the automatic calibration of the cameras and kinematic components of the Care-O-bot 3. The calibration procedure is divided into two automated steps:

  1. Camera calibration: The stereo camera system of Care-O-bot is calibrated intrinsically.

  2. Kinematic robot calibration: This step performs extrinsic camera calibration (hand-eye calibration of the stereo camera and kinect) and estimates various kinematic parameters of the robot (position and orientation of arm and torso on the base of Care-O-bot).

Prerequisites

  • roscore is running
  • Care-O-bot bringup software is running.
  • Cameras, head-axis, arm and torso are initialized and working.
  • Calibration pattern is attached to arm.
  • You created a temporary overlay of cob_calibration_data. The calibration results are stored in this unary stack. The overlay should be deleted again after the calibration process.

Automatic camera calibration

All commands should be executed on pc2!

  1. Start the image capture server node:
    roslaunch cob_image_capture capture_stereo.launch
  2. Start arm movements and capturing of samples (in second terminal on pc2):
    roslaunch cob_calibration_executive collect_stereo_data.launch
    Wait until capture is finished...
  3. Stop cob_image_capture server from step 1 with CRTL-C.
  4. Run stereo calibration algorithm:
    roslaunch cob_camera_calibration calibrate_stereo.launch
    The results of stereo calibration are saved automatically in "cob_calibration_data/cob3-3/conf/".
  5. Restart robot software (bringup.launch) to load new baseline and intrinsic calibration before you proceed to the robot calibration step.

Automatic kinematic robot calibration

All commands should be executed on pc2!

  1. Start the data collection server node for robot calibration:
    roslaunch cob_robot_calibration collect_data.launch
  2. Start arm movements and capturing of samples for robot calibration (in second terminal on pc2):
    roslaunch cob_calibration_executive collect_robot_calibration_data.launch
    Wait until capture is finished...
  3. Stop data collection node from step 1 with CRTL-C.
  4. Run calibration algorithm. (Stop bringup to speed up computation, this step takes ~13 minutes on cob3-3-pc2):
    roslaunch cob_robot_calibration run_robot_calibration.launch
  5. Update config file (calibration.urdf.xacro) with new robot calibration:
    roslaunch cob_robot_calibration update_calibration_urdf.launch
  6. (Re)start robot software (bringup.launch).

Final steps

  1. Verify the calibration result with rviz by checking the kinect pointcloud while the arm with checkerboard is in front of the cameras. The point cloud should align with the simulated arm.
  2. Commit the new calibration to git (cob_calibration_data) and push it to github. Create a pull request for ipa320/cob_calibration_data and ask your robot administrator to pull the new calibration to the robot for everybody.
  3. Once the pull request has been accepted and the calibration has been updated on the robot, you can remove your local overlay of cob_calibration_data.
  4. Remove the checkerboard from the arm and reattach the hand. (activate the emergency stop before attaching the schunk hand).

Wiki: cob_calibration/Tutorials/calibration (last edited 2012-08-31 13:59:58 by FelixMessmer)