0
$\begingroup$

Rosanswers logo

I am able run and record data using the RGBD-6D-SLAM code and the Kinect and would like to now use the recorded 3D "map" of the room(s) for navigation and path planning. What would be the best way to go about this? Ultimately I'd like to have some identified locations in the 3D map "space" that I can have the robot plan a path to and then try to navigate there.

Note: RVIZ and RGBD-6D-SLAM packages are too resource intensive for me to run very well simultaneously (seems to be a common issue based on other comments on this site) and that limits my options for trying to use the navigation and path planning components of rviz in conjunction with the RGBD-6D-SLAM code.

Thanks in advance for your recommendations.

-Scott


Originally posted by Scott on ROS Answers with karma: 693 on 2011-04-12

Post score: 3


Original comments

Comment by Scott on 2011-04-15:
As Felix pointed out below, The UCSB work is an example of projecting the 3D map onto 2D and then doing 2D navigation and planning from there. Very excited for the updates to the RGBD-6D-SLAM package Felix has said they are working on as well . If anyone tries UCSB package, post your tips here!

Comment by Scott on 2011-04-15:
Check out their floor collision map video at http://code.google.com/p/ucsb-ros-pkg/

Comment by Scott on 2011-04-15:
While researching other teams that might be making progress on this front. I came across some work by a team at the University of California, Santa Barbara, that has made some good first steps. They have a ros package as well under ucsb-ros-pkg.

$\endgroup$

3 Answers 3

0
$\begingroup$

Rosanswers logo

Edit1: The new version of rgbdslam is out and available at here at ros.org and on openslam.org

For ground-bound robots, I think most people project 3d-maps to 2d and do navigation and planning in 2d.

Edit2: An octomap of the registered point cloud can be created using experimental octomapping code from the alufr-repository and the following procedure:

  • Edit (a copy of) octomap_server/launch/octomap_mapping.launch such that the mapping from cloud_in goes to /rgbdslam/batch_clouds and the value of frame_id is "openni_camera"
  • Start rgbdslam, capture a scene
  • Roslaunch the adapted file from the first step
  • In rgbdslam select Graph->Send Model
  • rosrun octomap_server octomap_saver <filename.bt>

The parameters in octomap_mapping.launch allow for some fine-tuning of voxel resolution and sensor range. You can use rosrun octovis octovis <filename.bt> to view the octomap.


Originally posted by Felix Endres with karma: 6468 on 2011-04-12

This answer was ACCEPTED on the original site

Post score: 3


Original comments

Comment by Scott on 2011-06-04:
Update from threads below...to get the mapping to work correctly you need to edit the frame_id line in the octomap_mapping.launch to this: (Thanks to Armin, Gavin and Felix for working with us to debug this.)

Comment by Scott on 2011-05-05:
OK this package can be built and run without error along with Octomap, but has anyone (besides Felix) successfully generated an octomap following the instructions? If so, please add a comment with steps you took. If you have tried and have not gotten an octomap to show up, please post that as well.

Comment by Scott on 2011-05-03:
...but it had some dependencies I was not able to resolve. If anyone else had tried this and gotten it to work, please share your notes.

Comment by Felix Endres on 2011-04-27:
Saving registered point clouds is included. Octomaps are not yet. I will include that somewhen. It's easy but I'm quite busy. If you'd like to use it offline, save the clouds "node-wise", then read each pcd file, using octomap::OctomapROS::insertScan for each cloud.

Comment by Scott on 2011-04-27:
Hi Felix, I see you released a new version of rgbdslam on the 18th. Were you able to add in the functionality for the 3D mapping and navigation with this release? -Scott

Comment by magnate on 2013-02-16:
Since, the openni_camera package has been deprecated, what should 'frame_id' be nowadays?

Comment by Felix Endres on 2013-02-17:
I'd guess /camera_link. But as of the latest version (only a couple of days old), you can save the octomaps from the GUI: Graph->Save octomap

Comment by magnate on 2013-02-18:
Is there an RGBDSLAM headless rosservice command for that -- "rosservice call /rgbdslam/ros_ui save_octomap," perhaps?

Comment by magnate on 2013-02-18:
By the way, when I do fun the GUI, use the 'Save Octomap' command, save the file with a *.bt extension, then try to open in it Octovis, I receive: "ERROR: Binary file does not contain an OcTree! First line of OcTree file header does not start with "# Octomap OcTree binary file" ... cont'd ...

Comment by magnate on 2013-02-18:
... cont'd ... even though the top of the .bt file looks like this:

Octomap OcTree file

(feel free to add / change comments, but leave the first line as it is!)

id ColorOcTree size 536112 res 0.05 data

Comment by Felix Endres on 2013-02-18:
Yes, I just added the service call for headless mode. Be careful, I moved around some service calls. The problem with octovis seems to be caused by changing the extension to "bt", when it should be "ot", as is the default setting. You can use "convert_octree" to get a "bt" file from the "ot" file.

$\endgroup$
0
$\begingroup$

Rosanswers logo

You may also want to check out http://www.ros.org/wiki/3d_navigation .


Originally posted by bhaskara with karma: 1479 on 2011-05-17

This answer was NOT ACCEPTED on the original site

Post score: 2

$\endgroup$
0
$\begingroup$

Rosanswers logo

I have not been able to generate an octomap by following the instructions. I get stuck when attempting to run:

rosrun octomap_server octomap_saver map.bt

getting the error:

`[ WARN] [1305895466.866409176]: Request to /octomap_binary failed; trying again...`

Thanks in advance,

Gavin


Originally posted by Gavin with karma: 1 on 2011-05-20

This answer was NOT ACCEPTED on the original site

Post score: 1


Original comments

Comment by Scott on 2011-06-04:
Yes, HUGE thanks from me as well to you all. This is working great now. Totally amazing work here. Best Regards.

Comment by Gavin on 2011-05-31:
Thanks for the help guys, all working with your change Felix.

Comment by Felix Endres on 2011-05-31:
So the problem seems to be that I forgot to mention that you need to edit the frame_id line in the octomap_mapping.launch to this: . Sorry about that

Comment by AHornung on 2011-05-31:
I'm already back. I just posted a reply at http://answers.ros.org/question/932/how-to-get-octomap-to-store-data-sent-by-rgbdslam?answer=1811#1811

Comment by Scott on 2011-05-31:
Unfortunately, Armin is traveling for next few weeks, however if some bright developer can examine the OctomapServer.cpp file and share how we can verify that the incoming data is being stored prior to saving it out as a map, we might be able to solve this. Any help would be greatly appreciated.

Comment by Scott on 2011-05-31:
The OctomapServer.cpp listens for the incoming stream with the following line of code. m_pointCloudSub = new message_filters::Subscriber<sensor_msgs::PointCloud2> (m_nh, "cloud_in", 5); I have contacted the stack author, Armin Hornung, to ask how we can verify the code is storing the incoming data.

Comment by Scott on 2011-05-31:
...you will see it send the captured model information to the octomap_server. The problem appears to in how the octomap server is "handling" the data sent to it. What we need to solve this is a simple way to confirm that the octomap server is "accumulating" the data prior to saving out the map.

Comment by Scott on 2011-05-31:
Note, this is the exact problem that I contacted you about offline Felix. Gavin, I get the same results as you and here is what I can share with you on the troubleshoot front. 1) In a separate terminal session, run rostopic echo /rgbdslam/batch_clouds, when you hit send model after capture...

Comment by Felix Endres on 2011-05-25:
Try "rosbag play -r 0.1 " with the octomap_server listening and without running kinect driver. Then use octomap_saver. Does that work? If not, upload the bagfile somewhere and I'll have a look myself. Are you sure you have the experimental octomap-server?

Comment by Gavin on 2011-05-24:
The nodes were only connected with tf, but now are also connected with batch_clouds (my error). The bagfile is filled with what looks correct to me (112.5 MB for only /rgbdslam/batch_clouds, 70.6 KB for /tf). However, I still get only get one node in the resulting bt file...

Comment by Felix Endres on 2011-05-24:
That is weird, but I don't know much about roswtf. Are the nodes in rxgraph connected on batch_clouds and tf or only with tf? Can you record /batch_clouds and /tf with "rosbag record /tf /rgbdslam/batch_clouds and inspect the bagfile with "rosbag info " or "rxbag "?

Comment by Gavin on 2011-05-24:
My rxgraph has \rgbdslam connected to \octomap_server. In octomap_mapping.launch I've altered the line with cloud_in to: . I've also made sure I've sent the model. However, roswtf reports the \cloud_in subscription is unconnected. Is this ok?

Comment by Felix Endres on 2011-05-24:
That happens for an empty map. Make sure 1) octomap_server listens to /rgbdslam/batch_clouds, i.e. verify that with "rxgraph" 2) you have sent the model, e.g., press Ctrl+M in rgbdslam

Comment by Gavin on 2011-05-23:
After running rosrun octovis octovis map.bt I get "Reading 1 nodes from bonsai tree file... done." The visualisation then only has one cube. Any thoughts? Thanks.

Comment by Felix Endres on 2011-05-22:
What do you mean by "it only outputs a single node"?

Comment by Gavin on 2011-05-20:
Thanks, you were correct, the octomap_server wasn't running. Ran rosrun octomap_server octomap_server_node in another terminal and then rosrun octomap_server octomap_saver map.bt which seems to work, however, it only outputs a single node.

Comment by Felix Endres on 2011-05-20:
Are you sure the octomap_server is running ("rosnode list") and it is the right one (i.e. from the experimental repository)?

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.