在ROS2中通过Mavros读取、打印并可视化飞控IMU数据

环境

树莓派4B
ArduCopter 4.0.7
Ubuntu mate 22.04
ROS2 Humble
(本人搭建所使用的软件硬件版本,仅供参考)

1.如果环境没有搭建完成的可以参考这篇文章使用mavros在pixhawk和树莓派4B之间通信_pix mavros-CSDN博客

树莓派上运行的系统版本从下面的网址获得(选择第一个)

Ubuntu MATE Releases - /22.04/arm64/ (ubuntu-mate.org)

2.确保树莓派上的串口有足够的权限:

sudo chmod 777 /dev/ttyAMA0

接下来运行

ros2 launch mavros apm.launch

或者

ros2 run mavros mavros_node fcu_url:=/dev/ttyAMA0:921600

给串口权限这句指令每次运行mavros节点前都要输入,否则会出现:

[mavros_node-1] [WARN] [1723041364.322288939] [mavros.sys]: VER: your FCU don't support AUTOPILOT_VERSION, switched to default capabilities
[mavros_node-1] [INFO] [1723041383.835659031] [mavros.mavros_router]: link[1000] trying to reconnect...
[mavros_node-1] [ERROR] [1723041383.836440051] [mavros.mavros_router]: link[1000] reconnect failed: DeviceError:serial:open: Permission denied

3.打开新的终端输入以下命令,打印imu话题数据

ros2 topic echo /mavros/imu/data

4.如果输入这个命令以后没有输出

那么输入下面这条命令:

ros2 service call /mavros/set_stream_rate mavros_msgs/StreamRate "{stream_id: 0, message_rate: 10, on_off: true}"

这个命令等价于ROS1中的

rosservice call /mavros/set_stream_rate 0 10 1

➢第一个参数0表示流的类型为所有传感器数据。

➢第二个参数10是设置的数据流频率为10Hz。

➢第三个参数true/1表示开启数据流。

看到以下结果代表命令生效:

waiting for service to become available...

requester: making request: mavros_msgs.srv.StreamRate_Request(stream_id=0, message_rate=10, on_off=True)

response:

mavros_msgs.srv.StreamRate_Response()

5.再重新打印三轴加速度和角速度:

ros2 topic echo /mavros/imu/data

输出的是包含姿态四元数角速度加速度及其协方差矩阵(3*3)的IMU数据

sensor_msgs/Imu消息类型接口定义如下:

std_msgs/Header header

geometry_msgs/Quaternion orientation
float64[9] orientation_covariance # Row major about x, y, z axes

geometry_msgs/Vector3 angular_velocity
float64[9] angular_velocity_covariance # Row major about x, y, z axes

geometry_msgs/Vector3 linear_acceleration
float64[9] linear_acceleration_covariance # Row major x, y z

消息实例:

header:
seq: 111508
stamp:
secs: 2244
nsecs: 228000000
frame_id: “base_link”
orientation:
x: 0.007384428628733207
y: -0.007200897913145637
z: -0.9916137715564253
w: -0.12882411840336733
orientation_covariance: [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0]
angular_velocity:
x: 0.0007936469046398997
y: 0.0006271927268244324
z: -0.0013350683730095625
angular_velocity_covariance: [1.2184696791468346e-07, 0.0, 0.0, 0.0, 1.2184696791468346e-07, 0.0, 0.0, 0.0, 1.2184696791468346e-07]
linear_acceleration:
x: -0.16984868049621582
y: 0.10508567094802976
z: 9.788949966430664
linear_acceleration_covariance: [8.999999999999999e-08, 0.0, 0.0, 0.0, 8.999999999999999e-08, 0.0, 0.0, 0.0, 8.999999999999999e-08]

安装rviz插件

新打开一个终端输入rviz2启动rviz

rviz2

需要提前在rviz2中安装Imu插件

sudo apt install ros-humble-rviz-imu-plugin

点击话题添加按钮后,在弹出窗口的窗口中拉到最下面,选择Imu:

接下来Fixed Frame一栏选择“base_link”

Imu下的Topic一栏选择“/mavros/imu/data”

Topic下的Reliability Policy一栏选择“Best Effort”

这样就可以姿态角实时动态显示了~

后续会在节点中实现mavros的订阅者节点,并实现串口通信,为后续的项目做准备。

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值