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

Create collision map from Kinect with nodelet

asked 2012-07-19 22:00:27 -0600

jep31 gravatar image

updated 2016-10-24 09:03:30 -0600

ngrennan gravatar image

Hi,

I use a camera Kinect for create a collision map but currently it's too slow and use 100% CPU. So I want use nodelets to avoid useless copies of pointCloud and speed up the process. I understand how I should use nodelet with openni_launch because I have a good explaining here: Get start with ROS Nodelet

My question is How create a collision map with nodelet ? Currently I use octomap_server to construct the map but it's not a nodelet.

It's necessary to modify the package ocotomap_server to porting nodes to nodelets ?

Or it's possible to run this node as nodelets with a change in the launch file ?

Or existing other package to construct collision map with nodelets ?

Thanks

EDIT:

I have tried with two computer: (With system Monitor)

The first work with two CPU at 100%: Ubuntu 10.04 / Ros Electric / Memory 3.9 GiB / Two processor Intel Core(TM)2 6600 @ 2.40GHz

The second work well, it have only a CPU at 100%, it have 8 CPU: Unbuntu 12.04 / Ros Electric / Memory 15.7 GiB / Height processor Intel(R)Xeon(R) W3565 @ 3.20 GHz

EDIT 2: New subject on how create this node: Build a octomap_server nodelet

edit retag flag offensive close merge delete

Comments

You have no tags on your question, it is unlikely to be found by people who know about these things

Felix Endres gravatar image Felix Endres  ( 2012-07-19 23:05:00 -0600 )edit

Yes it's true. Now that's good. thank you

jep31 gravatar image jep31  ( 2012-07-22 02:24:04 -0600 )edit

What are the specs (CPU type, speed, RAM, etc) of the computer you are trying to create the collision map on?

Eric Perko gravatar image Eric Perko  ( 2012-07-22 19:34:32 -0600 )edit

I have did a EDIT. A other question, We will soon use Fuerte. Is there a change between Electric and Fuerte with octomap_server ? It's for know if my work on electric can be used on Fuerte without change.

jep31 gravatar image jep31  ( 2012-07-22 20:23:05 -0600 )edit

New (unrelated) questions tend to get lost in comments, but nevertheless: see the Changelog: http://www.ros.org/wiki/octomap_mapping/ChangeList

AHornung gravatar image AHornung  ( 2012-07-22 22:03:48 -0600 )edit

In general, the Fuerte version got a few new features and will be worked on, while electric will stay as it is. There should not be a change for you, I think.

AHornung gravatar image AHornung  ( 2012-07-22 22:04:47 -0600 )edit

2 Answers

Sort by ยป oldest newest most voted
3

answered 2012-07-20 01:44:43 -0600

AHornung gravatar image

Yes, you would need to write your own Nodelet using octomap_server. That should be easily possible, since you can just internally use the OctomapServer class (C++ API instead of ROS node API).

However, I would guess that most of the CPU load comes from expensive map updates and ray casting, instead of pointcloud serialization/deserialization. A Nodelet would not speed up much in that case, but it might be worth a try.

Note that octomap_server outputs detailed timing on the debug log level, so you can estimate the time it takes to just insert the pointclouds into the map.

edit flag offensive delete link more

Comments

Ok I will try to write my own nodelet with the OctomapServer class. Now I work with a computer with 8 CPU more efficient (Before 2 CPU) but we want improve the speed a maximum. I think the copy of the pointCloud between node is expensive also. Very useful a tool to estimate time, thx

jep31 gravatar image jep31  ( 2012-07-22 02:15:41 -0600 )edit

There is no parallelization in octomap or octomap_server, so for that case only the specs of a single CPU will count.

AHornung gravatar image AHornung  ( 2012-07-22 22:06:06 -0600 )edit
1

answered 2012-07-20 06:33:54 -0600

Only loosely related, but you could set the kinect to QVGA (e.g. using dynamic_reconfigure). This will decrease the cloud resolution very efficiently.

You can also use a voxel grid filter or filter out far points (passthrough filter).

edit flag offensive delete link more

Comments

Yes I also work on the quality of point cloud. The resolution is the more efficiently to reduce the time. I want also select a region of point cloud to limit the size. I don't know the voxel grid filter out far points. Is used for that? Have you more detail of this ? It's in openni launch ?

jep31 gravatar image jep31  ( 2012-07-22 02:22:27 -0600 )edit

Question Tools

1 follower

Stats

Asked: 2012-07-19 22:00:27 -0600

Seen: 785 times

Last updated: Aug 19 '12