Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

image_pipeline: issue with the decimation #27

Open
fabrizioschiano opened this issue Nov 2, 2016 · 0 comments
Open

image_pipeline: issue with the decimation #27

fabrizioschiano opened this issue Nov 2, 2016 · 0 comments
Assignees

Comments

@fabrizioschiano
Copy link

fabrizioschiano commented Nov 2, 2016

Hi everyone,

I am trying to use apriltags with a flea3 USB camera by pointgrey. The resolution of the camera is too big and therefore I need to reduce it via the image_pipeline stack of ROS. I can't reduce it through the official SDK FlyCapture (It should be a known problem of the SDK).

Anyway, I use the image_pipeline to decimate the image via the following launch file

<launch>
	<arg name="qcID" default="5"/>
	<arg name="bond" value="" />

	<node pkg="nodelet" type="nodelet" name="decimator_$(arg qcID)"
	      args="load image_proc/crop_decimate camera_manager_$(arg qcID)">
	  <param name="decimation_x" type="int" value="4" />
	  <param name="decimation_y" type="int" value="4" />

	  <remap from="/camera_$(arg qcID)/image_raw" to="camera/image_raw"/>
	  <remap from="camera/image_info" to="/camera_$(arg qcID)/camera_info"/>

	  <remap from="camera_out/image_raw" to="/camera_$(arg qcID)_dec/image_raw"/>
	  <remap from="camera_out/image_info" to="/camera_$(arg qcID)_dec/camera_info"/>
	</node>

	<node name="drop_cam_$(arg qcID)" pkg="topic_tools" type="drop"
		args="/camera_$(arg qcID)_dec/image_raw/compressed 1 15 /camera_$(arg qcID)_drop/image_raw/compressed" />
	<node name="drop_info_$(arg qcID)" pkg="topic_tools" type="drop"
		args="/camera_$(arg qcID)_dec/camera_info 1 15 /camera_$(arg qcID)_drop/camera_info" />
</launch>

After doing this the pose estimated through the apriltag gets wrong, in the sense that I have a z which is 4 times the real one, and the same goes for x and y.

I can solve that by dividing the size of the marker by 4 in the example.launch file which I use to launch the apriltag ros node, which looks like that:

<launch>
  <node pkg="apriltags_ros" type="apriltag_detector_node" name="apriltag_detector" output="screen">
    <!-- Remap topic required by the node to custom topics -->
    <remap from="image_rect" to="/camera_5_drop/image_raw" /> 
    <remap from="camera_info" to="/camera_5_drop/camera_5_info" />

    <!-- Optional: Subscribe to the compressed stream-->
    <param name="image_transport" type="str" value="compressed" />

    <!-- Select the tag family: 16h5, 25h7, 25h9, 36h9, or 36h11(default) -->
    <param name="tag_family" type="str" value="36h11" />

    <!-- Enable projected optical measurements for more accurate tag transformations -->
    <!-- This exists for backwards compatability and should be left true for new setups -->
    <param name="projected_optics" type="bool" value="true" />

    <!-- Describe the tags -->
    <rosparam param="tag_descriptions">[
      {id: 0, size: 0.0215},
      {id: 1, size: 0.086, frame_id: a_frame},
      {id: 2, size: 0.167,frame_id: a_frame},
      {id: 3, size: 0.167},
      {id: 4, size: 0.167},
      {id: 5, size: 0.167}]
    </rosparam>
  </node>
</launch>

I don't think this is a SOLUTION but just a workaround. Could you please help me to understand this?

I think that the problem has to be found in the binning parameter sent on the camera_info topic. If the apriltags_ros node does not support the camera_info binning parameter , for sure this will not work.

If you look at the camera_info in the case of the original image I have:

rostopic echo -n 1 /camera/camera_info 
header: 
  seq: 29157
  stamp: 
    secs: 1478102548
    nsecs: 328822432
  frame_id: camera
height: 1552
width: 2080
distortion_model: plumb_bob
D: [-0.001312, 0.003408, -0.004684, 0.014525, 0.0]
K: [687.216761, 0.0, 1111.575057, 0.0, 673.787664, 747.109306, 0.0, 0.0, 1.0]
R: [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0]
P: [706.72345, 0.0, 1172.617419, 0.0, 0.0, 713.655701, 732.345523, 0.0, 0.0, 0.0, 1.0, 0.0]
binning_x: 1
binning_y: 1
roi: 
  x_offset: 0
  y_offset: 0
  height: 0
  width: 0
  do_rectify: True

---

While for the decimated image is:

rostopic echo -n 1 /camera_5_dec/camera_info 
header: 
  seq: 29025
  stamp: 
    secs: 1478102543
    nsecs: 931340616
  frame_id: camera
height: 1552
width: 2080
distortion_model: plumb_bob
D: [-0.001312, 0.003408, -0.004684, 0.014525, 0.0]
K: [687.216761, 0.0, 1111.575057, 0.0, 673.787664, 747.109306, 0.0, 0.0, 1.0]
R: [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0]
P: [706.72345, 0.0, 1172.617419, 0.0, 0.0, 713.655701, 732.345523, 0.0, 0.0, 0.0, 1.0, 0.0]
binning_x: 4
binning_y: 4
roi: 
  x_offset: 0
  y_offset: 0
  height: 1552
  width: 2080
  do_rectify: True

---

EDIT: I posted the same on RIVeR-Lab/apriltags_ros#15, probably it is more appropriate. Feel free to close the issue if you need to.
Thanks in advance.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants