建图导航ROS2包输入和输出节点
SLAM
2D 激光:slam_toolbox
(1)安装启动
sudo apt update
sudo apt install ros-jazzy-slam-toolbox
ros2 launch slam_toolbox online_async_launch.py
(2)输入输出
ros2 node info /slam_toolbox
/slam_toolbox
Subscribers:
/clock: rosgraph_msgs/msg/Clock
/map: nav_msgs/msg/OccupancyGrid
/parameter_events: rcl_interfaces/msg/ParameterEvent
/scan: sensor_msgs/msg/LaserScan
/slam_toolbox/feedback: visualization_msgs/msg/InteractiveMarkerFeedback
Publishers:
/map: nav_msgs/msg/OccupancyGrid
/map_metadata: nav_msgs/msg/MapMetaData
/parameter_events: rcl_interfaces/msg/ParameterEvent
/pose: geometry_msgs/msg/PoseWithCovarianceStamped
/rosout: rcl_interfaces/msg/Log
/slam_toolbox/graph_visualization: visualization_msgs/msg/MarkerArray
/slam_toolbox/scan_visualization: sensor_msgs/msg/LaserScan
/slam_toolbox/transition_event: lifecycle_msgs/msg/TransitionEvent
/slam_toolbox/update: visualization_msgs/msg/InteractiveMarkerUpdate
/tf: tf2_msgs/msg/TFMessage
Service Servers:
/slam_toolbox/change_state: lifecycle_msgs/srv/ChangeState
/slam_toolbox/clear_changes: slam_toolbox/srv/Clear
/slam_toolbox/describe_parameters: rcl_interfaces/srv/DescribeParameters
/slam_toolbox/deserialize_map: slam_toolbox/srv/DeserializePoseGraph
/slam_toolbox/dynamic_map: nav_msgs/srv/GetMap
/slam_toolbox/get_available_states: lifecycle_msgs/srv/GetAvailableStates
/slam_toolbox/get_available_transitions: lifecycle_msgs/srv/GetAvailableTransitions
/slam_toolbox/get_interactive_markers: visualization_msgs/srv/GetInteractiveMarkers
/slam_toolbox/get_parameter_types: rcl_interfaces/srv/GetParameterTypes
/slam_toolbox/get_parameters: rcl_interfaces/srv/GetParameters
/slam_toolbox/get_state: lifecycle_msgs/srv/GetState
/slam_toolbox/get_transition_graph: lifecycle_msgs/srv/GetAvailableTransitions
/slam_toolbox/get_type_description: type_description_interfaces/srv/GetTypeDescription
/slam_toolbox/list_parameters: rcl_interfaces/srv/ListParameters
/slam_toolbox/manual_loop_closure: slam_toolbox/srv/LoopClosure
/slam_toolbox/pause_new_measurements: slam_toolbox/srv/Pause
/slam_toolbox/reset: slam_toolbox/srv/Reset
/slam_toolbox/save_map: slam_toolbox/srv/SaveMap
/slam_toolbox/serialize_map: slam_toolbox/srv/SerializePoseGraph
/slam_toolbox/set_parameters: rcl_interfaces/srv/SetParameters
/slam_toolbox/set_parameters_atomically: rcl_interfaces/srv/SetParametersAtomically
/slam_toolbox/toggle_interactive_mode: slam_toolbox/srv/ToggleInteractive
Service Clients:
Action Servers:
Action Clients:
2D/3D 激光 SLAM:Cartographer
(1)安装启动
sudo apt install ros-jazzy-cartographer-ros
sudo apt install ros-jazzy-turtlebot3-cartographer
# 这里的 cartographer.launch.py 是真实存在的!
ros2 launch turtlebot3_cartographer cartographer.launch.py \
use_sim_time:=false \
is_turtlebot3:=false
(2)查看输入输出
2D
ros2 node info /cartographer_node
/cartographer_node
Subscribers:
/odom: nav_msgs/msg/Odometry
/parameter_events: rcl_interfaces/msg/ParameterEvent
/scan: sensor_msgs/msg/LaserScan
Publishers:
/constraint_list: visualization_msgs/msg/MarkerArray
/landmark_poses_list: visualization_msgs/msg/MarkerArray
/parameter_events: rcl_interfaces/msg/ParameterEvent
/rosout: rcl_interfaces/msg/Log
/scan_matched_points2: sensor_msgs/msg/PointCloud2
/submap_list: cartographer_ros_msgs/msg/SubmapList
/tf: tf2_msgs/msg/TFMessage
/trajectory_node_list: visualization_msgs/msg/MarkerArray
Service Servers:
/cartographer_node/describe_parameters: rcl_interfaces/srv/DescribeParameters
/cartographer_node/get_parameter_types: rcl_interfaces/srv/GetParameterTypes
/cartographer_node/get_parameters: rcl_interfaces/srv/GetParameters
/cartographer_node/get_type_description: type_description_interfaces/srv/GetTypeDescription
/cartographer_node/list_parameters: rcl_interfaces/srv/ListParameters
/cartographer_node/set_parameters: rcl_interfaces/srv/SetParameters
/cartographer_node/set_parameters_atomically: rcl_interfaces/srv/SetParametersAtomically
/finish_trajectory: cartographer_ros_msgs/srv/FinishTrajectory
/get_trajectory_states: cartographer_ros_msgs/srv/GetTrajectoryStates
/read_metrics: cartographer_ros_msgs/srv/ReadMetrics
/start_trajectory: cartographer_ros_msgs/srv/StartTrajectory
/submap_query: cartographer_ros_msgs/srv/SubmapQuery
/tf2_frames: tf2_msgs/srv/FrameGraph
/trajectory_query: cartographer_ros_msgs/srv/TrajectoryQuery
/write_state: cartographer_ros_msgs/srv/WriteState
Service Clients:
Action Servers:
Action Clients:
3D
ros2 node info /cartographer_node
/cartographer_node
Subscribers:
/imu/data: sensor_msgs/msg/Imu
/odometry: nav_msgs/msg/Odometry
/parameter_events: rcl_interfaces/msg/ParameterEvent
/velodyne_points: sensor_msgs/msg/PointCloud2
Publishers:
/constraint_list: visualization_msgs/msg/MarkerArray
/landmark_poses_list: visualization_msgs/msg/MarkerArray
/parameter_events: rcl_interfaces/msg/ParameterEvent
/rosout: rcl_interfaces/msg/Log
/scan_matched_points2: sensor_msgs/msg/PointCloud2
/submap_list: cartographer_ros_msgs/msg/SubmapList
/tf: tf2_msgs/msg/TFMessage
/trajectory_node_list: visualization_msgs/msg/MarkerArray
Service Servers:
/cartographer_node/describe_parameters: rcl_interfaces/srv/DescribeParameters
/cartographer_node/get_parameter_types: rcl_interfaces/srv/GetParameterTypes
/cartographer_node/get_parameters: rcl_interfaces/srv/GetParameters
/cartographer_node/get_type_description: type_description_interfaces/srv/GetTypeDescription
/cartographer_node/list_parameters: rcl_interfaces/srv/ListParameters
/cartographer_node/set_parameters: rcl_interfaces/srv/SetParameters
/cartographer_node/set_parameters_atomically: rcl_interfaces/srv/SetParametersAtomically
/finish_trajectory: cartographer_ros_msgs/srv/FinishTrajectory
/get_trajectory_states: cartographer_ros_msgs/srv/GetTrajectoryStates
/read_metrics: cartographer_ros_msgs/srv/ReadMetrics
/start_trajectory: cartographer_ros_msgs/srv/StartTrajectory
/submap_query: cartographer_ros_msgs/srv/SubmapQuery
/tf2_frames: tf2_msgs/srv/FrameGraph
/trajectory_query: cartographer_ros_msgs/srv/TrajectoryQuery
/write_state: cartographer_ros_msgs/srv/WriteState
Service Clients:
Action Servers:
Action Clients:
视觉/激光 SLAM: RTAB-Map
(1)安装启动
sudo apt update
sudo apt install ros-jazzy-rtabmap-ros
# 启动 RTAB-Map (无界面模式 + 订阅激光雷达)
ros2 launch rtabmap_launch rtabmap.launch.py \
rtabmap_viz:=false \
use_sim_time:=false \
subscribe_scan:=true \
frame_id:=base_link \
approx_sync:=true
(2)查看输入输出
ros2 node info /rtabmap/rtabmap
/rtabmap/rtabmap
Subscribers:
/camera/depth_registered/image_raw: sensor_msgs/msg/Image
/camera/rgb/camera_info: sensor_msgs/msg/CameraInfo
/camera/rgb/image_rect_color: sensor_msgs/msg/Image
/detections: apriltag_msgs/msg/AprilTagDetectionArray
/gps/fix: sensor_msgs/msg/NavSatFix
/imu/data: sensor_msgs/msg/Imu
/parameter_events: rcl_interfaces/msg/ParameterEvent
/rtabmap/apriltag/detections: apriltag_msgs/msg/AprilTagDetectionArray
/rtabmap/aruco/detections: aruco_msgs/msg/MarkerArray
/rtabmap/aruco_opencv/detections: aruco_opencv_msgs/msg/ArucoDetection
/rtabmap/global_pose: geometry_msgs/msg/PoseWithCovarianceStamped
/rtabmap/goal: geometry_msgs/msg/PoseStamped
/rtabmap/goal_node: rtabmap_msgs/msg/Goal
/rtabmap/initialpose: geometry_msgs/msg/PoseWithCovarianceStamped
/rtabmap/landmark_detection: rtabmap_msgs/msg/LandmarkDetection
/rtabmap/landmark_detections: rtabmap_msgs/msg/LandmarkDetections
/rtabmap/odom: nav_msgs/msg/Odometry
/rtabmap/odom_info: rtabmap_msgs/msg/OdomInfo
/rtabmap/rtabmap/republish_node_data: std_msgs/msg/Int32MultiArray
/scan: sensor_msgs/msg/LaserScan
/user_data_async: rtabmap_msgs/msg/UserData
Publishers:
/diagnostics: diagnostic_msgs/msg/DiagnosticArray
/goal_pose: geometry_msgs/msg/PoseStamped
/parameter_events: rcl_interfaces/msg/ParameterEvent
/rosout: rcl_interfaces/msg/Log
/rtabmap/cloud_ground: sensor_msgs/msg/PointCloud2
/rtabmap/cloud_map: sensor_msgs/msg/PointCloud2
/rtabmap/cloud_obstacles: sensor_msgs/msg/PointCloud2
/rtabmap/global_path: nav_msgs/msg/Path
/rtabmap/global_path_nodes: rtabmap_msgs/msg/Path
/rtabmap/goal_reached: std_msgs/msg/Bool
/rtabmap/grid_prob_map: nav_msgs/msg/OccupancyGrid
/rtabmap/info: rtabmap_msgs/msg/Info
/rtabmap/labels: visualization_msgs/msg/MarkerArray
/rtabmap/landmarks: geometry_msgs/msg/PoseArray
/rtabmap/local_grid_empty: sensor_msgs/msg/PointCloud2
/rtabmap/local_grid_ground: sensor_msgs/msg/PointCloud2
/rtabmap/local_grid_obstacle: sensor_msgs/msg/PointCloud2
/rtabmap/local_path: nav_msgs/msg/Path
/rtabmap/local_path_nodes: rtabmap_msgs/msg/Path
/rtabmap/localization_pose: geometry_msgs/msg/PoseWithCovarianceStamped
/rtabmap/map: nav_msgs/msg/OccupancyGrid
/rtabmap/mapData: rtabmap_msgs/msg/MapData
/rtabmap/mapGraph: rtabmap_msgs/msg/MapGraph
/rtabmap/mapOdomCache: rtabmap_msgs/msg/MapGraph
/rtabmap/mapPath: nav_msgs/msg/Path
/rtabmap/octomap_binary: octomap_msgs/msg/Octomap
/rtabmap/octomap_empty_space: sensor_msgs/msg/PointCloud2
/rtabmap/octomap_full: octomap_msgs/msg/Octomap
/rtabmap/octomap_global_frontier_space: sensor_msgs/msg/PointCloud2
/rtabmap/octomap_grid: nav_msgs/msg/OccupancyGrid
/rtabmap/octomap_ground: sensor_msgs/msg/PointCloud2
/rtabmap/octomap_obstacles: sensor_msgs/msg/PointCloud2
/rtabmap/octomap_occupied_space: sensor_msgs/msg/PointCloud2
/tf: tf2_msgs/msg/TFMessage
Service Servers:
/rtabmap/rtabmap/add_link: rtabmap_msgs/srv/AddLink
/rtabmap/rtabmap/backup: std_srvs/srv/Empty
/rtabmap/rtabmap/cancel_goal: std_srvs/srv/Empty
/rtabmap/rtabmap/cleanup_local_grids: rtabmap_msgs/srv/CleanupLocalGrids
/rtabmap/rtabmap/describe_parameters: rcl_interfaces/srv/DescribeParameters
/rtabmap/rtabmap/detect_more_loop_closures: rtabmap_msgs/srv/DetectMoreLoopClosures
/rtabmap/rtabmap/get_map: nav_msgs/srv/GetMap
/rtabmap/rtabmap/get_map_data: rtabmap_msgs/srv/GetMap
/rtabmap/rtabmap/get_map_data2: rtabmap_msgs/srv/GetMap2
/rtabmap/rtabmap/get_node_data: rtabmap_msgs/srv/GetNodeData
/rtabmap/rtabmap/get_nodes_in_radius: rtabmap_msgs/srv/GetNodesInRadius
/rtabmap/rtabmap/get_parameter_types: rcl_interfaces/srv/GetParameterTypes
/rtabmap/rtabmap/get_parameters: rcl_interfaces/srv/GetParameters
/rtabmap/rtabmap/get_plan: nav_msgs/srv/GetPlan
/rtabmap/rtabmap/get_plan_nodes: rtabmap_msgs/srv/GetPlan
/rtabmap/rtabmap/get_prob_map: nav_msgs/srv/GetMap
/rtabmap/rtabmap/get_type_description: type_description_interfaces/srv/GetTypeDescription
/rtabmap/rtabmap/global_bundle_adjustment: rtabmap_msgs/srv/GlobalBundleAdjustment
/rtabmap/rtabmap/list_labels: rtabmap_msgs/srv/ListLabels
/rtabmap/rtabmap/list_parameters: rcl_interfaces/srv/ListParameters
/rtabmap/rtabmap/load_database: rtabmap_msgs/srv/LoadDatabase
/rtabmap/rtabmap/log_debug: std_srvs/srv/Empty
/rtabmap/rtabmap/log_error: std_srvs/srv/Empty
/rtabmap/rtabmap/log_info: std_srvs/srv/Empty
/rtabmap/rtabmap/log_warning: std_srvs/srv/Empty
/rtabmap/rtabmap/octomap_binary: octomap_msgs/srv/GetOctomap
/rtabmap/rtabmap/octomap_full: octomap_msgs/srv/GetOctomap
/rtabmap/rtabmap/pause: std_srvs/srv/Empty
/rtabmap/rtabmap/publish_map: rtabmap_msgs/srv/PublishMap
/rtabmap/rtabmap/remove_label: rtabmap_msgs/srv/RemoveLabel
/rtabmap/rtabmap/reset: std_srvs/srv/Empty
/rtabmap/rtabmap/resume: std_srvs/srv/Empty
/rtabmap/rtabmap/set_goal: rtabmap_msgs/srv/SetGoal
/rtabmap/rtabmap/set_label: rtabmap_msgs/srv/SetLabel
/rtabmap/rtabmap/set_mode_localization: std_srvs/srv/Empty
/rtabmap/rtabmap/set_mode_mapping: std_srvs/srv/Empty
/rtabmap/rtabmap/set_parameters: rcl_interfaces/srv/SetParameters
/rtabmap/rtabmap/set_parameters_atomically: rcl_interfaces/srv/SetParametersAtomically
/rtabmap/rtabmap/trigger_new_map: std_srvs/srv/Empty
/rtabmap/rtabmap/update_parameters: std_srvs/srv/Empty
Service Clients:
/rtabmap/rtabmap/describe_parameters: rcl_interfaces/srv/DescribeParameters
/rtabmap/rtabmap/get_parameter_types: rcl_interfaces/srv/GetParameterTypes
/rtabmap/rtabmap/get_parameters: rcl_interfaces/srv/GetParameters
/rtabmap/rtabmap/list_parameters: rcl_interfaces/srv/ListParameters
/rtabmap/rtabmap/set_parameters: rcl_interfaces/srv/SetParameters
/rtabmap/rtabmap/set_parameters_atomically: rcl_interfaces/srv/SetParametersAtomically
Action Servers:
Action Clients:
导航
NAV2
(1)安装启动
# 安装 Nav2 的核心带起动包
sudo apt install ros-jazzy-nav2-bringup
# 这是一个“模拟启动”,虽然没有地图,但会把所有节点拉起来
ros2 launch nav2_bringup bringup_launch.py \
use_sim_time:=false \
map:=/dev/null \
autostart:=true
(2)查看输入输出
查看输入
ros2 node list | grep nav2
# 随便挑一个核心节点查,比如 bt_navigator
ros2 node info /bt_navigator
ros2 node info /bt_navigator
/bt_navigator
Subscribers:
/goal_pose: geometry_msgs/msg/PoseStamped
/odom: nav_msgs/msg/Odometry
/parameter_events: rcl_interfaces/msg/ParameterEvent
/tf: tf2_msgs/msg/TFMessage
/tf_static: tf2_msgs/msg/TFMessage
Publishers:
/bt_navigator/transition_event: lifecycle_msgs/msg/TransitionEvent
/parameter_events: rcl_interfaces/msg/ParameterEvent
/rosout: rcl_interfaces/msg/Log
Service Servers:
/bt_navigator/change_state: lifecycle_msgs/srv/ChangeState
/bt_navigator/describe_parameters: rcl_interfaces/srv/DescribeParameters
/bt_navigator/get_available_states: lifecycle_msgs/srv/GetAvailableStates
/bt_navigator/get_available_transitions: lifecycle_msgs/srv/GetAvailableTransitions
/bt_navigator/get_parameter_types: rcl_interfaces/srv/GetParameterTypes
/bt_navigator/get_parameters: rcl_interfaces/srv/GetParameters
/bt_navigator/get_state: lifecycle_msgs/srv/GetState
/bt_navigator/get_transition_graph: lifecycle_msgs/srv/GetAvailableTransitions
/bt_navigator/get_type_description: type_description_interfaces/srv/GetTypeDescription
/bt_navigator/list_parameters: rcl_interfaces/srv/ListParameters
/bt_navigator/set_parameters: rcl_interfaces/srv/SetParameters
/bt_navigator/set_parameters_atomically: rcl_interfaces/srv/SetParametersAtomically
Service Clients:
Action Servers:
/navigate_through_poses: nav2_msgs/action/NavigateThroughPoses
/navigate_to_pose: nav2_msgs/action/NavigateToPose
Action Clients:
/navigate_to_pose: nav2_msgs/action/NavigateToPose
查看输出
ros2 node info /controller_server
ros2 node info /controller_server
/controller_server
Subscribers:
/odom: nav_msgs/msg/Odometry
/parameter_events: rcl_interfaces/msg/ParameterEvent
/speed_limit: nav2_msgs/msg/SpeedLimit
Publishers:
/cmd_vel_nav: geometry_msgs/msg/Twist
/controller_server/transition_event: lifecycle_msgs/msg/TransitionEvent
/optimal_trajectory: nav_msgs/msg/Path
/parameter_events: rcl_interfaces/msg/ParameterEvent
/rosout: rcl_interfaces/msg/Log
/trajectories: visualization_msgs/msg/MarkerArray
/transformed_global_plan: nav_msgs/msg/Path
Service Servers:
/controller_server/change_state: lifecycle_msgs/srv/ChangeState
/controller_server/describe_parameters: rcl_interfaces/srv/DescribeParameters
/controller_server/get_available_states: lifecycle_msgs/srv/GetAvailableStates
/controller_server/get_available_transitions: lifecycle_msgs/srv/GetAvailableTransitions
/controller_server/get_parameter_types: rcl_interfaces/srv/GetParameterTypes
/controller_server/get_parameters: rcl_interfaces/srv/GetParameters
/controller_server/get_state: lifecycle_msgs/srv/GetState
/controller_server/get_transition_graph: lifecycle_msgs/srv/GetAvailableTransitions
/controller_server/get_type_description: type_description_interfaces/srv/GetTypeDescription
/controller_server/list_parameters: rcl_interfaces/srv/ListParameters
/controller_server/set_parameters: rcl_interfaces/srv/SetParameters
/controller_server/set_parameters_atomically: rcl_interfaces/srv/SetParametersAtomically
Service Clients:
Action Servers:
/follow_path: nav2_msgs/action/FollowPath
Action Clients:
传感器融合:EKF
(1)安装启动
sudo apt install ros-jazzy-robot-localization
ros2 launch robot_localization ekf.launch.py
(2)查看输入输出
ros2 node info /ekf_filter_node
ros2 node info /ekf_filter_node
/ekf_filter_node
Subscribers:
/cmd_vel: geometry_msgs/msg/Twist
/example/imu: sensor_msgs/msg/Imu
/example/odom: nav_msgs/msg/Odometry
/example/odom2: nav_msgs/msg/Odometry
/example/pose: geometry_msgs/msg/PoseWithCovarianceStamped
/example/twist: geometry_msgs/msg/TwistWithCovarianceStamped
/parameter_events: rcl_interfaces/msg/ParameterEvent
/set_pose: geometry_msgs/msg/PoseWithCovarianceStamped
Publishers:
/diagnostics: diagnostic_msgs/msg/DiagnosticArray
/odometry/filtered: nav_msgs/msg/Odometry
/parameter_events: rcl_interfaces/msg/ParameterEvent
/rosout: rcl_interfaces/msg/Log
/tf: tf2_msgs/msg/TFMessage
Service Servers:
/ekf_filter_node/describe_parameters: rcl_interfaces/srv/DescribeParameters
/ekf_filter_node/get_parameter_types: rcl_interfaces/srv/GetParameterTypes
/ekf_filter_node/get_parameters: rcl_interfaces/srv/GetParameters
/ekf_filter_node/get_type_description: type_description_interfaces/srv/GetTypeDescription
/ekf_filter_node/list_parameters: rcl_interfaces/srv/ListParameters
/ekf_filter_node/set_parameters: rcl_interfaces/srv/SetParameters
/ekf_filter_node/set_parameters_atomically: rcl_interfaces/srv/SetParametersAtomically
/enable: std_srvs/srv/Empty
/reset: std_srvs/srv/Empty
/set_pose: robot_localization/srv/SetPose
/toggle: robot_localization/srv/ToggleFilterProcessing
Service Clients:
Action Servers:
Action Clients: