跳转至

ROS2 升级烧录操作教程

本节概述了在机器设备上从ROS1升级到ROS2的详细操作说明。本流程将一次性完整安装ROS2系统和机器人SDK软件依赖。

升级版本信息

机器人SDK版本:适配ATC v2.1.1 及以上版本 - JetPack版本:6.0 - 操作系统:Ubuntu 22.04 - 机器人操作版本:ROS2 Humble

1. 升级前准备

1.1 硬件准备

物品 数量 备注
电脑 1 系统:Ubuntu 20.04,x86型号
环境:Python
硬盘空间:至少预留110G
USB转Micro-USB数据线 1 用于连接机器与电脑,进行烧录操作。
网线 1 用于连接机器与电脑,获取IP地址。
内六角扳手 1 用于拆除机器底盘螺丝。

注意:

  1. 建议使用Ubuntu20.04进行烧录,经测试其他版本可能导致烧录异常。
  2. 建议烧录前关闭电脑的防火墙,以免出现报错。

    在上位机执行以下命令配置Python环境:

    sudo apt install python3
    

  3. 文件备份:刷机过程中相当于重装系统,请将重要信息备份。务必先将机器人下/opt/galaxea/body下的文件进行备份。 推荐将其copy到自己的电脑,完成烧录后通过scp的方式,重新放入/opt/galaxea/body目录下。其余相关的数据,开发代码也请完成对应备份。

在新的V2.1.1 版本中,我们将会引入硬件参数配置的特性。如果发现/opt/galaxea/body目录下不存在hardware.json请联系我们售后团队帮助您进行配置。

1.2 软件准备

点击以下链接获取内核文件:

注意:建议将所有文件下载到路径~/Downloads/ROS2_software_flashing_tool中。系统镜像文件较大,建议下载完使用System image MD5校验。

2. 连接烧录线

2.1 拆除底盘盖板

将机器人关机断电,使用L型六角扳手卸下底盘盖板的6个固定螺钉,卸下盖板。 ROS2_2.1_remove_chassis_cover_cn

2.2 连接线束

使用USB转Micro-USB数据线(不是普通充电线),将Micro-USB端连接到ECU的U2接口(如图所示,ECU位于底盘中央,建议从底盘左侧风扇处的空隙将线束接入插口),USB端接入上位机的USB插口。 ROS2_2.2_connection_cn

3. 软件烧录流程

3.1 进入烧录模式

请在上位机中输入以下命令重启机器,使其进入烧录模式。

sudo reboot --force forced-recovery

3.2 检查烧录USB连接重启后是否识别

多次在自己电脑的终端输入lsusb命令检查是否出现Nvidia Crop的串口设备,显示如下则已经进入烧录模式。

lsusb
ROS2_3.3_check_device_lsusb_cn

如果一直识别不了Nvidia Crop的串口设备,需要使用硬件复位使ECU进入恢复模式。

3.2.1 硬件复位方式

ROS2_3.2_reset_cn

  1. 硬件复位方式一:

    在机器人断电情况下,按住RECV键不动。然后,插上电源给设备上电,过3s再松开RECV键。

  2. 硬件复位方式二:

    按住RST,戳进去保持按压;然后,立即戳RECV,戳进去保持按压;两个孔同时按压3到5秒。最后,先松开RECV,再立即松开RST。

执行完硬件复位后,lsusb查看,如果仍然没有,可能是硬件复位操作不正确,谨慎操作,重试几次。

4. 烧录工具和镜像准备

在自己电脑上进入前面从云盘下载的工具文件路径

# 建议下载路径为:
cd /home/$USER/Downloads/ROS2_software_flashing_tool

解压烧录工具flashtool

tar -xpf flashtool_tztek_geac_orin_jp6.0.0_GA_GEACX1_R3.0_Kv6.0.3_1126.tar.bz2
# 工具目录名太长重命名为flashtool
mv flashtool_tztek_geac_orin_jp6.0.0_GA_GEACX1_R3.0_Kv6.0.3_1126 flashtool

解压镜像文件(硬盘空间至少预留110G)。

# 删除刷机工具rootfs目录下旧的文件
sudo rm -rf flashtool/Linux_for_Tegra/rootfs/*
# 解压出镜像文件到烧录工具的rootfs目录下
sudo tar -xvf Backup-nvidia-desktop-20250623-171100.tar.gz -C flashtool/Linux_for_Tegra/rootfs/
# 复制启动分区镜像
sudo cp flashtool/Linux_for_Tegra/rootfs/boot/Image flashtool/Linux_for_Tegra/kernel/Image

5. 安装刷机工具运行的依赖项

# 第一次烧录镜像需要安装
sudo apt install qemu-user-static -y
sudo ./flashtool/Linux_for_Tegra/tools/l4t_flash_prerequisites.sh
# 如果遇到E: 无法获得锁 /var/lib/apt/lists/lock。锁正由进程 xx_pid(packagekitd)持有
# 执行kill -9 xx_pid后再执行这个脚本

6. 烧录之前更新驱动(非常重要)

cd flashtool/Linux_for_Tegra
sudo ./tools/l4t_update_initrd.sh 

暂时禁用新的USB设备插入(执行后请勿插拔刷机电脑的任何USB设备)

systemctl stop udisks2.service

7. 运行烧录脚本

sudo ./tztek_flash.sh 
请输入烧录功能编号: 7

1.kernel  2.dtb  3.initrd-backup  4.bct-pinmux  5.massflash  6.without-no-flash  7.flash-all  8.flash-all-with-system  9.Initrd-mode
请输入平台型号编号: 8

1.xavier  2.nx-emmc  3.nx-sdcard  4.tx2-8g  5.tx2-4g  6.agx_orin  7.orin_nx_nano  8.agx_orin_nvme
确认烧录:yes(输入yes后回车开始烧录)

注意:烧录过程大概持续30-40分钟,期间请勿插拔电脑和机器之间的USB micro数据线。烧录完成后自动进入系统,可插网线共享本机网络给机器,然后重复arp -a多次查看机器的以太网IP地址,最后进行ssh连接和配置;或者给机器连接显示器、鼠标进行操作。

8. 内核升级(请阅读文档,并谨慎操作)

# 插网线连机器
# 多次执行查看电脑共享给机器的局域网IP地址
arp -a

# 在本地终端执行
cd /home/$USER/Downloads/ROS2_software_flashing_tool
scp tztek-jetson-tool-eeprom-info-v1.1.deb nvidia@<ecu-ip>:~/
# 在ecu的ssh终端执行
sudo dpkg -i tztek-jetson-tool-eeprom-info-v1.1.deb
# 查看ecu主板型号是r2.1还是r3.0
sudo tztek-jetson-tool-eeprom-info -a

# 卸载旧的内核
sudo dpkg -r tztek-jetson-firmware-kernel-dtb-510jx0*

# 在本地终端执行
# 1.从电脑上拷贝内核安装包到机器
# 如果是r2的ecu
scp tztek-jetson-firmware-kernel-dtb-510jx0-r2.1-jp6.0.0-v6.0.4.deb nvidia@<ecu-ip>:~/
# 如果是r3.0的ecu
scp tztek-jetson-firmware-kernel-dtb-510jx0-r3.0-jp6.0.0-v6.0.4.deb nvidia@<ecu-ip>:~/

# 在ecu的ssh终端上执行
# 2.安装新内核,注:内核安装持续时间可能较长,期间请勿中断程序
# r2.1的ecu
sudo dpkg -i ~/tztek-jetson-firmware-kernel-dtb-510jx0-r2.1-jp6.0.0-v6.0.4.deb
# r3.0的ecu 
sudo dpkg -i ~/tztek-jetson-firmware-kernel-dtb-510jx0-r3.0-jp6.0.0-v6.0.4.deb
# 启用新能和
sudo tztek-jetson-firmware-kernel-dtb-510jx0
# 重启机器,输入命令或者通过电源按钮重启
sudo reboot

# 在ecu的ssh终端上执行
# 3.检查内核信息
cat /proc/version