[Documentation] [TitleIndex] [WordIndex

Only released in EOL distros:  

robot_calibration: camera_offsetter

Package Summary

Provides a tool to make small changes to the location of a monocular camera or stereocamera attached to the robot. This package is still an unstable and experimental package. The interface is a work in progress that will be changing.

robot_calibration: camera_offsetter

Package Summary

Provides a tool to make small changes to the location of a monocular camera or stereocamera attached to the robot. This package is still an unstable and experimental package. The interface is a work in progress that will be changing.

robot_calibration: camera_offsetter

Package Summary

Provides a tool to make small changes to the location of a monocular camera or stereocamera attached to the robot. This package is still an unstable and experimental package. The interface is a work in progress that will be changing.

Stability

This is still an experimental application that has not been reviewed yet. Its interface quite possibly will be changing.

Overview

The package creates a virtual camera, allows the user to move it and republishes raw sensor (stereo) data in the virtual camera. You can use it to fix calibration problems locally by eliminating obvious disparities between the 3D laser or robot data and stereo/image data.

offsetter_high_level.png

The package contains 3 main nodes:

Limitations

The calibration is done manually and is only as good as you hand tune it. Also keep in mind that a perfect calibration in one part of the workspace will not necessarily result in a perfect calibration in another part of the workspace.

It is possible that the calibration problem is caused by something else, so keep your eyes open.

Creating a Virtual Camera (Node API)

mono_offsetter

Offset a monocular camera, such as the PR2's Hi-Res Prosilica cam or its forearm cameras

Subscribed Topics

virtual_pose (geometry_msgs/Pose) virtual_twist (geometry_msgs/Twist) [camera]/camera_info (sensor_msgs/CameraInfo) [camera]/image_raw,image_rect,image_rect_color (sensor_msgs/Image)

Published Topics

[camera]_offset/camera_info (sensor_msgs/CameraInfo) [camera]_offset/image_raw,image_rect,image_rect_color (sensor_msgs/Image)

Parameters

~config_file (string, default: False) ~use_raw (bool, default: False) ~use_rect (bool, default: False) ~use_rect_color (bool, default: False)

Example

Suppose that you want to offset a camera in the /prosilica namespace. You could use the following launch file:

<launch>
  <node type="mono_offsetter" pkg="camera_offsetter" name="prosilica_offsetter">
    <remap from="camera" to="/prosilica" />
    <param name="config_file" type="string" value="[HOME_DIR]/prosilica.offset" />
    <param name="use_rect_color" type="bool" value="True" />
  </node>
</launch>

This launches a camera_offsetter that subscribes to /prosilica/image_rect_color and /prosilica/camera_info. It copies the data from these messages, appends _offset to the frame_ids, and republishes on prosilica_offset/image_rect_color and /prosilica/camera_info.

stereo_offsetter

Offset a stereo camera

Subscribed Topics

virtual_pose (geometry_msgs/Pose) virtual_twist (geometry_msgs/Twist) baseline_factor (std_msgs/Float64) [stereo]/left/camera_info, [stereo]/right/camera_info (sensor_msgs/CameraInfo) [stereo]/left/image_raw, [stereo]/right/image_raw (sensor_msgs/Image)

Published Topics

[stereo]_offset/left/camera_info, [stereo]_offset/right/camera_info (sensor_msgs/CameraInfo) [stereo]_offset/left/image_raw, [stereo]_offset/right/image_raw (sensor_msgs/Image)

Parameters

~config_file (string, default: False)

Suppose that you want to offset a stereocamera in the /narrow_stereo namespace. You could use the following launch file:

<launch>
  <node type="stereo_offsetter" pkg="camera_offsetter" name="stereo_offsetter">
    <remap from="stereo" to="/narrow_stereo" />
    <param name="config_file" type="string" value="[HOME_DIR]/narrow.offset" />
  </node>

  <group ns="narrow_stereo_offset">
    <node type="stereo_image_proc" name="proc" pkg="stereo_image_proc"/>
  </group>
</launch>

This will create a virtual stereocamera in the /narrow_stereo_offset namespace. This file also launches the stereo_image_proc node on the offset camera.

Use the keyboard to move a virtual camera (Node API)

keyboard_interface

Sends incremental pose offsets as twists. Can also send baseline updates for virtual stereocameras

Published Topics

virtual_pose (geometry_msgs/Pose) virtual_twist (geometry_msgs/Twist) baseline_factor (std_msgs/Float64)

Command Line Usage

Example

To start the keyboard interface, all you need to do is start the node in the same namespace as the offsetter. If the offsetter is in the global namespace, then a simple rosrun is sufficient:

rosrun camera_offsetter keyboard_interface


2019-12-14 12:28