获取机器人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/
目录
相关文章
|
14天前
|
传感器 算法 机器人
机器人SLAM建图与自主导航
前言 这篇文章我开始和大家一起探讨机器人SLAM建图与自主导航 ,在前面的内容中,我们介绍了差速轮式机器人的概念及应用,谈到了使用Gazebo平台搭建仿真环境的教程,主要是利用gmapping slam算法,生成一张二维的仿真环境地图 。我们也会在这篇文章中继续介绍并使用这片二维的仿真环境地图,用于我们的演示。 教程 SLAM算法的引入 (1)SLAM:Simultaneous Localization and Mapping,中文是即时定位与地图构建,所谓的SLAM算法准确说是能实现SLAM功能的算法,而不是某一个具体算法。 (2)现在各种机器人研发和商用化非常火 ,所有的自主机器
|
2月前
|
机器学习/深度学习 传感器 算法
深度学习之基于视觉的机器人导航
基于深度学习的视觉机器人导航是一种通过深度学习算法结合视觉感知系统(如摄像头、LiDAR等)实现机器人在复杂环境中的自主导航的技术。
105 5
|
2月前
|
机器学习/深度学习 算法 数据可视化
基于QLearning强化学习的机器人避障和路径规划matlab仿真
本文介绍了使用MATLAB 2022a进行强化学习算法仿真的效果,并详细阐述了Q-Learning原理及其在机器人避障和路径规划中的应用。通过Q-Learning算法,机器人能在未知环境中学习到达目标的最短路径并避开障碍物。仿真结果展示了算法的有效性,核心程序实现了Q表的更新和状态的可视化。未来研究可扩展至更复杂环境和高效算法。![](https://ucc.alicdn.com/pic/developer-ecology/nymobwrkkdwks_d3b95a2f4fd2492381e1742e5658c0bc.gif)等图像展示了具体仿真过程。
119 0
|
2月前
|
机器学习/深度学习 传感器 安全
基于模糊神经网络的移动机器人路径规划matlab仿真
该程序利用模糊神经网络实现移动机器人的路径规划,能在含5至7个静态未知障碍物的环境中随机导航。机器人配备传感器检测前方及其两侧45度方向上的障碍物距离,并根据这些数据调整其速度和方向。MATLAB2022a版本下,通过模糊逻辑处理传感器信息,生成合理的路径,确保机器人安全到达目标位置。以下是该程序在MATLAB2022a下的测试结果展示。
|
4月前
|
数据可视化 机器人 Python
实例8:机器人的空间描述和变换仿真
本文是关于机器人空间描述和变换的仿真实验教程,通过Python编程和可视化学习,介绍了刚体的平动和转动、位姿描述、坐标变换等基础知识,并提供了具体的实验步骤和代码实现。实验目的是让读者通过编程实践,了解和掌握空间变换的数学原理和操作方法。
55 2
实例8:机器人的空间描述和变换仿真
|
4月前
|
XML 传感器 数据可视化
09 机器人仿真Gazebo实例
本文详细介绍了在ROS(机器人操作系统)中使用Gazebo进行机器人仿真的流程,包括安装Gazebo、创建URDF模型、使用xacro优化URDF、配置ROS_control以及为模型添加Gazebo属性和控制器插件,并提供了相应的示例代码。
248 0
|
6月前
|
机器学习/深度学习 传感器 算法
强化学习(RL)在机器人领域的应用,尤其是结合ROS(Robot Operating System)和Gazebo(机器人仿真环境)
强化学习(RL)在机器人领域的应用,尤其是结合ROS(Robot Operating System)和Gazebo(机器人仿真环境)
282 2
|
7月前
|
机器学习/深度学习 算法 机器人
论文介绍:使用仿真和领域适应提高深度机器人抓取效率
【5月更文挑战第11天】研究人员提出结合仿真数据和领域适应技术提升深度机器人抓取效率。通过在仿真环境中生成多样化抓取数据并使用GraspGAN和DANN进行像素级和特征级适应,使模型能在现实世界中更好地泛化。实验表明,这种方法能减少现实数据需求,同时保持高抓取性能。尽管面临物理差异和成功率挑战,该研究为机器人抓取技术的进步提供了新途径。论文链接:https://arxiv.org/abs/1709.07857
86 5
|
7月前
|
机器学习/深度学习 机器人
LabVIEW对并行机器人结构进行建模仿真
LabVIEW对并行机器人结构进行建模仿真
53 0
|
7月前
|
机器人 Python
Moveit + Gazebo实现联合仿真:ABB yumi双臂机器人( 二、双臂协同运动实现 )
Moveit + Gazebo实现联合仿真:ABB yumi双臂机器人( 二、双臂协同运动实现 )
下一篇
DataWorks