从论文到代码:路径规划、SLAM、导航堆栈、Gazebo仿真,配可运行的在线Demo
ROS2 放弃 ROS1 的 TCPPROS/UDPROS 和中心化 Master,全面采用 DDS(Data Distribution Service) 作为通信中间件。DDS 是 OMG 制定的分布式实时通信标准,最大变革:节点无需 Master 协调,可直接发现彼此。优势:① 去中心化;② 天然支持跨主机通信;③ 可配置 QoS 策略。
DDS 的 QoS 策略是 ROS2 区别于 ROS1 的核心功能,理解 QoS 是调参和排查通信问题的前提:
访问 仿真平台,下载 Python 客户端脚本,在有 ROS2 Humble 的机器上运行:
# yicheai_ros2_client.py - Python ROS2 仿真客户端
# 下载: https://yicheai.cn/sim_ros2.html
import rclpy
from rclpy.node import Node
from geometry_msgs.msg import Twist
from sensor_msgs.msg import LaserScan
import socketio
class YiBotClient(Node):
def __init__(self):
super().__init__('yicheai_client')
self.pub = self.create_publisher(Twist, '/cmd_vel', 10)
self.sub = self.create_subscription(LaserScan, '/scan', self.on_scan, 10)
self.sio = socketio.Client()
self.sio.connect('wss://yicheai.cn/sim/ws')
def on_scan(self, msg):
self.sio.emit('scan_data', {'ranges': list(msg.ranges)})
rclpy.init()
node = YiBotClient()
rclpy.spin_once(node)
rclpy.shutdown()Nav2 是 ROS2 官方导航框架。核心模块:Planner(全局路径)、Controller(局部控制)、BehaviorTree(行为树)。详解调参方法与常见问题排查。
A* 通过启发式函数优先探索最有希望的节点,相比 Dijkstra 的 O(V²) 平均复杂度降至 O(bd)。本文通过本平台 nav-sim 交互式 Demo 演示两者差异。
使用 SDF 构建仿真世界,包括静态几何体(地板、墙壁)、机器人模型、激光雷达和 IMU 插件的配置方法。附完整 world 文件示例。
详解 Publisher/Subscriber 模型,通过 rqt_graph 可视化话题连接。包含 rqt、rqt_graph、rqt_topic 等常用调试工具的实操演示。
激光 SLAM 核心:scan-matching(ICP/CSM)用于位姿估计,闭环检测消除漂移。Cartographer 的 Submap + PoseGraph 架构详解。
四种搜索算法在迷宫环境中的实际表现差异。BFS 保证最优但慢;Greedy 贪心加速但可能非最优;Dijkstra 适合有权图;A* 综合两者优势。
Gazebo 中使用 libgazebo_ros_ray_sensor 配置激光雷达,包括扫描角度范围、最大射程、噪声参数(均值、标准差)以及多回波模式的设置。
RobotModel、LaserScan、Path、Map 等常用插件配置。以及用 visualization_msgs/Marker 绘制自定义图形:箭头、文字、网格、点云着色(按距离/强度)。
使用 Python launch 文件同时启动多个节点、加载参数文件、配置命名空间和 remapping。包含可重用的 ComponentContainer 与 ComposableNode 的用法。
港科大(广州)提出基于激光雷达的端到端强化学习框架,让四足机器人(如宇树G1)实现 0.5s 内响应躲避动态障碍物。核心模块 PD-RiskNet 直接处理原始点云进行风险评估,支持 Isaac Gym / Genesis / MuJoCo 仿真。
© 2026 yicheai.cn · ROS机器人在线仿真平台 · yicheai.cn · GitHub