ROS2导航系统(Jetson Orin NX)-第一章-底盘松灵Ranger Mini V3.0 gs_usb

📅 2026/7/18 13:19:57 👁️ 阅读次数 📝 编程学习
ROS2导航系统(Jetson Orin NX)-第一章-底盘松灵Ranger Mini V3.0 gs_usb

一、问题背景

  • 硬件:Jetson Orin NX (JetPack 6.x, 内核 5.15.148-tegra)

  • 设备:USB-CAN 适配器 (ID 1d50:606f)

  • 问题:系统内核默认不包含gs_usb驱动,需要手动编译

二、编译gs_usb模块

2.0 克隆工具仓库并运行下载脚本

cd ~ git clone https://github.com/jetsonhacks/jetson-orin-kernel-builder.git cd jetson-orin-kernel-builder/scripts ./get_kernel_sources.sh

2.1 进入内核源码目录并配置gs_usb

# 将内核源码复制到用户目录,这样就不需要 sudo 了 cp -r /usr/src/kernel/kernel-jammy-src ~/kernel_build_src # 进入源码目录 cd ~/kernel_build_src # 从当前运行的内核导出配置(保证配置与系统一致) zcat /proc/config.gz > .config # 更新配置到当前内核版本 make olddefconfig # 启用 gs_usb 模块(设置为模块,用 m 表示) scripts/config --module CONFIG_CAN_GS_USB # 验证配置是否生效(应该输出 CONFIG_CAN_GS_USB=m) grep CONFIG_CAN_GS_USB .config

2.2 编译gs_usb模块

# 准备编译环境(生成必要的头文件) make modules_prepare # 只编译 USB CAN 目录下的模块(节省时间) make M=drivers/net/can/usb modules

2.3 编译成功标志

# 检查编译出的模块文件 ls -la ~/kernel_build_src/drivers/net/can/usb/gs_usb.ko

输出:gs_usb.ko文件存在

三、安装和加载驱动

# 创建 USB CAN 驱动目录(如果不存在) sudo mkdir -p /lib/modules/$(uname -r)/kernel/drivers/net/can/usb/ # 复制生成的 .ko 文件到系统模块目录 sudo cp drivers/net/can/usb/gs_usb.ko /lib/modules/$(uname -r)/kernel/drivers/net/can/usb/ # 更新模块依赖关系 sudo depmod # 加载驱动模块 sudo modprobe gs_usb # 验证模块是否加载成功(应该看到 gs_usb) lsmod | grep gs_usb

输出:

gs_usb 24576 0
can_dev 36864 2 mttcan,gs_usb

四、配置 CAN 接口

4.1 查看接口

ip link show | grep can

输出:

2: can0: <NOARP,ECHO> mtu 16 qdisc noop state DOWN mode DEFAULT group default qlen 10
link/can
9: can1: <NOARP,ECHO> mtu 16 qdisc noop state DOWN mode DEFAULT group default qlen 10
link/can

系统自带的 CAN 控制器显示为can0

USB-CAN 适配器显示为can1(或can0,取决于硬件)

4.2 启用并配置接口

# 启用 can1(根据实际接口调整) sudo ip link set can1 up type can bitrate 500000 # 验证状态 ip link show can1

输出:state up状态正常

9: can1: <NOARP,UP,LOWER_UP,ECHO> mtu 16 qdisc pfifo_fast state UP mode DEFAULT group default qlen 10
link/can

4.3 测试通信

# 监听 CAN 数据 candump can1

输出:

can1 221 [8] 00 00 00 00 00 00 00 00
can1 281 [8] 00 00 00 00 00 00 00 00
can1 271 [8] 00 00 00 00 00 00 00 00
can1 241 [8] 00 7E 7E 7E 7E 7E 00 92
can1 251 [8] 00 00 00 04 FF FF FF FC
can1 252 [8] 00 00 00 00 00 00 00 01
can1 262 [8] 01 EB 00 28 1A 40 00 00
can1 253 [8] 00 00 00 01 FF FF FF FC