Octomap building in ROS
Pre-requisites
sudo apt-get install ros-melodic-octomap ros-melodic-octomap-msgs ros-melodic-octomap-ros ros-melodic-octomap-rviz-plugins ros-melodic-octomap-server ros-melodic-octomap-mapping ros-melodic-freenect-launch libfreenect-dev
Instructions for cloning and building (Optional)
Octomap_server is used to generate and save octomaps as .bt (binary) or .ot (oct-tree) files.
cd catkin_ws/src
git clone https://github.com/OctoMap/octomap_mapping
git clone https://github.com/code-iai/iai_kinect2
catkin_make
create a catkin package
cd src/
catkin_create_pkg cameras roscpp rospy std_msgs
cd ..
catkin_make
and add the following launch file, start_cameras.launch
inside a launch folder
<launch>
<include file="$(find kinect2_bridge)/launch/kinect2_bridge.launch">
<arg name="base_name" value="ceiling_camera"/>
<arg name="sensor" value="002608570547" /> <!-- Replace this line with your camera serial number -->
<arg name="fps_limit" value="15" />
<arg name="publish_tf" value="true" />
<arg name="base_name_tf" value="ceiling_camera" />
<!-- <arg name="output_frame" value="ceil" /> -->
</include>
<node pkg="tf" type="static_transform_publisher" name="ceiling_cam_transform" args="
-0.12019394, -0.04154276, 1.53544738 0.64843474, -0.64567785, 0.28140082, -0.28887035 /world /ceiling_camera_link 100"/>
</launch>
The procedures for building an octmap for visualization in Rviz
are follows:
-
roslaunch camera_setup start_cameras.launch
# to launch the kinect 3D sensor -
roslaunch octomap_server octomap_mapping.launch
# 2 things need to be changed 1) frame_id 2) remap cloud_in. check the forked octomap_mapping.launch here rosrun rviz rviz
- Add
MarkerArray
inRviz
and select the topic as/occupied_cells_vis_array
. Set the same frame_id above (in 2) in the Global option –> Fixed frame inRviz
-
rosrun octomap_server octomap_saver -f map_name.bt (or .ot)
# to save the octomap
Visualize octomap in Rviz
- Close all the above
roscore
rosrun rviz rviz
rosrun octomap_server octomap_server_node map_name.bt
- Add
MarkerArray
inRviz
and select the topic as/occupied_cells_vis_array
. Set the same frame_id as it was recorded in the Global option –> Fixed frame in Rviz. There might be a chance that the octomap wont show up. Then write frame id asmap
which should solve the problem
Enjoy Reading This Article?
Here are some more articles you might like to read next: