如果在 Ubuntu 系统中两个设备出现两个相同的端口号解决方案

问题描述: 

自己的移动机器人在为激光雷达和IMU配置动态指定的端口时,发现激光雷达和深度相机配置的 idVendor 和 idProduct 相同,但是两个设备都具有不同的ttyUSB号,如下图所示

  • idVendor:代表着设备的生产商ID,由USB设备生产商向USB-IF官方来统一管理和申请。
  • idProduct:代表着该生产商生产的产品编号,同一厂商下的不同idProduct代表着该公司不同的产品系列。

 f3d91bc0cc4649d9abf7742cb066fb43.png91682c192766437691166c1a9b38c79a.png


解决方法:

出现此问题的原因是两个串口芯片都是CP2102……芯片ID号都一致。但是可以通过查询USB口的具体信息,发现一个地方可以区分开,那就是端口路径!!(这个端口就是我们字面的意思,不同的USB的插口!)

1、使用如下

 使用如下的指令分别查询ttyUSB0和ttyUSB1的端口具体信息

 1)查询 USB0的具体信息,其中主要关注 ATTR{devpath} 

# 查询 USB0 的信息
udevadm info -a -p $(udevadm info -q path -n /dev/ttyUSB0)

 b5ac46903f004639a0e15692bbfd6c4f.png

 查询 USB1 的具体信息,其中主要关注 ATTR{devpath}

# 查询 USB1 的信息
udevadm info -a -p $(udevadm info -q path -n /dev/ttyUSB1)

 f9c26e8f0ebb4b0ea09604e5a3099a97.png

可以看出,在Ubuntuh中可以通过 ATTR{devpath} 的不同来对两个设备进行区别。需要记住这两个端口路径号,在下面的规则设定中需要使用这个编号。

2、修改IMU和激光雷达的端口配置规则

1)激光雷达的规则修改:

# 这里的 ATTRS{devpath}=="2" 对应于刚刚上面查询 ttyUSB1 的信息,因为查询时激光雷达对应 ttyUSB1 端口

KERNEL=="ttyUSB*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60",ATTRS{devpath}=="2", MODE:="0777", SYMLINK+="laser"

2)IMU的规则修改:

# 这里的 ATTRS{devpath}=="3" 对应于刚刚上面查询 ttyUSB0 的信息,因为查询时激光雷达对应 ttyUSB0 端口

KERNEL=="ttyUSB*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60",ATTRS{devpath}=="3", MODE:="0777", SYMLINK+="IMU"

 3、验证配置结果

将上述的两个配置完成后,重新执行上述修改的规则,然后将Ubuntu系统重启或者重新拔插后,使用如下指令即可查询到配置结果即可看到设备分别指向其所在的ttyUSB端口。

ll /dev/ | grep ttyUSB*

1)把两个设备插在刚开始查询的端口,可以看到如下效果

697963afab28416bb60f11fe665a7d7c.png

2)我再调转下插接先后顺序,把两个设备调换接口

7fa5ba1025524b98a943e04aa7985f9c.png

此时便可以不管两个设备插入到主机上的先后顺序了,规则都会映射到对应的端口上。

只是此处需要注意的是,两个设备的端口相当于刚刚在配置时已经锁定,便不能插接其他端口,插接其他端口就不能找到此设备了。

参考博客

 【ROS学习】修改串口的别名_ros的串口号会变-CSDN博客

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/521040.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

并查集学习(836. 合并集合 + 837. 连通块中点的数量)

//得先加集合个数再合并!!!!!!!!! 核心代码: int find(int x){//返回父节点if(x ! p[x]) {p[x] find(p[x]);//路径压缩 } //孩子不等于爸爸,就…

springboot+vue学生宿舍物品存放系统tnozt

需求包括: 三个角色:学生,公寓管理员(宿舍管理人员),系统管理员。 本系统基于java语言,结合数据库技术,通过面向对象的设计方法,实现学生信息管理、公寓信息管理、物品存…

STM32外部中断编程相关

一,Nested vectored interrupt controller NVIC即嵌套向量中断控制器,它是内核的器件,M3内核都是支持256个中断,其中包含了16系统中断和240个外部中断,并且具有256级的可编程中断设置。芯片厂商一般不会把内核的这些资…

假期别闲着:REST API实战演练之创建Rest API

1、创建实体类,模拟实体对象 创建一个类,模拟数据数据库来存储数据,这个类就叫Person。 其代码如下: package com.restful;public class Person {private String name;private String about;private int birthYear;public Perso…

MacOS下载和安装HomeBrew的详细教程

在MacOS上安装Homebrew的详细教程如下:(参考官网:macOS(或 Linux)缺失的软件包的管理器 — Homebrew) 步骤1:检查系统要求 确保你的MacOS版本至少为macOS Monterey (12) (or higher) 或更高版本…

C语言程序编译全流程,从源代码到二进制

源程序 对于一个最简单的程序&#xff1a; int main(){int a 1;int b 2;int c a b;return 0; }预处理 处理源代码中的宏指令&#xff0c;例如#include等 clang -E test.c处理结果&#xff1a; # 1 "test.c" # 1 "<built-in>" 1 # 1 "&…

【力扣】94. 二叉树的中序遍历、144. 二叉树的前序遍历、145. 二叉树的后序遍历

先序遍历&#xff1a;根-左-右中序遍历&#xff1a;左-根-右后序遍历&#xff1a;左-右-根 94. 二叉树的中序遍历 题目描述 给定一个二叉树的根节点 root &#xff0c;返回 它的 中序 遍历 。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,3…

【ControlNet v3版本论文阅读】

网络部分最好有LDM或者Stable Diffusion的基础&#xff0c;有基础的话会看的很轻松 Abstract 1.提出了一种网络结构支持额外输入条件控制大型预训练的扩散模型。利用预训练模型学习一组不同的条件控制。 2.ControlNet对于小型&#xff08;<50k&#xff09;或大型&#xff…

vue项目使用element ui

目录 1、创建一个vue项目 2、找到element官网&#xff0c;点击指南&#xff0c;找到安装栏 3、 找到使用包管理器&#xff0c;复制命令 4、在main.js中引入element 5、使用element ui 6、找到App.vue&#xff0c;导入Button.vue文件&#xff0c;保存启动项目 1、创建一个vu…

千字深度理解:什么是电容的直流偏压特性?

原文来自微信公众号&#xff1a;工程师看海&#xff0c;与我联系&#xff1a;chunhou0820 看海原创视频教程&#xff1a;《运放秘籍》 大家好&#xff0c;我是工程师看海&#xff0c;很久没发千字长文了&#xff0c;原创文章欢迎点赞分享&#xff01; 电容是电路中最常用的被动…

GIt 删除某个特定commit

目的 多次commit&#xff0c;想删掉中间的一个/一些commit 操作方法 一句话说明&#xff1a;利用rebase命令的d表示移除commit的功能&#xff0c;来移除特定的commit # 压缩这3次commit,head~3表示从最近1次commit开始&#xff0c;前3个commit git rebase -i head~3rebase…

nest路由通配符使用

写法 路由路径 ‘ab*cd’ 将匹配 abcd 、ab_cd 、abecd 等。 src/cats/cats.controller.ts import { Controller, Get } from nestjs/common;Controller(cats) export class CatsController {Get(ab*cd)findAll1(): string {return 测试路由通配符;} }效果展示 截图1 截图2 …

蓝桥杯python组真题练习2

目录 1.裁纸刀 2.路径 3.排列字母 4.直线 5.纸张尺寸 1.裁纸刀 11.裁纸刀 - 蓝桥云课 (lanqiao.cn) import os import sys# 请在此输入您的代码sum 4 sum 19 sum 21*20 print(sum) 2.路径 12.路径 - 蓝桥云课 (lanqiao.cn) 这道题涉及到求两个数的最小公倍数。一开始…

企业如何设计和实施有效的网络安全演练?

现实世界中&#xff0c;武装部队一直利用兵棋推演进行实战化训练&#xff0c;为潜在的军事冲突做准备。随着当今的数字化转型&#xff0c;同样的概念正在以网络安全演习的形式在组织中得到应用&#xff0c;很多企业每年都会基于合理的网络攻击场景和事件响应做一些测试和模拟。…

Day:004(1) | Python爬虫:高效数据抓取的编程技术(数据解析)

数据解析-正则表达式 在前面我们已经搞定了怎样获取页面的内容&#xff0c;不过还差一步&#xff0c;这么多杂乱的代码夹杂文字我们怎样 把它提取出来整理呢&#xff1f;下面就开始介绍一个十分强大的工具&#xff0c;正则表达式&#xff01; 正则表达式是对字符串操作的一种…

【Python毕业设计】python基于CatBoost模型的混凝土强度预测研究(源码+数据集+毕业论文)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

PAC与BTI、MTE的关系

PAC与BTI、MTE的关系如何&#xff1f;标记是否有冲突&#xff1f;

manga-ocr漫画日文ocr

github 下载 解压 anaconda新建环境 conda create -n manga_ocr python3.8 激活环境 conda activate manga_ocr cd到解压目录 cd /d manga-ocr-master 安装依赖包 pip install -r requirements.txt pip3 install manga-ocr 下载离线model huggingface 123云盘 解压到一个目录…

蓝桥真题--路径之谜DFS解法

路径之谜 思路 前置知识&#xff1a;深度搜索模板搜索所有可以找的路径&#xff0c;将走过的靶子减去一走到最后一个格子的时候&#xff0c;直接去判断所有的靶子只有除最后一个位置的靶子&#xff0c;其余靶子都归零的时候&#xff0c;判断一个最后一个位置横坐标和纵坐标的靶…

Stale Diffusion、Drag Your Noise、PhysReaction、CityGaussian

本文首发于公众号&#xff1a;机器感知 Stale Diffusion、Drag Your Noise、PhysReaction、CityGaussian Drag Your Noise: Interactive Point-based Editing via Diffusion Semantic Propagation Point-based interactive editing serves as an essential tool to compleme…