ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

RGBDSLAM customization

asked 2016-02-11 07:52:21 -0600

jacksonkr_ gravatar image

I have RGBDSLAM installed on Ubuntu 14.04 via ROS Indigo (virtualBox via osx el captian). I have everything working well and I'd like to start adding custom functionality. I have a lot of experience with coding but I don't have much experience with ROS or RGBDSLAM. How can I add custom functionality to RGBDSLAM?

I would like to accomplish:

Can anyone point me in the right direction to get started?

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2016-02-16 09:32:40 -0600

updated 2016-02-16 09:35:51 -0600

In general, decoupling and modularization is one of the main ideas of ROS. Therefore for most things you will want to create your own nodes that subscribe to the topics advertised by rgbdslam (while it is running, you can check them out in rqt_graph or via rosnode info <name-of-rgbdslam-node>). You can also call rgbdslam's services from your node, e.g., to make it send out data or save the octomap. See rosservice list and rgbdslam's readme.

If you need other functionality or data, you might implement another service call or topic in rgbdslam and process it in an external node. As an example, you might have a look at the feature-msg-output branch on github, where I implemented sending out of the extracted features.

For processing the clouds as a map, you could subscribe to the openni driver and the /tf frames from rgbdslam, assemble the clouds according to the received transformation and then run the pcl code on it.

Sending data to other machines can be done by ROS (more or less) out-of-the-box.

If you want to work on pointclouds within rgbdslam, probably the best place would be to call your code from the end of GraphManager::optimizeGraphImpl. Your code will then run after graph optimization, i.e., when the refined trajectory estimation has taken place. Note that also in this case, you will need to merge the individual clouds. Check out GraphManager::saveAllClouds for an example of how to do it.

edit flag offensive delete link more

Question Tools

1 follower


Asked: 2016-02-11 07:52:21 -0600

Seen: 207 times

Last updated: Feb 16 '16