当前位置: 首页 > news >正文

Ubuntu 下用 udev 固定 PX4 飞控 USB 设备名

1. 为什么要固定设备名

PX4 飞控通过 Type-C 连接电脑后,Ubuntu 一般会识别成:

/dev/ttyACM0

但是如果拔插顺序变化,或者电脑上接了多个 USB 设备,它可能变成:

/dev/ttyACM1 /dev/ttyACM2

这样 MAVROS 的启动命令就容易失效。

所以可以用udev规则,把飞控固定成一个自定义名字,例如:

/dev/px4_fcu

以后 MAVROS 里就固定使用:

serial:///dev/px4_fcu:57600

2. 建议统一创建一个规则文件

我建议机器人相关设备统一写到一个文件里:

sudo nano /etc/udev/rules.d/99-robot-devices.rules

这个文件名可以自己取,只要放在:

/etc/udev/rules.d/

并且以:

.rules

结尾即可。

例如下面这些名字都可以:

99-robot-devices.rules 99-px4.rules 99-usb-devices.rules

如果以后要添加相机、雷达、其他串口设备,也可以继续往99-robot-devices.rules里面加规则,不一定每个设备都新建一个文件。


3. 查询 PX4 当前设备

插上 PX4 飞控 Type-C 线后,执行:

ls /dev/ttyACM*

一般会看到:

/dev/ttyACM0

然后查询这个设备的 USB 物理路径:

udevadm info -q property -n /dev/ttyACM0 | grep ID_PATH

会得到类似:

ID_PATH=pci-0000:00:14.0-usb-0:3:1.0

复制ID_PATH=后面的内容,例如:

pci-0000:00:14.0-usb-0:3:1.0

4. 编写 udev 规则

打开统一规则文件:

sudo nano /etc/udev/rules.d/99-robot-devices.rules

添加下面这一行:

SUBSYSTEM=="tty", KERNEL=="ttyACM*", ENV{ID_PATH}=="pci-0000:00:14.0-usb-0:3:1.0", SYMLINK+="px4_fcu", GROUP="dialout", MODE="0660"

注意:这里的:

pci-0000:00:14.0-usb-0:3:1.0

要替换成自己电脑实际查到的ID_PATH

如果你想把设备名改成别的,例如:

/dev/fcu

那就把:

SYMLINK+="px4_fcu"

改成:

SYMLINK+="fcu"

5. 添加串口权限

执行:

sudo usermod -aG dialout $USER

然后重启电脑,或者退出当前用户重新登录。


6. 重新加载 udev 规则

执行:

sudo udevadm control --reload-rules sudo udevadm trigger

然后拔掉飞控 Type-C 线,再重新插上。


7. 检查是否绑定成功

执行:

ls -l /dev/px4_fcu

如果成功,会看到类似:

/dev/px4_fcu -> ttyACM0

这说明/dev/px4_fcu已经指向了当前 PX4 飞控设备。


8. 在 MAVROS 中使用固定设备名

原来可能使用:

serial:///dev/ttyACM0:57600

现在改成:

serial:///dev/px4_fcu:57600

例如:

ros2 run mavros mavros_node --ros-args \ -p fcu_url:=serial:///dev/px4_fcu:57600

如果是 launch 文件,也可以写成:

default_value='serial:///dev/px4_fcu:57600'

9. 如果以后添加其他设备

可以继续打开同一个文件:

sudo nano /etc/udev/rules.d/99-robot-devices.rules

然后在下面继续添加新规则。

例如另一个串口设备可以写成:

SUBSYSTEM=="tty", KERNEL=="ttyUSB*", ENV{ID_PATH}=="另一个设备的ID_PATH", SYMLINK+="my_serial", GROUP="dialout", MODE="0660"

如果是相机/dev/video0,可以先查询:

udevadm info -q property -n /dev/video0 | grep ID_PATH

然后规则大致类似:

SUBSYSTEM=="video4linux", KERNEL=="video*", ENV{ID_PATH}=="相机的ID_PATH", SYMLINK+="camera_front", MODE="0666"

10. 总结

最终 MAVROS 使用:

serial:///dev/px4_fcu:57600

不再使用不稳定的:

/dev/ttyACM0

只要 PX4 飞控插在同一个 USB 口上,设备名就会固定为:

/dev/px4_fcu
http://www.jsqmd.com/news/1093045/

相关文章:

  • AI大模型学习指南:Agent、MCP、Skill全解析,小白也能轻松收藏掌握
  • 如何高效捕获网页媒体资源:猫抓浏览器扩展的完整指南
  • 从Prompt到Harness:AI工程的三层进化,小白也能轻松掌握,建议收藏!
  • 豆包牛批普拉斯
  • 从多项式回归到“水平直线”:Matplotlib 绘图中的 NumPy 数组维度隐患
  • 汇编中寄存器寻址与立即数寻址混淆问题解决
  • Linux命令-quota(显示用户磁盘配额)
  • Matlab 麻雀优化双向长短期记忆网络(SSA-BILSTM)的时间序列预测(时序)
  • 京东抢购助手终极指南:免费开源工具实现自动化抢单
  • 2026证件照换衣服工具全解:手机APP、在线网页、小程序操作指南
  • RAG 搞定!告别「有库无答」,用 Rerank 让大模型精准回复(收藏版)
  • 别一上来就看复杂插件:先用 Delay看懂一个最小 VM 插件是怎么接进系统的
  • 小白程序员必看!收藏这篇,轻松入门大模型工具调用与Function Calling
  • 汇编——位移指令
  • 考验AI的“自我“-AI对《红楼梦》后40回的改写(30)
  • ReAct Inside —— 从 Message 到 State,看懂 AI Agent 的工作原理
  • Hutool 的 `TimedCache` 到期会自动清理吗? ——————hutool cache的“惰性清理“和“定期清理“
  • 递归函数Recursive Function
  • 如何评价GLM-5.2?
  • 联邦学习侧信道攻击:FLARE框架解析与防御
  • 成功企业的衰亡密码:从“看不见的癌症”到真正的长期主义
  • agency-agents-zh大更新:一句话,让 216个 AI 专家组队替你干活,上线桌面端和web端了!已开源
  • 每日一个开源项目(第145篇):Trellis - 把项目记忆、规范和任务上下文持久化进代码仓库
  • 2026好用的视频去水印工具电脑手机推荐,免费无广告精选
  • 量子约束优化搜索框架CBQS解析与应用
  • 计算机毕业设计之基于SSM框架技术的超市货品销售预警平台的设计与实现
  • 别让AI一直“读心“:冲突触发式心智理论的因果模型
  • 内网 Web 服务断外网后白屏卡顿?全链路排查手册与根治方案
  • 盘点优质虚拟资源货源,这家老牌平台凭什么让我死磕
  • 女性站长学SEO比男性更有优势吗?