Jetson Nano利用ROS2通过MicroDDS与PX4通讯

PX4在V1.14及后续版本中,将原本ROS2与PX4通讯的中间件micrortps模块删除了,优化成了MicroDDS模块。MicroDDS的使用相比之前也简化了许多。
本文在jetson nano板子上部署了Ubuntu20.04,并安装了ROS2,测试和Pixhawk4 mini之间的通讯。

Jetson Nano安装Ubuntu20.04

镜像用的是在github上找到的:https://github.com/Qengineering/Jetson-Nano-Ubuntu-20-image。
他上传了Ubuntu 20.04 带有 OpenCV, TensorFlow and Pytorch的镜像,但是我使用的时候配置环境报错。于是推荐用他上传的空白的Ubuntu20.04 Bare image镜像
将内存卡用读卡器插入电脑,用balenaEtcher选择下载好的镜像,选择对应的内存卡烧写。完成后将内存卡插入jetson nano中就可以运行系统了。
在这里插入图片描述
(如果是之前烧写过系统的内存卡,可以用SDFormatter格式化清空后再烧入)

Ubuntu20.04 配置ROS2环境

基本步骤和之前写的教程Ubuntu20.04安装ROS2+ROS2-PX4框架搭建差不多。但是由于这个教程中也安装了PX4的开发环境,有些python的项在配置PX4环境的时候已经配置了。但是在jetson nano中,不需要配置PX4环境(配置了也会报错),所以需要额外单独安装一些python和colcon的依赖项。

Set locale

sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8

Setup Sources

sudo apt update
sudo apt install curl gnupg2 lsb-release
curl http://repo.ros2.org/repos.key | sudo apt-key add - 
sudo sh -c 'echo "deb http://packages.ros.org/ros2/ubuntu `lsb_release -cs` main" > /etc/apt/sources.list.d/ros2-latest.list'

Install ROS2 package

sudo apt update
sudo apt install ros-foxy-desktop

Environment setup

用脚本设置:

source /opt/ros/foxy/setup.bash

但是这样每次打开新终端都得配置一下,如果不想每次打开新终端都输入一遍上述语句,可以这样设置,让终端自动配置好环境:

echo "source /opt/ros/foxy/setup.bash" >> ~/.bashrc
source ~/.bashrc

安装colcon

sudo apt install python3-colcon-common-extensions

Build ROS 2 Workspace

默认的ROS2工作区建立在home目录下,当然这个可以根据需求更改

  1. 打开终端,建立一个新的工作区
mkdir -p ~/ws_ros/src/
cd ~/ws_ros/src/
  1. 下载例程和px4_msgs
git clone https://github.com/PX4/px4_msgs.git
git clone https://github.com/PX4/px4_ros_com.git
  1. 配置ros2 foxy的环境,并用colcon编译工作区
cd ..
source /opt/ros/foxy/setup.bash
colcon build

Pixhawk配置

这里其实需要配置的东西很少,注意以下几步

  1. 在另外一台自己的笔记本电脑上,下载PX4源码,注意要在v1.14版本之后的PX4源码。现在直接在终端运行
 git clone https://github.com/PX4/PX4-Autopilot.git --recursive(需要科学上网)

下载得到的就是最新版本的源码。
(上述步骤也可以分步:

git clone GitHub - PX4/PX4-Autopilot: PX4 Autopilot Software
cd PX4-Autopilot/
git submodule update --init --recursive

make生成对应pixhawk硬件的固件版本烧写到pixhawk中。MicroDDS-Client是自动默认配置在所有的固件版本中的(只要你的源码版本在1.14后),所以直接make对应的固件版本就可以。比如我使用的Pixhawk4 mini,就是如下命令

make px4_fmu_v5 upload
  1. 在QGC地面站中,设置运行client的串口,将UXRCE_DDS_CFG设置为pixhawk与机载计算机连接的口(如我这里用的是TELEM1口,就设定为TELEM1)。管口的定义可以在PX4官方用户手册对应的飞控板介绍页找到。
    在这里插入图片描述
    修改对应接口的波特率,我这里使用的是TELEM1,对应的参数就是SER_TEL1_BAUD,TELEM1的波特率默认是57600。(如果是TELEM2,同理用的参数就是SER_TEL2_BAUD)。这个波特率要记住,之后和机载计算机的通讯需要设置正确波特率,否则无法通讯。
    在这里插入图片描述

  2. 将Mavlink端口Disable(设置为0)。这里需要让你之前设定为UXRCE_DDS_CFG的串口不配置为MAVLINK的端口,比如我前面用了TELEM1,这里就不能再设置TELEM1作为MAVLINK端口。
    在这里插入图片描述

Jetson Nano上MicroDDS-Agent配置及和pixhawk通讯

将飞控对应口连接到Jetson nano上
在这里插入图片描述

通过

ls /dev

命令可以看到多出来了哪个串口,对应的就是飞控。我这里多出来的是ttyUSB0这个口。于是运行命令启动Agent:

MicroXRCEAgent serial -D /dev/ttyUSB0 -b 57600

-b后面接的是对应波特率,就是之前设置的波特率。这个波特率一定要和飞控上对应接口的波特率一样。和飞控连接上了就能看到一连串的信息:
在这里插入图片描述
也可以进入ros2的工作区目录下,运行官方的例程。例如查看传感器信息:

source install/setup.bash
ros2 run px4_ros_com sensor_combined_listener 

效果与仿真效果是一致的
在这里插入图片描述

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值