mirror of
https://github.com/introlab/rtabmap_ros.git
synced 2026-10-04 00:37:46 +08:00
* Fixing turtlebot3 demos on Jazzy * Updated humble * Working turtlebot3 demos on humble and jazzy
112 lines
4.2 KiB
Python
112 lines
4.2 KiB
Python
# Example:
|
|
#
|
|
# Bringup turtlebot3:
|
|
# $ export TURTLEBOT3_MODEL=waffle
|
|
# $ export LDS_MODEL=LDS-01
|
|
# $ ros2 launch turtlebot3_bringup robot.launch.py
|
|
#
|
|
# SLAM:
|
|
# $ ros2 launch rtabmap_demos turtlebot3_rgbd.launch.py
|
|
#
|
|
# Navigation (install nav2_bringup package):
|
|
# $ ros2 launch nav2_bringup navigation_launch.py
|
|
# $ 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
|
|
from launch.actions import OpaqueFunction
|
|
|
|
def launch_setup(context, *args, **kwargs):
|
|
|
|
use_sim_time = LaunchConfiguration('use_sim_time')
|
|
localization = LaunchConfiguration('localization')
|
|
max_ground_height = LaunchConfiguration('max_ground_height').perform(context)
|
|
|
|
parameters={
|
|
'frame_id':'base_footprint',
|
|
'use_sim_time':use_sim_time,
|
|
'subscribe_depth':True,
|
|
'use_action_for_goal':True,
|
|
'Reg/Force3DoF':'true',
|
|
'Grid/RayTracing':'true', # Fill empty space
|
|
'Grid/3D':'false', # Use 2D occupancy
|
|
'Grid/RangeMax':'3',
|
|
'Grid/NormalsSegmentation':'false', # Use passthrough filter to detect obstacles
|
|
'Grid/MaxGroundHeight': str(max_ground_height), # All points above 5 cm are obstacles
|
|
'Grid/MaxObstacleHeight':'0.4', # All points over 1 meter are ignored
|
|
'Optimizer/GravitySigma':'0' # Disable imu constraints (we are already in 2D)
|
|
}
|
|
|
|
remappings=[
|
|
('rgb/image', '/camera/image_raw'),
|
|
('rgb/camera_info', '/camera/camera_info'),
|
|
('depth/image', '/camera/depth/image_raw')]
|
|
|
|
return [
|
|
# 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),
|
|
|
|
# Obstacle detection with the camera for nav2 local costmap.
|
|
# First, we need to convert depth image to a point cloud.
|
|
# Second, we segment the floor from the obstacles.
|
|
Node(
|
|
package='rtabmap_util', executable='point_cloud_xyz', output='screen',
|
|
parameters=[{'decimation': 2,
|
|
'max_depth': 3.0,
|
|
'voxel_size': 0.02}],
|
|
remappings=[('depth/image', '/camera/depth/image_raw'),
|
|
('depth/camera_info', '/camera/camera_info'),
|
|
('cloud', '/camera/cloud')]),
|
|
Node(
|
|
package='rtabmap_util', executable='obstacles_detection', output='screen',
|
|
parameters=[parameters],
|
|
remappings=[('cloud', '/camera/cloud'),
|
|
('obstacles', '/camera/obstacles'),
|
|
('ground', '/camera/ground')]),
|
|
]
|
|
|
|
def generate_launch_description():
|
|
return LaunchDescription([
|
|
|
|
# Launch arguments
|
|
DeclareLaunchArgument(
|
|
'use_sim_time', default_value='true',
|
|
description='Use simulation (Gazebo) clock if true'),
|
|
|
|
DeclareLaunchArgument(
|
|
'localization', default_value='false',
|
|
description='Launch in localization mode.'),
|
|
|
|
DeclareLaunchArgument(
|
|
'max_ground_height', default_value='0.05',
|
|
description='Maximum ground height, everything above is obstacle'),
|
|
|
|
OpaqueFunction(function=launch_setup)
|
|
]) |