mirror of
https://github.com/introlab/rtabmap_ros.git
synced 2026-10-04 00:37:46 +08:00
124 lines
7.0 KiB
XML
124 lines
7.0 KiB
XML
|
|
<launch>
|
|
<!--
|
|
Bringup Turtlebot:
|
|
$ roslaunch turtlebot_bringup minimal.launch
|
|
|
|
Mapping:
|
|
$ roslaunch rtabmap_ros demo_turtlebot_mapping.launch
|
|
|
|
Visualization:
|
|
$ roslaunch rtabmap_ros demo_turtlebot_rviz.launch
|
|
|
|
This launch file is a one to one replacement of the gmapping_demo.launch in the
|
|
"SLAM Map Building with TurtleBot" tutorial:
|
|
http://wiki.ros.org/turtlebot_navigation/Tutorials/indigo/Build%20a%20map%20with%20SLAM
|
|
|
|
For localization-only after a mapping session, add argument "localization:=true" to
|
|
demo_turtlebot_mapping.launch line above. Move the robot around until it can relocalize in
|
|
the previous map, then the 2D map should re-appear again. You can then follow the same steps
|
|
from 3.3.2 of the "Autonomous Navigation of a Known Map with TurtleBot" tutorial:
|
|
http://wiki.ros.org/turtlebot_navigation/Tutorials/Autonomously%20navigate%20in%20a%20known%20map
|
|
|
|
For turtlebot in simulation (Gazebo):
|
|
$ roslaunch turtlebot_gazebo turtlebot_world.launch
|
|
$ roslaunch rtabmap_ros demo_turtlebot_mapping.launch simulation:=true
|
|
$ roslaunch rtabmap_ros demo_turtlebot_rviz.launch
|
|
-->
|
|
|
|
<arg name="database_path" default="rtabmap.db"/>
|
|
<arg name="rgbd_odometry" default="false"/>
|
|
<arg name="rtabmapviz" default="false"/>
|
|
<arg name="localization" default="false"/>
|
|
<arg name="simulation" default="false"/>
|
|
<arg if="$(arg localization)" name="args" default=""/>
|
|
<arg unless="$(arg localization)" name="args" default="--delete_db_on_start"/>
|
|
|
|
<arg if="$(arg simulation)" name="rgb_topic" default="/camera/rgb/image_raw"/>
|
|
<arg unless="$(arg simulation)" name="rgb_topic" default="/camera/rgb/image_rect_color"/>
|
|
<arg if="$(arg simulation)" name="depth_topic" default="/camera/depth/image_raw"/>
|
|
<arg unless="$(arg simulation)" name="depth_topic" default="/camera/depth_registered/image_raw"/>
|
|
<arg name="camera_info_topic" default="/camera/rgb/camera_info"/>
|
|
|
|
<arg name="wait_for_transform" default="0.2"/>
|
|
<!--
|
|
robot_state_publisher's publishing frequency in "turtlebot_bringup/launch/includes/robot.launch.xml"
|
|
can be increase from 5 to 10 Hz to avoid some TF warnings.
|
|
-->
|
|
|
|
<!-- Navigation stuff (move_base) -->
|
|
<include unless="$(arg simulation)" file="$(find turtlebot_bringup)/launch/3dsensor.launch"/>
|
|
<include file="$(find turtlebot_navigation)/launch/includes/move_base.launch.xml"/>
|
|
|
|
<!-- Mapping -->
|
|
<group ns="rtabmap">
|
|
|
|
<node name="rtabmap" pkg="rtabmap_ros" type="rtabmap" output="screen" args="$(arg args)">
|
|
<param name="database_path" type="string" value="$(arg database_path)"/>
|
|
<param name="frame_id" type="string" value="base_footprint"/>
|
|
<param name="wait_for_transform_duration" type="double" value="$(arg wait_for_transform)"/>
|
|
<param name="subscribe_depth" type="bool" value="true"/>
|
|
<param name="subscribe_scan" type="bool" value="true"/>
|
|
<param name="map_negative_poses_ignored" type="bool" value="true"/>
|
|
|
|
<!-- inputs -->
|
|
<remap from="scan" to="/scan"/>
|
|
<remap from="rgb/image" to="$(arg rgb_topic)"/>
|
|
<remap from="depth/image" to="$(arg depth_topic)"/>
|
|
<remap from="rgb/camera_info" to="$(arg camera_info_topic)"/>
|
|
<remap unless="$(arg rgbd_odometry)" from="odom" to="/odom"/>
|
|
|
|
<!-- output -->
|
|
<remap from="grid_map" to="/map"/>
|
|
|
|
<!-- RTAB-Map's parameters: do "rosrun rtabmap rtabmap (double-dash)params" to see the list of available parameters. -->
|
|
<param name="RGBD/ProximityBySpace" type="string" value="true"/> <!-- Local loop closure detection (using estimated position) with locations in WM -->
|
|
<param name="RGBD/OptimizeFromGraphEnd" type="string" value="false"/> <!-- Set to false to generate map correction between /map and /odom -->
|
|
<param name="Kp/MaxDepth" type="string" value="4.0"/>
|
|
<param name="Reg/Strategy" type="string" value="0"/> <!-- Loop closure transformation: 0=Visual, 1=ICP, 2=Visual+ICP -->
|
|
<param name="Icp/CorrespondenceRatio" type="string" value="0.3"/>
|
|
<param name="Vis/MinInliers" type="string" value="15"/> <!-- 3D visual words minimum inliers to accept loop closure -->
|
|
<param name="Vis/InlierDistance" type="string" value="0.1"/> <!-- 3D visual words correspondence distance -->
|
|
<param name="RGBD/AngularUpdate" type="string" value="0.1"/> <!-- Update map only if the robot is moving -->
|
|
<param name="RGBD/LinearUpdate" type="string" value="0.1"/> <!-- Update map only if the robot is moving -->
|
|
<param name="RGBD/ProximityPathMaxNeighbors" type="string" value="0"/>
|
|
<param name="Rtabmap/TimeThr" type="string" value="700"/>
|
|
<param name="Mem/RehearsalSimilarity" type="string" value="0.30"/>
|
|
<param name="Optimizer/Slam2D" type="string" value="true"/>
|
|
<param name="Reg/Force3DoF" type="string" value="true"/>
|
|
<param name="GridGlobal/MinSize" type="string" value="20"/>
|
|
|
|
<!-- localization mode -->
|
|
<param if="$(arg localization)" name="Mem/IncrementalMemory" type="string" value="false"/>
|
|
<param unless="$(arg localization)" name="Mem/IncrementalMemory" type="string" value="true"/>
|
|
<param name="Mem/InitWMWithAllNodes" type="string" value="$(arg localization)"/>
|
|
</node>
|
|
|
|
<!-- Odometry : ONLY for testing without the actual robot! /odom TF should not be already published. -->
|
|
<node if="$(arg rgbd_odometry)" pkg="rtabmap_ros" type="rgbd_odometry" name="rgbd_odometry" output="screen">
|
|
<param name="frame_id" type="string" value="base_footprint"/>
|
|
<param name="wait_for_transform_duration" type="double" value="$(arg wait_for_transform)"/>
|
|
<param name="Reg/Force3DoF" type="string" value="true"/>
|
|
<param name="Vis/InlierDistance" type="string" value="0.05"/>
|
|
|
|
<remap from="rgb/image" to="$(arg rgb_topic)"/>
|
|
<remap from="depth/image" to="$(arg depth_topic)"/>
|
|
<remap from="rgb/camera_info" to="$(arg camera_info_topic)"/>
|
|
</node>
|
|
|
|
<!-- visualization with rtabmapviz -->
|
|
<node if="$(arg rtabmapviz)" pkg="rtabmap_ros" type="rtabmapviz" name="rtabmapviz" args="-d $(find rtabmap_ros)/launch/config/rgbd_gui.ini" output="screen">
|
|
<param name="subscribe_depth" type="bool" value="true"/>
|
|
<param name="subscribe_scan" type="bool" value="true"/>
|
|
<param name="frame_id" type="string" value="base_footprint"/>
|
|
<param name="wait_for_transform_duration" type="double" value="$(arg wait_for_transform)"/>
|
|
|
|
<remap from="rgb/image" to="$(arg rgb_topic)"/>
|
|
<remap from="depth/image" to="$(arg depth_topic)"/>
|
|
<remap from="rgb/camera_info" to="$(arg camera_info_topic)"/>
|
|
<remap from="scan" to="/scan"/>
|
|
</node>
|
|
|
|
</group>
|
|
</launch>
|