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

Revision history [back]

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.

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.

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.