在Gazebo中显示模型轨迹

文章介绍了如何在Gazebo仿真环境中使用自定义插件来显示机器人执行SLAM或路径规划时的实际轨迹。用户可以从宇树机器人的GitHub仓库中获取源码,将插件集成到工作空间,并参照提供的launch和urdf文件进行配置。关键在于使用root_.xacro定义模型起点,确保轨迹正确显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Gazebo中显示模型轨迹

在跑slam或者路径规划仿真时,想要对比一下在Gazebo中机器人实际走过的路径,需要插件在Gazebo中渲染真值,如下图。在这里插入图片描述
这里参考宇树机器人(UnitreeRobotics),自己修改了一下插件,可以显示Gazebo中机器人走过的真值。
这个插件的代码在Github:https://github.com/Luchuanzhao/Gazebo_trajectory_display

用法

在github仓库中有launchsrcurdf三个文件夹:
在这里插入图片描述
其中src中是插件的源码,在用到时放在工作空间中,然后根据我CMakelists.txt中的配置,在你自己的CMakelists.txt中添加以下注册插件的配置。
另外两个文件夹中是用法的示例,在你自己的launch文件中按照我里面注释的方法,把对应的代码加进去。还有在urdf文件夹下有root_.xacro,这是定义一个模型在原点,轨迹就是从这里开始算的。(只有这样轨迹才能显示,我也不知道有没有别的好方法)
上述这些文件都是示例,如果用在自己的仿真文件中,要根据文件中的注释进行相应地修改。只有src中的是插件源码,需要放在工作空间中编译。

### 记录Gazebo仿真中的模型运动轨迹 为了在Gazebo仿真环境中记录模型的运动轨迹,可以采用多种方法来实现这一目标。一种常见的方式是利用ROS(Robot Operating System)节点订阅特定链接(link)的姿态信息,并将其保存到文件中以便后续分析。 #### 使用`/gazebo/get_link_state`服务获取姿态数据 通过调用`/gazebo/get_link_state`服务可以直接查询指定链接的状态,包括位置和方向等信息。这允许开发者周期性地请求这些数据点并存储起来形成轨迹[^2]。 ```bash rosservice call /gazebo/get_link_state "{link_name: 'robot::link', reference_frame: ''}" ``` #### 利用ROS话题监听器收集数据 另一种更高效的方法是在启动仿真的时候设置一个专门的话题监听器,它会持续接收来自Gazebo发布的关于物体变换的消息。例如,如果要跟踪的是UR5机器人末端执行器,则可以选择监听其对应的TF转换消息: ```python import rospy from tf import TransformListener def record_trajectory(): listener = TransformListener() rate = rospy.Rate(10.0) while not rospy.is_shutdown(): try: (trans, rot) = listener.lookupTransform('/world', '/ee_link', rospy.Time(0)) with open('trajectory.txt', 'a') as f: timestamp = rospy.get_time() line = f"{timestamp},{trans[0]},{trans[1]},{trans[2]}\n" f.write(line) except Exception as e: continue rate.sleep() if __name__ == '__main__': rospy.init_node('record_trajectory') record_trajectory() ``` 此脚本会在每次迭代时查找世界坐标系下相对于末端执行器(`/ee_link`)的位置变化,并将时间戳以及三维空间内的坐标追加写入名为`trajectory.txt`的日志文件。 #### 结合rviz进行可视化验证 除了上述两种方式外,在实际操作过程中还可以借助RVIZ工具来进行即时性的路径显示。只需确保已安装好必要的插件并将相应的标记类型配置为Path即可轻松完成这项工作[^3]。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值