Ask Your Question
1

Astra Pro registered point cloud

asked 2018-12-07 06:49:28 -0500

StevenCoral gravatar image

Hi all. I am using Ubuntu 16.04 with ROS kinetic. Fresh install with upgrades for both.

I have purchased an Astra Pro unit (unknowingly that it has completely separate RGB and depth units inside.... its a shame they don't tell that before you buy one).

I have installed their driver as per instructed, with udev rules and everything. When I launch the astrapro.launch file I can see the depth point cloud and depth image in Rviz. The Astra driver does not publish a color image but I am able to watch it through the usb_cam node so it is operational. The thing is, that the astra driver has a "/camera/depth_registered/points" topic, but echoing it results in nothing. The terminal running the launch pops up the message:

[ INFO] [1544185697.502299836]: Starting depth stream. [ INFO] [1544185697.698366710]: camera calibration URL: file:///home/steve/catkin_ws/src/camera_info/depth_Astra_Orbbec.yaml

I did make a calibration file for both the rgb and the depth, put them in the default ${ROS_HOME}/camera_info/${NAME.yaml}, and added the paths to the astrapro launch file.

I have tried various launch argument combinations and solutions from the internet but with no avail. Orbbec did not answer mails as well.

Am I missing something here? Do I need a third node to match the RGB and D? All I want is to be able to view a registered pointcloud in Rviz using the Astra Pro, even if a workaround is needed. Don't care about synchronization delay.

Hope I'm not the only one having this exact problem. Thank you all in advance.

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
1

answered 2018-12-08 08:59:02 -0500

StevenCoral gravatar image

updated 2018-12-08 12:31:00 -0500

Sorry to be answering my own question but I found the solution, and in the absence of other instructions I want to make it available to other users ever encountering the same problem.

The Astra Pro launch file loads the Astra driver (publishing the depth and IR images only). It uses a third party node called rgbd_launch found here along with partial reference info. This node does most of the real job - listening to depth and RGB images to create point clouds and registered point clouds.

In order to do so, everything has to be aligned. In the astrapro launch file, the nodes are published under the /camera namespace. The default namespaces for the depth, IR and RGB publications are as depicted, and are the same for both the astra driver and rgbd_launch nodes. What needs to be done (in addition to the short instructions given at the orbbec ros astra wrapper git ) is as follows:

  1. Create both an RGB and depth calibration files because rgbd_launch has to rectify the data before registering. Default location for these files, so I've heard, is in the ${ROS_HOME}/camera_info/${NAME.yaml}, so I actually created and empty package named camera_info and put the files in the root directory (so that I could use $(find camera_info) in the launch file. In these files, see to it that the name of the cameras are: depth_Astra_Orbbec / rgb_Astra_Orbbec respectively, I don't remember why anymore but I got an error about it from one of the launched nodes / nodelets.

  2. Launch a node that would publish an image topic named /rgb/image_raw and the camera calibration info (taken from the calibration files) into /rgb/camera_info, both have to be in the same namespace where the rgbd_launch node is running (because it's listening to it). The images must be raw, not rectified. Also, the frame_id in the header must match the one used in the camera driver. In our case, the usb_camera node publishes the topics as /camera/rgb/image_raw and /camera/rgb/camera_info ("camera" because of the namespace they are all running at, and "rgb" because thats what we chose for the rgb image namespace). The frame id is the default one, "camera_rgb_optical_frame".

  3. Make sure the following parameters for rgbd_launch are true: "rgb_processing", "depth_processing", "sw_registered_processing" and "depth_registered_processing". Also make sure that "hw_registered_processing" is false, I received errors stating that the device is not calibrated. Perhaps I'll dig into it, maybe it is possible to upload a calibration file to the device flash? maybe this is unsupported? who knows. Also not sure how the pipeline would work if it did. BTW, other processing flags in rgbd_launch seems to have little to no connection with the publishing registered pointclouds.

This creates a namespace where /depth/camera_info, /depth/image_raw, /rgb/camera_info, and /rgb/image_raw are all published together along with a running rgbd_launch node, listening to them and publishing (among others) the /detph/points and /depth_registered/points topics.

EDIT: This modified-default launch file should give an example of ... (more)

edit flag offensive delete link more

Comments

No need to apologise for answering your own question: it's perfectly ok to do that.

gvdhoorn gravatar imagegvdhoorn ( 2018-12-08 10:30:08 -0500 )edit

I'm trying to attach my launch file as a reference but the xml syntax mixes with the forum's..... advice any1?

Paste the launch file in your answer, select all lines of xml and press the Preformatted Text button (the one with 101010 on it). Or press ctrl+k. Done.

gvdhoorn gravatar imagegvdhoorn ( 2018-12-08 10:30:59 -0500 )edit

One time I did that and someone stated that I should write a comment instead... not really enough space for that. Thanks for the help, I was trying the quote thing and it didn't work. All done.

StevenCoral gravatar imageStevenCoral ( 2018-12-08 12:32:18 -0500 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

3 followers

Stats

Asked: 2018-12-07 06:49:28 -0500

Seen: 386 times

Last updated: Dec 08 '18