mirror of
https://github.com/introlab/rtabmap_ros.git
synced 2026-10-04 00:37:46 +08:00
94 lines
3.4 KiB
Python
94 lines
3.4 KiB
Python
# Requirements:
|
|
# Install Turtlebot3 packages
|
|
# Note that we can edit /opt/ros/$ROS_DISTRO/share/turtlebot3_gazebo/models/turtlebot_waffle/model.sdf
|
|
# to increase min scan range from 0.12 to 0.2 to avoid having scans
|
|
# hitting the robot itself
|
|
# Example:
|
|
# $ export TURTLEBOT3_MODEL=waffle
|
|
# $ ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py
|
|
#
|
|
# SLAM:
|
|
# $ ros2 launch rtabmap_demos turtlebot3_scan.launch.py
|
|
# OR
|
|
# $ ros2 launch rtabmap_launch rtabmap.launch.py visual_odometry:=false frame_id:=base_footprint subscribe_scan:=true depth:=false approx_sync:=true odom_topic:=/odom args:="-d --RGBD/NeighborLinkRefining true --Reg/Strategy 1 --Reg/Force3DoF true --Grid/RangeMin 0.2" use_sim_time:=true qos:=2
|
|
# $ ros2 run topic_tools relay /rtabmap/map /map
|
|
#
|
|
# Navigation (install nav2_bringup package):
|
|
# $ ros2 launch nav2_bringup navigation_launch.py use_sim_time:=True
|
|
# $ ros2 launch nav2_bringup rviz_launch.py
|
|
#
|
|
# Teleop:
|
|
# $ ros2 run turtlebot3_teleop teleop_keyboard
|
|
|
|
from launch import LaunchDescription
|
|
from launch.actions import DeclareLaunchArgument, SetEnvironmentVariable
|
|
from launch.substitutions import LaunchConfiguration
|
|
from launch.conditions import IfCondition, UnlessCondition
|
|
from launch_ros.actions import Node
|
|
|
|
def generate_launch_description():
|
|
|
|
use_sim_time = LaunchConfiguration('use_sim_time')
|
|
qos = LaunchConfiguration('qos')
|
|
localization = LaunchConfiguration('localization')
|
|
|
|
parameters={
|
|
'frame_id':'base_footprint',
|
|
'use_sim_time':use_sim_time,
|
|
'subscribe_depth':False,
|
|
'subscribe_rgb':False,
|
|
'subscribe_scan':True,
|
|
'approx_sync':True,
|
|
'use_action_for_goal':True,
|
|
'qos_scan':qos,
|
|
'qos_imu':qos,
|
|
'Reg/Strategy':'1',
|
|
'Reg/Force3DoF':'true',
|
|
'RGBD/NeighborLinkRefining':'True',
|
|
'Grid/RangeMin':'0.2', # ignore laser scan points on the robot itself
|
|
'Optimizer/GravitySigma':'0' # Disable imu constraints (we are already in 2D)
|
|
}
|
|
|
|
remappings=[
|
|
('scan', '/scan')]
|
|
|
|
return LaunchDescription([
|
|
|
|
# Launch arguments
|
|
DeclareLaunchArgument(
|
|
'use_sim_time', default_value='true',
|
|
description='Use simulation (Gazebo) clock if true'),
|
|
|
|
DeclareLaunchArgument(
|
|
'qos', default_value='2',
|
|
description='QoS used for input sensor topics'),
|
|
|
|
DeclareLaunchArgument(
|
|
'localization', default_value='false',
|
|
description='Launch in localization mode.'),
|
|
|
|
# Nodes to launch
|
|
|
|
# SLAM mode:
|
|
Node(
|
|
condition=UnlessCondition(localization),
|
|
package='rtabmap_slam', executable='rtabmap', output='screen',
|
|
parameters=[parameters],
|
|
remappings=remappings,
|
|
arguments=['-d']), # This will delete the previous database (~/.ros/rtabmap.db)
|
|
|
|
# Localization mode:
|
|
Node(
|
|
condition=IfCondition(localization),
|
|
package='rtabmap_slam', executable='rtabmap', output='screen',
|
|
parameters=[parameters,
|
|
{'Mem/IncrementalMemory':'False',
|
|
'Mem/InitWMWithAllNodes':'True'}],
|
|
remappings=remappings),
|
|
|
|
Node(
|
|
package='rtabmap_viz', executable='rtabmap_viz', output='screen',
|
|
parameters=[parameters],
|
|
remappings=remappings),
|
|
])
|