mirror of
https://github.com/introlab/rtabmap_ros.git
synced 2026-10-04 00:37:46 +08:00
127 lines
4.3 KiB
Python
127 lines
4.3 KiB
Python
# Example:
|
|
# $ ros2 launch velodyne_driver velodyne_driver_node-VLP16-launch.py
|
|
# $ ros2 launch velodyne_pointcloud velodyne_transform_node-VLP16-launch.py
|
|
#
|
|
# SLAM:
|
|
# $ ros2 launch rtabmap_examples vlp16.launch.py
|
|
|
|
|
|
from launch import LaunchDescription
|
|
from launch.actions import DeclareLaunchArgument
|
|
from launch.substitutions import LaunchConfiguration
|
|
from launch_ros.actions import Node
|
|
|
|
def generate_launch_description():
|
|
|
|
use_sim_time = LaunchConfiguration('use_sim_time')
|
|
deskewing = LaunchConfiguration('deskewing')
|
|
|
|
return LaunchDescription([
|
|
|
|
# Launch arguments
|
|
DeclareLaunchArgument(
|
|
'use_sim_time', default_value='false',
|
|
description='Use simulation (Gazebo) clock if true'),
|
|
|
|
DeclareLaunchArgument(
|
|
'deskewing', default_value='true',
|
|
description='Enable lidar deskewing'),
|
|
|
|
# Nodes to launch
|
|
Node(
|
|
package='rtabmap_odom', executable='icp_odometry', output='screen',
|
|
parameters=[{
|
|
'frame_id':'velodyne',
|
|
'odom_frame_id':'odom',
|
|
'wait_for_transform':0.2,
|
|
'expected_update_rate':15.0,
|
|
'deskewing':deskewing,
|
|
'use_sim_time':use_sim_time,
|
|
}],
|
|
remappings=[
|
|
('scan_cloud', '/velodyne_points')
|
|
],
|
|
arguments=[
|
|
'Icp/PointToPlane', 'true',
|
|
'Icp/Iterations', '10',
|
|
'Icp/VoxelSize', '0.1',
|
|
'Icp/Epsilon', '0.001',
|
|
'Icp/PointToPlaneK', '20',
|
|
'Icp/PointToPlaneRadius', '0',
|
|
'Icp/MaxTranslation', '2',
|
|
'Icp/MaxCorrespondenceDistance', '1',
|
|
'Icp/Strategy', '1',
|
|
'Icp/OutlierRatio', '0.7',
|
|
'Icp/CorrespondenceRatio', '0.01',
|
|
'Odom/ScanKeyFrameThr', '0.4',
|
|
'OdomF2M/ScanSubtractRadius', '0.1',
|
|
'OdomF2M/ScanMaxSize', '15000',
|
|
'OdomF2M/BundleAdjustment', 'false',
|
|
]),
|
|
|
|
Node(
|
|
package='rtabmap_util', executable='point_cloud_assembler', output='screen',
|
|
parameters=[{
|
|
'max_clouds':10,
|
|
'fixed_frame_id':'',
|
|
'use_sim_time':use_sim_time,
|
|
}],
|
|
remappings=[
|
|
('cloud', 'odom_filtered_input_scan')
|
|
]),
|
|
|
|
Node(
|
|
package='rtabmap_slam', executable='rtabmap', output='screen',
|
|
parameters=[{
|
|
'frame_id':'velodyne',
|
|
'subscribe_depth':False,
|
|
'subscribe_rgb':False,
|
|
'subscribe_scan_cloud':True,
|
|
'approx_sync':False,
|
|
'wait_for_transform':0.2,
|
|
'use_sim_time':use_sim_time,
|
|
}],
|
|
remappings=[
|
|
('scan_cloud', 'assembled_cloud')
|
|
],
|
|
arguments=[
|
|
'-d', # This will delete the previous database (~/.ros/rtabmap.db)
|
|
'RGBD/ProximityMaxGraphDepth', '0',
|
|
'RGBD/ProximityPathMaxNeighbors', '1',
|
|
'RGBD/AngularUpdate', '0.05',
|
|
'RGBD/LinearUpdate', '0.05',
|
|
'RGBD/CreateOccupancyGrid', 'false',
|
|
'Mem/NotLinkedNodesKept', 'false',
|
|
'Mem/STMSize', '30',
|
|
'Mem/LaserScanNormalK', '20',
|
|
'Reg/Strategy', '1',
|
|
'Icp/VoxelSize', '0.1',
|
|
'Icp/PointToPlaneK', '20',
|
|
'Icp/PointToPlaneRadius', '0',
|
|
'Icp/PointToPlane', 'true',
|
|
'Icp/Iterations', '10',
|
|
'Icp/Epsilon', '0.001',
|
|
'Icp/MaxTranslation', '3',
|
|
'Icp/MaxCorrespondenceDistance', '1',
|
|
'Icp/Strategy', '1',
|
|
'Icp/OutlierRatio', '0.7',
|
|
'Icp/CorrespondenceRatio', '0.2',
|
|
]),
|
|
|
|
Node(
|
|
package='rtabmap_viz', executable='rtabmap_viz', output='screen',
|
|
parameters=[{
|
|
'frame_id':'velodyne',
|
|
'odom_frame_id':'odom',
|
|
'subscribe_odom_info':True,
|
|
'subscribe_scan_cloud':True,
|
|
'approx_sync':False,
|
|
'use_sim_time':use_sim_time,
|
|
}],
|
|
remappings=[
|
|
('scan_cloud', 'odom_filtered_input_scan')
|
|
]),
|
|
])
|
|
|
|
|