本文主要是介绍【画图】读取无人机IMU数据并打印成log用matlab分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、修改IMU频率
原来的imu没有加速度信息,查看加速度信息的指令为:
rostopic echo /mavros/imu/data
修改imu频率,分别修改的是
- 原始IMU数据话题
/mavros/imu/data_raw
。 - 飞控计算过后的IMU数据
/mavros/imu/data
rosrun mavros mavcmd long 511 105 10000 0 0 0 0 0rosrun mavros mavcmd long 511 31 10000 0 0 0 0 0
但是这个每次都要启动执行这句话,很麻烦,把他添加到脚本里,这样每次就不用手动输入了。
二、订阅话题信息
1.回调函数
定义一个回调函数,回调函数是当新消息到达主题时被调用的函数。它应该接收一个参数,即到达的消息,常见格式:
def imu_data(data): ...
我们需要的信息:
样例:
def imu_data(msg):global imu_accimu_acc=msg.linear_acceleration
2.创建一个订阅者
常见格式:
rospy.Subscriber('my_topic', String, callback)
在这里,'my_topic'
是你要订阅的主题名,String
是你期望接收的消息类型,callback
是上面定义的回调函数。
为了查看消息类型,可以这样执行:
rostopic type /mavros/imu/data返回值:
sensor_msgs/Imu
所以,可以这样写订阅:
rospy.Subscriber("mavros/imu/data", Imu, imu_data)#yhl
但是在此之前,还要安装一个包,让ros能识别Imu消息类型
from sensor_msgs.msg import Imu # 导入sensor_msgs包中的Imu消息类型
3.打印log数据
print("imu_acc:{}".format(imu_acc))#yhl
可以看到,打印了加速度数据
三、MATLAB分析数据
未完待续。。。
这篇关于【画图】读取无人机IMU数据并打印成log用matlab分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!