简介#
在前五篇文章介绍完仿真的基本流程后,我们开始一个新的部分:真机飞行。真机相对于仿真需要更多的配置,对安全性有更高的要求,我们会依次介绍。今天首先介绍机载电脑的刷机流程。
在利用ROS控制无人机时,机载电脑承担着关键的计算任务,可以在不影响底层飞控的同时提供足够的算力,实现实时路径规划、多机协同决策、视觉SLAM等任务。如果还未搭建仿真环境,建议先参考 ROS2+PX4 仿真环境开发教程 完成仿真端的准备工作。本文以Nvidia Jetson Orin NX为例,刷入Ubuntu 22.04系统。
需要准备的硬件:
- 机载电脑(此处使用Nvidia Jetson Orin NX)
- 机载电脑电源
- 鼠标、键盘外设以及显示器
- 至少一根杜邦线
- 配备有Ubuntu双系统或者虚拟机的个人电脑
- USB转type-C线
主机环境依赖#
主机的Ubuntu系统需要安装必要的依赖:
sudo apt install sshpass abootimg nfs-kernel-server libxml2-utilsbash注意:虚拟机烧录时会下载大量的烧录文件,请使用虚拟机进行烧录的朋友务必留够不少于100G的磁盘空间!
安装SDK Manager#
SDK Manager是常见的Nvidia机载电脑的刷机工具,我们先前往 Nvidia SDK Manager ↗ 下载。
如果进入后需要登录注册,大家自行注册一个Nvidia账号即可。进入页面后,直接下载对应Ubuntu系统的deb安装包。
下载后的文件统一储存在 ~/Download 目录下,进入并安装:
cd ~/Download
sudo dpkg -i sdkmanager_2.3.0-12617_amd64.debbash如果此时出现报错,多为依赖项缺失或者依赖冲突(dependencies problems),需要修复并更新依赖:
sudo apt-get install -fbash完成之后重新启动系统并再次安装。安装完成后出现以下界面,此处又需要登录,直接登录即可:
至此,用于刷机的SDK Manager就安装完成了。
启动烧录模式#
对于有Recovery按键的机载电脑,根据具体说明长按或短按按键即可。对于Orin NX这类无Recovery按键的机载电脑,通常采用短接引脚通电的方式,此处笔者给出说明。
根据Nvidia Jetson Orin NX官方文档的说明,我们需要将GND和FC REC两个引脚短接通电10秒。这两个引脚位于机载电脑风扇的正下方:
GND引脚为第二个引脚,FC REC为第三个:
用一根杜邦线将两个引脚短接,随后将USB口接入本机电脑,type-C口接入机载电脑,为机载电脑接入电源10秒后,SDK Manager上会进入以下页面,此时进入烧录模式成功。
注意:请不要急于点”Continue”,后续还有一些说明。现在可以将短接的杜邦线拔掉,后续不再需要,防止烧坏机载电脑。后续烧录过程中,请保持电源的连接。
进行烧录#
回到刚刚进入的页面,现在需要做以下几个设置:
- 取消勾选 Host Machine
- 在 Target Hardware 中选择自己的机载电脑型号(在USB和type-C连接成功后,应该会自动显示)
- 根据自己的Jetpack版本号选择SDK Version,笔者在之前的ROS2仿真中使用的是Ubuntu 22.04,此处也对应选择 Jetpack 6.2.1,支持Ubuntu 22.04
此时可以选择Continue进行第二步,这里会检查相应组件的安装情况,大家直接默认不动就好。同时勾选底部以下两个选项,表示先下载组件,再进行安装,此时SDK Manager会开始下载刷机所需的包。如果弹出主目录里没有nvidia的目录,直接点”Create”继续即可。
当底部进度条走完并且出现”Download Completed successfully”的时候,说明下载完成,点击”Finish”进入安装。
随后SDK Manager会再次进入第一步选择各种型号的页面,像最先开始一样取消勾选”Host Machine”并选择对应Jetpack版本号,进入下一步。此时在第3栏中,SDK Manager会检测下载状态,如图所示均为”Downloaded”,表示均已下载完成。现在需要取消勾选”Download now. Install later”,因为已经下载好了,直接安装刷机即可。
随后SDK Manager会进入长时间的刷机过程,需要保持等待。第一个弹窗需要填写用户名和密码,和首次装Ubuntu系统时基本类似。这里推荐使用jetson或nvidia,防止后续使用SSH进行本地电脑与机载电脑连接时出现奇怪的bug。
后续还会弹出几个弹窗,因为我们使用的是USB连接而非以太网连接,只需确保弹窗中的选项是USB,同时用户名和密码为第一次输入的用户名和密码即可(一般而言不需要修改)。
烧录关键:保持USB连接稳定#
在烧录过程中,需要一直在屏幕前,尤其是虚拟机的用户。系统会显示USB不断地被弹出(Removed)和重新添加(added)。如果使用双系统进行烧录,只需注意USB被弹出后是否及时自动重新添加;而如果使用虚拟机,还要将USB连接到虚拟机而非主机,此过程不断反复,需要不断操作,不可以选择”记住我的选择”:
烧录完毕#
将鼠标、键盘、显示器等外设连接到机载电脑上。随着烧录的进行,显示器驱动会成功安装,可以在显示器上看见Ubuntu系统的安装进程。现在要做的就是等待,并随时保证USB的连接稳定。
等到SDK Manager的安装进度条走完,显示”Finished”,则说明烧录完成。此时连接显示器,可以看见Ubuntu的登录界面,用户名为jetson,大功告成!
现在,大家可以连接鼠标、键盘外设,对机载电脑进行设置操作。同时,按照我们之前给出的ROS2+PX4仿真开发流程,将实机飞行需要用到的Micro-XRCE-DDS-Agent和需要的ROS2工作空间及px4_msgs、px4_ros_com源码克隆到机载电脑上。刷机完成后,下一步就是 使用 MAVROS2 让机载电脑控制 PX4 无人机,实现 Offboard 模式起飞。
总结#
与配置开发仿真环境一样,真机的实验有更高的安全性要求,因此相应的流程也会更加繁琐。希望通过本篇文章,能够让大家更加轻松地上手使用ROS进行真机实验。在类似ROS、无人机这些工程性质较浓的领域,一些经验性的知识显得必不可少,可以帮助我们将更多精力放在核心的工作中,笔者期望与大家一起不断补充、修改、更新这些知识。
最后,诚挚地希望各位读者能够提出意见或者建议,感谢大家的阅读和不断的支持鼓励!