获取机器人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/
目录
相关文章
|
机器人 Java Linux
Webots机器人仿真入门(一)
Webots是一个开源的移动机器人仿真模拟器,内置了许多机器人模型。机器人造价普遍超出新手承受范围,对于新手来说使用仿真软件入门是一个不错的选择。
Webots机器人仿真入门(一)
|
5天前
|
传感器 人工智能 文字识别
OrangePi AIpro 机器人仿真与人工智能应用测评(下)
OrangePi AIpro 机器人仿真与人工智能应用测评(下)
26 11
|
5天前
|
人工智能 Ubuntu 机器人
OrangePi AIpro 机器人仿真与人工智能应用测评(上)
OrangePi AIpro 机器人仿真与人工智能应用测评
25 8
|
2月前
|
机器学习/深度学习 传感器 算法
强化学习(RL)在机器人领域的应用,尤其是结合ROS(Robot Operating System)和Gazebo(机器人仿真环境)
强化学习(RL)在机器人领域的应用,尤其是结合ROS(Robot Operating System)和Gazebo(机器人仿真环境)
84 2
|
3月前
|
机器学习/深度学习 算法 机器人
论文介绍:使用仿真和领域适应提高深度机器人抓取效率
【5月更文挑战第11天】研究人员提出结合仿真数据和领域适应技术提升深度机器人抓取效率。通过在仿真环境中生成多样化抓取数据并使用GraspGAN和DANN进行像素级和特征级适应,使模型能在现实世界中更好地泛化。实验表明,这种方法能减少现实数据需求,同时保持高抓取性能。尽管面临物理差异和成功率挑战,该研究为机器人抓取技术的进步提供了新途径。论文链接:https://arxiv.org/abs/1709.07857
46 5
|
3月前
|
机器学习/深度学习 机器人
LabVIEW对并行机器人结构进行建模仿真
LabVIEW对并行机器人结构进行建模仿真
25 0
|
3月前
|
机器人 Python
Moveit + Gazebo实现联合仿真:ABB yumi双臂机器人( 二、双臂协同运动实现 )
Moveit + Gazebo实现联合仿真:ABB yumi双臂机器人( 二、双臂协同运动实现 )
|
算法 机器人
三自由度PUMA机器人非线性控制研究(Matlab代码、Simulink仿真实现)
三自由度PUMA机器人非线性控制研究(Matlab代码、Simulink仿真实现)
165 0
|
机器人
水下机器人双机械手系统动态建模与控制仿真(Matlab代码实现)
水下机器人双机械手系统动态建模与控制仿真(Matlab代码实现)
167 0
|
传感器 XML 数据可视化
[ros robot] --- 机器人系统仿真
[ros robot] --- 机器人系统仿真
350 0

热门文章

最新文章