在 RViz2 中显示圆形轨迹(推测 “原型轨迹” 为笔误),核心是通过发布符合 ROS 2 消息规范的路径数据(Path 消息) 或标记数据(Marker 消息) ,让 RViz2 订阅并渲染。以下是两种最常用的实现方案,包含完整代码、配置步骤和关键说明。
核心原理
RViz2 本身不生成轨迹,需通过 ROS 2 节点发布轨迹数据:
- Path 消息:用于表示机器人的规划路径,默认显示为 “线段 + 箭头”,适合体现轨迹的方向性;
- Marker 消息:用于自定义图形(如圆、点、线),可灵活控制颜色、线宽、是否填充,适合纯视觉化的圆形轨迹。
两种方案均需依赖nav_msgs(Path 消息)或visualization_msgs(Marker 消息)功能包,且需确保 RViz2 正确订阅话题、配置坐标系。
方案一:通过 Path 消息显示圆形轨迹(推荐,带方向)
1. 环境准备
确保已创建 ROS 2 工作空间(如colcon_ws),并安装依赖:
bash
# 安装依赖包(Noetic对应ROS 1,Foxy/Humble对应ROS 2,根据版本选择)
sudo apt install ros-humble-nav-msgs ros-humble-visualization-msgs ros-humble-rviz2
2. 编写发布节点(Python)
创建功能包并编写节点,生成圆形的离散路径点,封装为 Path 消息发布。
步骤 1:创建功能包
bash
cd ~/colcon_ws/src
ros2 pkg create --build-type ament_python circle_trajectory --dependencies rclpy nav_msgs geometry_msgs
cd circle_trajectory
步骤 2:编写代码(circle_path_publisher.py)
在circle_trajectory/circle_trajectory目录下创建文件,代码功能:
- 生成圆形轨迹的离散点(角度从 0 到 2π,步长可调整);
- 将点封装为
Path消息(包含多个PoseStamped位姿); - 以固定频率(10Hz)发布到
/circle_path话题。
python
运行
import rclpy
from rclpy.node import Node
from nav_msgs.msg import Path
from geometry_msgs.msg import PoseStamped, Point, Quaternion
import math
class CirclePathPublisher(Node):
def __init__(self):
super().__init__('circle_path_publisher')
# 1. 配置圆形参数(可根据需求修改)
self.radius = 1.0 # 圆的半径(单位:米)
self.center_x = 0.0 # 圆心X坐标(相对于base_link或map)
self.center_y = 0.0 # 圆心Y坐标
self.angle_step = 0.1 # 角度步长(越小轨迹越平滑,建议0.05~0.2)
self.frame_id = "base_link" # 轨迹的坐标系(关键!需与RViz2一致)
# 2. 创建Path消息发布者
self.path_pub = self.create_publisher(Path, '/circle_path', 10)
# 3. 定时发布(10Hz)
self.timer = self.create_timer(0.1, self.publish_circle_path)
self.get

最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



