基于NVIDIA Jetson AGX Xavier的移动机器人开发(1)——Xavier刷机、风扇配置、ROS安装

实验室有一台2020年购入的AGX Xavier计算平台,由于实车开发作实验较为麻烦,打算基于这台Xavier从头搭建一套缩小版的自动驾驶系统用于算法验证以及实验,同时锻炼从头搭建系统的能力。平台基于朴为A30的阿克曼结构的车,底盘控制由CAN和串口输出,并提供了ROS接口。


【摘要】第一篇主要总结对于Xavier的刷机以及ROS安装过程中遇到的困难和问题。(尤其是因为后续需要使用扩展40PIN的CAN通信,而JetPack4.6以上版本的时钟配置导致CAN的波特率有问题,需要特殊配置!)
【注意】相关资料手册均可以到NVIDIA官网找到(链接

一、 硬件连接

  1. 一台Ubuntu系统的主机Host(注意!Ubunut主机的系统版本决定了刷机系统的版本的下限,最开始使用20.04的系统,无论如何都无法将xavier刷为18.04,以至于后续ros安装出现大量问题,因此注意版本!)
  2. 一条USB-Type-C数据线
  3. 显示器、键盘、鼠标连接xavier

二、主机操作

  1. 从NVIDIA官网(链接)下载对应版本的sdkmanager(由于后续ROS安装的问题,安装18.04)
  2. 在下载的.deb文件所在目录打开命令行,并进行sdkmanager的安装
    sudo apt install ./sdkmanager_1.5.0-7774_amd64.deb
  3. 命令行输入sdkmanager打开
  4. 取消勾选host machine(参考其他博客,这个是为主机下载安装文件的,如果想在主机上安装 nvida 软件,可以勾选这个,实际上没必要)。版本选择,注意官网的版本描述,对应的Ubuntu版本需要选择
    在这里插入图片描述
  5. 下载路径建议默认(参考其他博客,sdk若下载到其他位置后续会出错,不要勾选install later)
  6. 此时会下载带有英伟达自己的bootloader以及Linux内核以及编译过的设备树文件
  7. 等OS镜像烧录完成,会弹出配置窗口,此时需要首先修改时钟配置!见(五),然后将xavier与主机连接(此前要关机)。长按中间恢复键,然后不放开按开机键,几秒后同时松开,即可检测到连接,选择手动安装,点击 Flash 按钮,开始烧录 OS 镜像
  8. 等OS烧录完成,xavier会开机,此时进行Ubuntu配置,同时主机会弹出新的窗口进行SDK的下载,注意二者要处于同一个局域网

三、Xavier操作

  1. 进行Ubuntu的基础配置,包括设置中文和输入法。中文需要在system中选择language中把不完整的包下载完整,然后将中文拖到顶端,应用全局然后重启;
  2. 安装ROS
    1. 一定要注意和Ubunut版本的匹配! (18.04对应ROS melodic)
    2. 由于xavier是ARM架构,其安装和x86的ROS有所不同,如果按照ros wiki的步骤进行安装,会出现包之间的依赖出现问题,而apt-get是无法解决包之间的依赖问题的,而aptitude虽然可以自动检查包的依赖,但会覆盖apt-get而导致其他问题
    3. 建议使用github上一位国外大佬开源的针对18.04的xavier的ros安装脚本进行安装(链接
      通过执行./installROS.sh,-p参数可以选择安装的版本,可以选择ros-melodic-ros-base/ros-melodic-desktop/ros-melodic-desktop-full
    4. 此包还包含了自动创建ros工作空间的脚本,参数为工作空间名字,默认为catkin_ws

四、风扇配置

  • Xavier提供PWM和转速表功能,用于控制风扇作为热解决方案的一部分。PWM输出控制风扇转速,转速表反馈转速;
  • Xavier有8个PWM输出,PWM控制器为其8个实例(PWM1到PWM8)中的每个实例支持一个PWM输出,每个实例分配一个64 KB的独立地址空间,PWM控制器可以从CLK_M或PLLP中获取时钟源,CLK_M (19.2 MHz)源自OSC时钟(38.4 MHz),PLLP工作在408 MHz;
  • 对于风扇的配置,开机默认转速为0(最开始不知道配置风扇这一回事,温度很高,我用了外置风扇散热hhh),可以在/sys/devices/pwm-fan/target_pwm文件中看到风扇的转速,默认为0,可以设置到最大250;
  • 设置为开机自启动:使用jetson性能检测软件jetson-stats
    安装:sudo pip install jetson-stats
    启动:sudo jtop
    • 进入到界面6,设置jetson_clocks Running和boot Enable,设置开机自启动风扇(开机过几秒风扇启动)
    • 设置风扇速度(按下“m”键是降低风扇速度,按“p”键是提高风扇速度)
    • 使用鼠标点击“manual”,设置为手动
    • 按“q”键退出,重启设备 reboot,测试风扇是否开机自启动

五、JetPack4.6版本以上的时钟配置

  1. 问题: Jetpack 4.6 以后, MTTCAN 配置发生了变化, CAN时钟默认为低功耗设置(没有使能PLLAON), CAN工作不正常(主要由于时钟源的选择发生了变化,导致CAN的波特率不准)
  2. **原理:**根据官方提供的内核源码中设备树的绑定文件(CAN相关的绑定文件在net目录下),找到bosch的CAN配置文件(以YAML格式书写,并非传统的txt格式),其中描述了如何配置相关节点的属性
    在这里插入图片描述
    在这里插入图片描述
  3. **解决方案:**将CAN的时钟源选为pllaon。刷机刷到打开AGX的恢复模式的位置时,打开安装到PC的文件夹,找到nvidia/nvidia_sdk/JetPack_4.6.1_Linux_JETSON_AGX_XAVIER_TARGETS/Linux_for_Tegra,在这个路径下,需要修改两个文件,分别是:
    bootloader/t186ref/tegra194-a02-bpmp-p2888-a04.dtbkernel/dtb/下的tegra194-p2888-0001-p2822-0000.dtb
    1. 反编译dtc -I dtb -O dts ./tegra194-a02-bpmp-p2888-a04.dtb > ./tegra194-a02-bpmp-p2888-a04.dts
    2. 修改CAN的父时钟
      在这里插入图片描述
    3. 重新编译dtc -I dts -O dtb ./tegra194-a02-bpmp-p2888-a04.dts > ./tegra194-a02-bpmp-p2888-a04.dtb
    4. 反编译dtc -I dtb -O dts ./tegra194-p2888-0001-p2822-0000.dtb > ./tegra194-p2888-0001-p2822-0000.dts
    5. 修改pll时钟源
    6. 重新编译dtc -I dts -O dtb ./tegra194-p2888-0001-p2822-0000.dts > ./tegra194-p2888-0001-p2822-0000.dtb
      在这里插入图片描述在这里插入图片描述

六、ROS安装

使用鱼香ROS进行一键安装,已包含Jestson系列的脚本。

wget http://fishros.com/install -O fishros && . fishros


【参考】
Nvidia Jetson Xavier 开机配置+刷机+部署ROS(刷机需谨慎)
JETSON AGX XAVIER刷机记录
Jetson AGX Xavier/Nano刷机指南(无需踩坑版)
Jetson AGX Xavier 设置 CAN,打开pllaon时钟,jetpack5.1
Nvidia jetson agx xavier can通讯失败,修改时钟源pllaon
Jetson Xavier 设置 CANFD (Jetpack 4.6, 开启pllaon)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值