I want to represent my robots environment (available as a point cloud) as Octomap in MoveIt (ROS Kinetic) to make it available for collision checking. Therefore I mainly followed the Perception Pipeline Tutorial (http://docs.ros.org/kinetic/api/moveit_tutorials/html/doc/perception_pipeline/perception_pipeline_tutorial.html). Since I don't have an operating sensor I used a topic constantly publishing the point cloud. I created a pointcloud.yaml
sensors:
- sensor_plugin: occupancy_map_monitor/PointCloudOctomapUpdater
point_cloud_topic: /fakesensor/pointcloud
max_range: 5.0
point_subsample: 1
padding_offset: 0.1
padding_scale: 1.0
max_update_rate: 1.0
filtered_cloud_topic: filtered_cloud
And added this to my launch file:
<rosparam command="load" file="$(find robot_registration)/config/pointcloud.yaml" />
<param name="octomap_frame" type="string" value="world" />
<param name="octomap_resolution" type="double" value="0.05" />
<param name="max_range" type="double" value="15.0" />
Starting RViz I can observe the point cloud I am publishing but there is no Octomap available. Any ideas what I am missing?
I also tried to use the octomap_server. My .launch file looked like this:
<launch>
<node pkg="octomap_server" type="octomap_server_node" name="octomap_server">
<param name="resolution" value="0.5" />
<!--common frame id fixed map frame (set to 'map' if SLAM or localization running!) -->
<param name="frame_id" type="string" value="world" />
<!-- maximum range to integrate (speedup!) -->
<param name="sensor_model/max_range" value="5.0" />
<!-- data source to integrate (PointCloud2) -->
<remap from="cloud_in" to="/fakesensor/pointcloud"/>
</node>
</launch>
I don't get any errors. In RViz I can add by topic the PointCloud2 /octomap_point_cloud_centers and the Marker Array /occupied_cells_vis_array. However in both cases there is nothing displayed in RViz. As far as I can see the topics are communicating fine. /octomap_point_cloud_centers Point Cloud in RViz is receiving messages. Echoing the /octomap_point_cloud_centers the data seems to be empty. Thank you in advance for all ideas!
So far my only idea is having isues with the tf frames: the pointcloud that i am sending has its own "sensor_frame" but i am also publishing the transformation between /sensor_frame and /world. Do I have to pay special attention to sth at this point. Do I have to use tf::TransformBroadcaster or tf2_ros::StaticTransformBroadcaster for the transformation to the sensor_frame?
Originally posted by Krebsileinchen on ROS Answers with karma: 51 on 2019-05-31
Post score: 0
Original comments
Comment by S.Yildiz on 2019-06-03:
Did you try to change the value from world to odom?
Comment by Krebsileinchen on 2019-06-03:
I actually don't have an /odom frame
Comment by S.Yildiz on 2019-06-03:
I can share you my experience: I had the similiar problem and when I changed the frame to odom it worked. So maybe you have to change the world frame to another frame
Comment by S.Yildiz on 2019-06-03:
And you could check, if you get proper point cloud data
Comment by Krebsileinchen on 2019-06-03:
I played around a bit with different frames but so far not successful. Did you work with the percepton pipeline or with the octomap server?
I can display the point cloud I am trying to process but I don't see any points when trying to display
/filtered_cloud or /octomap_point_cloud_centers