获取机器人turtlebot3 在gazebo 中仿真导航时的位姿真值

简介: 获取机器人turtlebot3 在gazebo 中仿真导航时的位姿真值

背景:机器人在gazebo环境中仿真导航,除了实时获取传感器数据估计机器人位姿外,为了验证定位算法的精度,我们需要获得机器人在gazebo worlds下的真实位姿。

方法一:在机器人模型的urdf文件或者sdf文件中加入一个ros plugin——libgazebo_ros_p3d。

以turtlebot3_waffle_pi 为例:

(1)找到 turtlebot3 gazebo 模型的description文件

wsx@hello:~/catkin_ws$ rospack find turtlebot3_description
/opt/ros/kinetic/share/turtlebot3_description

(2) 进入/opt/ros/kinetic/share/turtlebot3_description/ 打开turtlebot3_waffle_pi.gazebo.xacro文件:具体如下:

wsx@hello:~/catkin_ws$ cd
wsx@hello:~$ cd /opt/ros/kinetic/share/turtlebot3_description
wsx@hello:/opt/ros/kinetic/share/turtlebot3_description$ ls
cmake  meshes  package.xml  rviz  urdf
wsx@hello:/opt/ros/kinetic/share/turtlebot3_description$ cd urdf
wsx@hello:/opt/ros/kinetic/share/turtlebot3_description/urdf$ ls
common_properties.xacro
turtlebot3_burger_for_autorace_2020.gazebo.xacro
turtlebot3_burger_for_autorace_2020.urdf.xacro
turtlebot3_burger_for_autorace.gazebo.xacro
turtlebot3_burger_for_autorace.urdf.xacro
turtlebot3_burger.gazebo.xacro
turtlebot3_burger.urdf.xacro
turtlebot3_waffle_for_open_manipulator.urdf.xacro
turtlebot3_waffle.gazebo.xacro
turtlebot3_waffle_pi_for_open_manipulator.gazebo.xacro
turtlebot3_waffle_pi_for_open_manipulator.urdf.xacro
turtlebot3_waffle_pi.gazebo.xacro
turtlebot3_waffle_pi.urdf.xacro
turtlebot3_waffle.urdf.xacro
wsx@hello:/opt/ros/kinetic/share/turtlebot3_description/urdf$ sudo gedit turtlebot3_waffle_pi.gazebo.xacro

在urtlebot3_waffle_pi.gazebo.xacro文件后面将以下代码加入

<gazebo>
  <plugin name="p3d_base_controller" filename="libgazebo_ros_p3d.so">
    <alwaysOn>true</alwaysOn>
    <updateRate>50.0</updateRate>
    <bodyName>base_link</bodyName>
    <topicName>ground_truth/state</topicName>
    <gaussianNoise>0.01</gaussianNoise>
    <frameName>world</frameName>
    <xyzOffsets>0 0 0</xyzOffsets>
    <rpyOffsets>0 0 0</rpyOffsets>
  </plugin>
</gazebo>

保存退出

(3)重新启动turtlebot3_gazebo的导航仿真,再打开新终端,运行rostopic list 查看topic。

$ rostopic list

可以看到 /ground_truth/state 的话题。

rostopic echo /ground_truth/state

可以查看该topic 位姿的具体信息

header: 
  seq: 207
  stamp: 
    secs: 1337
    nsecs: 705000000
  frame_id: "world"
child_frame_id: "base_footprint"
pose: 
  pose: 
    position: 
      x: -4.5942145711
      y: -4.00644960896
      z: -0.0110085024163
    orientation: 
      x: 0.000522316202193
      y: -0.00150770718405
      z: -0.32162607462
      w: -0.946865419228
  covariance: [0.0001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0001]
twist: 
  twist: 
    linear: 
      x: 0.198892491109
      y: 0.161655496399
      z: 0.00287990416913
    angular: 
      x: 0.00520107668762
      y: 0.0103735001011
      z: 0.299275027601
  covariance: [0.0001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0001]

base_footprint到base_link的坐标变换是:0 0 0.1 0 0 0,两者的z坐标不一样,base_link一般是与机器人中心重合,而base_footprint是base_link原点在地面的投影(所以z坐标不一样)。

其他方法参考

如何获得gazebo仿真中的机器人位姿真值_寒墨阁的博客-CSDN博客_gazebo获取机器人位置


相关实践学习
使用ROS创建VPC和VSwitch
本场景主要介绍如何利用阿里云资源编排服务,定义资源编排模板,实现自动化创建阿里云专有网络和交换机。
阿里云资源编排ROS使用教程
资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、配置等,并自动完成所有资源的创建和配置,以达到自动化部署、运维等目的。编排模板同时也是一种标准化的资源和应用交付方式,并且可以随时编辑修改,使基础设施即代码(Infrastructure as Code)成为可能。 产品详情:https://www.aliyun.com/product/ros/
目录
打赏
0
0
0
1
20
分享
相关文章
基于QLearning强化学习的较大规模栅格地图机器人路径规划matlab仿真
本项目基于MATLAB 2022a,通过强化学习算法实现机器人在栅格地图中的路径规划。仿真结果显示了机器人从初始位置到目标位置的行驶动作序列(如“下下下下右右...”),并生成了详细的路径图。智能体通过Q-Learning算法与环境交互,根据奖励信号优化行为策略,最终学会最优路径。核心程序实现了效用值排序、状态转换及动作选择,并输出机器人行驶的动作序列和路径可视化图。
434 85
基于Qlearning强化学习的机器人迷宫路线搜索算法matlab仿真
本内容展示了基于Q-learning算法的机器人迷宫路径搜索仿真及其实现过程。通过Matlab2022a进行仿真,结果以图形形式呈现,无水印(附图1-4)。算法理论部分介绍了Q-learning的核心概念,包括智能体、环境、状态、动作和奖励,以及Q表的构建与更新方法。具体实现中,将迷宫抽象为二维网格世界,定义起点和终点,利用Q-learning训练机器人找到最优路径。核心程序代码实现了多轮训练、累计奖励值与Q值的可视化,并展示了机器人从起点到终点的路径规划过程。
72 0
基于Qlearning强化学习的机器人路线规划matlab仿真
本内容展示了基于Q-learning强化学习算法的路径规划研究,包括MATLAB仿真效果、理论知识及核心代码。通过训练与测试,智能体在离散化网格环境中学习最优策略以规避障碍并到达目标。代码实现中采用epsilon-贪婪策略平衡探索与利用,并针对紧急情况设计特殊动作逻辑(如后退)。最终,Q-table收敛后可生成从起点到终点的最优路径,为机器人导航提供有效解决方案。
174 20
基于模糊PID控制器的puma560机器人控制系统的simulink建模与仿真
本课题研究基于模糊PID控制器的PUMA 560机器人控制系统建模与仿真,对比传统PID控制器性能。通过Simulink实现系统建模,分析两种控制器的误差表现。模糊PID结合了PID的线性控制优势与模糊逻辑的灵活性,提升动态性能和抗干扰能力。以PUMA 560机器人为例,其运动学和动力学模型为基础,设计针对各关节的模糊PID控制器,包括模糊化、规则制定、推理及去模糊化等步骤,最终实现更优的控制效果。
基于DWA优化算法的机器人路径规划matlab仿真
本项目基于DWA优化算法实现机器人路径规划的MATLAB仿真,适用于动态环境下的自主导航。使用MATLAB2022A版本运行,展示路径规划和预测结果。核心代码通过散点图和轨迹图可视化路径点及预测路径。DWA算法通过定义速度空间、采样候选动作并评估其优劣(目标方向性、障碍物距离、速度一致性),实时调整机器人运动参数,确保安全避障并接近目标。
249 68
四自由度SCARA机器人的运动学和动力学matlab建模与仿真
本课题深入研究SCARA机器人系统,提出其动力学与运动学模型,并基于MATLAB Robotics Toolbox建立四自由度SCARA机器人仿真对象。通过理论结合仿真实验,实现了运动学正解、逆解及轨迹规划等功能,完成系统实验和算法验证。SCARA机器人以其平面关节结构实现快速定位与装配,在自动生产线中广泛应用,尤其在电子和汽车行业表现优异。使用D-H参数法进行结构建模,推导末端执行器的位姿,建立了机器人的运动学方程。
基于PID控制器的六自由度串联机器人控制系统的simulink建模与仿真
本课题基于MATLAB2022a的Simulink环境,对六自由度串联机器人控制系统进行建模与仿真,采用PID控制器实现关节的位置、速度或力矩控制。PID控制器通过比例、积分、微分三种策略有效减小系统误差,提高响应速度和稳定性。仿真结果显示系统运行良好,无水印。尽管PID控制简单实用,但在复杂动力学环境下,常结合其他控制策略以增强鲁棒性。
机器人SLAM建图与自主导航:从基础到实践
通过Gazebo平台和gmapping算法成功生成并保存了一张二维仿真环境地图,为后续的机器人自主导航实验奠定了基础。完整代码及更多细节可参考[GitHub仓库](https://github.com/Jieshoudaxue/ros_senior/tree/main/mbot_navigation/config/move_base)。
507 23
机器人SLAM建图与自主导航
前言 这篇文章我开始和大家一起探讨机器人SLAM建图与自主导航 ,在前面的内容中,我们介绍了差速轮式机器人的概念及应用,谈到了使用Gazebo平台搭建仿真环境的教程,主要是利用gmapping slam算法,生成一张二维的仿真环境地图 。我们也会在这篇文章中继续介绍并使用这片二维的仿真环境地图,用于我们的演示。 教程 SLAM算法的引入 (1)SLAM:Simultaneous Localization and Mapping,中文是即时定位与地图构建,所谓的SLAM算法准确说是能实现SLAM功能的算法,而不是某一个具体算法。 (2)现在各种机器人研发和商用化非常火 ,所有的自主机器
299 9
深度学习之基于视觉的机器人导航
基于深度学习的视觉机器人导航是一种通过深度学习算法结合视觉感知系统(如摄像头、LiDAR等)实现机器人在复杂环境中的自主导航的技术。
407 5

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等