四旋翼无人机仿真之hector 您所在的位置:网站首页 devs仿真无人机 四旋翼无人机仿真之hector

四旋翼无人机仿真之hector

2023-09-06 19:16| 来源: 网络整理| 查看: 265

系列文章目录

文章1:四旋翼无人机仿真之hector_quadrotor无人机(ROS + Gazebo) 文章2:四旋翼无人机仿真之hector_quadrotor(二)键盘teleop_twist_keyboard控制无人机飞行

文章目录 系列文章目录前言hector无人机内部传感器数据读取(以IMU为例) 一、运行hector与键盘操纵二、传感器数据读取与复现1.通过bag文件记录话题消息2.数据重现3.数据导出4.数据可视化 总结

前言

前面两部分已经详细介绍了关于hector无人机的主要内容、安装方式以及如何通过键盘操控无人机等,在又经历了一段时间的学习之后(主要是研究如何更换世界环境world以及插入所需传感器等,目前已经可以使用IMU、GPS等传感器,已经通过urdf的形式,作为xacro提供给无人机模型urdf文件进行引用。主要放置在quadrotor_plugins.gazebo.xacro文件中)

本节将会基于以上进展,展示如何进行无人机上传感器数据的读取、记录以及复现工作。

需要掌握ROS+Gazebo基础,并对hector无人机功能包结构有简单了解

hector无人机内部传感器数据读取(以IMU为例) 一、运行hector与键盘操纵

首先,按照文章(二)的方式,打开hetcor无人机以及键盘操纵命令(均在工作区运行):

source devel/setup.bash roslaunch hector_quadrotor_demo test.launch

其中的test.launch是我进行world场景修改后的发布文件 Gazebo显示: 在这里插入图片描述

运行无人机电机,并通过键盘操纵:

source devel/setup.bash rosservice call /enable_motors "enable: true" rosrun teleop_twist_keyboard teleop_twist_keyboard.py

成功运行: 在这里插入图片描述

二、传感器数据读取与复现 1.通过bag文件记录话题消息

可以先创建一个文件夹存放数据:

mkdir bagfile cd bagfile

记录话题:

rosbag record -a

此命令为记录所有话题。 当然,在本工程中无人机通过ROS发布了许多topic话题,全部记录是不现实的,我们可以先查看话题名称,之后记录选定的话题:

rostopic list -v #查询已有话题 rosbag record -O imu /raw_imu

这里,-O选项指定了我们要保存的bag文件的名字,本次以读取IMU数据为例(imu.bag),后面的/raw_imu则指定了我们要记录信息的话题。 在这里插入图片描述

按ctrl+C结束记录,此时在该文件夹下就会存在imu.bag文件。

2.数据重现 rosbag info imu.bag

此时会显示记录文件中数据的详细信息: 在这里插入图片描述输入rosbag play imu.bag 即可利用里面的数据重现我们节点的运行状态: 在这里插入图片描述 默认情况下,rosbag play命令会等待0.2秒之后才开始发布信息,这是为了在发布信息之前通知所有订阅信息的节点,以使它们能够及时地接收到rosbag play发布的信息。这个等待时间可以用-d选项指定。

因为rosbag record记录数据是有延迟的,所以在执行rosbag play最初的一小段时间里消息不会发布,使用-s选项后跟秒数可以跳过bag文件记录的前几秒。-r,它可以改变信息发布的速度:

rosbag play -r 2 #以两倍的速度发布记录的消息 3.数据导出

通过上面的操作可以发现,数据是以.bag文件的形式被封装,无法直接打开,因此也就不能读取里面的数据,此时,如果想要读取被记录的数据,需要通过命令进行格式转换,用到的是显示数据命令rostopic echo。

rostopic echo -b imu.bag -p /raw_imu > imu.txt

通过此命令,就可以将imu.bag文件中/raw_imu话题的消息转换到imu.txt文件中,得到带有数据主题等信息的、可读取的文本文件: 在这里插入图片描述可以看到数据还是比较多的,因为IMU读取数据的内容还是比较丰富的,而我们可能仅需要查看部分数据(如线性加速度等),此时便可在转换时设置,即指定新的话题名称与文件名称:

rostopic echo -b imu.bag -p /raw_imu/linear_acceleration > imu_linear.txt

在这里插入图片描述 可以看到里面的数据就是我们想要的线性加速度数据,清晰了许多。

4.数据可视化

经过如上的操作之后,得到了需要的IMU数据信息,在读取的同时,也可以进行数据可视化,即rqt_plot命令可以在滚动时间图上显示发布到某个话题上的数据。 首先,在一个新终端中输入: rosrun rqt_plot rqt_plot开启绘图工具GUI界面。 输入rosbag play imu.bag,重现数据,此时在左上角文本框中便可以输入想要绘制话题的名称,本次为线性角速度(/raw_imu/linear_acceleration),这样在数据复现时,便会得到数据的图像信息: 在这里插入图片描述

总结

通过上述方式,简要介绍了在ROS+Gazebo中如何通过ROS命令读取无人机hector上所需的传感器数据,以及数据的读写、复现、成图等工作,一定程度上实现了平台的有效利用,提高了操作效率。

参考教程:https://www.freesion.com/article/4698118426/



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有