获取机器人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入门实践
本课程将基于基础设施即代码 IaC 的理念,介绍阿里云自动化编排服务ROS的概念、功能和使用方式,并通过实际应用场景介绍如何借助ROS实现云资源的自动化部署,使得云上资源部署和运维工作更为高效。
目录
相关文章
|
传感器 算法 机器人
机器人SLAM建图与自主导航:从基础到实践
通过Gazebo平台和gmapping算法成功生成并保存了一张二维仿真环境地图,为后续的机器人自主导航实验奠定了基础。完整代码及更多细节可参考[GitHub仓库](https://github.com/Jieshoudaxue/ros_senior/tree/main/mbot_navigation/config/move_base)。
3469 23
|
传感器 算法 机器人
机器人SLAM建图与自主导航
前言 这篇文章我开始和大家一起探讨机器人SLAM建图与自主导航 ,在前面的内容中,我们介绍了差速轮式机器人的概念及应用,谈到了使用Gazebo平台搭建仿真环境的教程,主要是利用gmapping slam算法,生成一张二维的仿真环境地图 。我们也会在这篇文章中继续介绍并使用这片二维的仿真环境地图,用于我们的演示。 教程 SLAM算法的引入 (1)SLAM:Simultaneous Localization and Mapping,中文是即时定位与地图构建,所谓的SLAM算法准确说是能实现SLAM功能的算法,而不是某一个具体算法。 (2)现在各种机器人研发和商用化非常火 ,所有的自主机器
1412 9
|
机器学习/深度学习 传感器 算法
深度学习之基于视觉的机器人导航
基于深度学习的视觉机器人导航是一种通过深度学习算法结合视觉感知系统(如摄像头、LiDAR等)实现机器人在复杂环境中的自主导航的技术。
1098 5
|
XML 传感器 数据可视化
09 机器人仿真Gazebo实例
本文详细介绍了在ROS(机器人操作系统)中使用Gazebo进行机器人仿真的流程,包括安装Gazebo、创建URDF模型、使用xacro优化URDF、配置ROS_control以及为模型添加Gazebo属性和控制器插件,并提供了相应的示例代码。
2494 0
|
机器学习/深度学习 传感器 算法
强化学习(RL)在机器人领域的应用,尤其是结合ROS(Robot Operating System)和Gazebo(机器人仿真环境)
强化学习(RL)在机器人领域的应用,尤其是结合ROS(Robot Operating System)和Gazebo(机器人仿真环境)
1454 2
|
传感器 算法 机器人
植保机器人环境感知地理定位与导航
植保机器人环境感知地理定位与导航
384 4
|
传感器 机器学习/深度学习 算法
植保机器人自主导航
植保机器人自主导航
478 1
移动机器人和UGV的自主导航(Matlab代码&Simulink)
移动机器人和UGV的自主导航(Matlab代码&Simulink)
374 0
|
算法 机器人 定位技术
ROS中阶笔记(八):机器人SLAM与自主导航—机器人自主导航
ROS中阶笔记(八):机器人SLAM与自主导航—机器人自主导航
2369 0
ROS中阶笔记(八):机器人SLAM与自主导航—机器人自主导航
|
传感器 算法 机器人
ROS中阶笔记(七):机器人SLAM与自主导航—SLAM功能包的使用(下)
ROS中阶笔记(七):机器人SLAM与自主导航—SLAM功能包的使用
1264 0
ROS中阶笔记(七):机器人SLAM与自主导航—SLAM功能包的使用(下)

热门文章

最新文章