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

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.sh2.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_USBm grep CONFIG_CAN_GS_USB .config2.2 编译gs_usb模块# 准备编译环境生成必要的头文件 make modules_prepare # 只编译 USB CAN 目录下的模块节省时间 make Mdrivers/net/can/usb modules2.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 0can_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 10link/can9: can1: NOARP,ECHO mtu 16 qdisc noop state DOWN mode DEFAULT group default qlen 10link/can系统自带的 CAN 控制器显示为can0USB-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 10link/can4.3 测试通信# 监听 CAN 数据 candump can1输出can1 221 [8] 00 00 00 00 00 00 00 00can1 281 [8] 00 00 00 00 00 00 00 00can1 271 [8] 00 00 00 00 00 00 00 00can1 241 [8] 00 7E 7E 7E 7E 7E 00 92can1 251 [8] 00 00 00 04 FF FF FF FCcan1 252 [8] 00 00 00 00 00 00 00 01can1 262 [8] 01 EB 00 28 1A 40 00 00can1 253 [8] 00 00 00 01 FF FF FF FC