Ros 与 STM32 之Ros串口同设备USB固定

2023-05-16

研究后发现Ros与STM32 都是通过串口 TTL转USB 的方式连接到USB

A:有两种形式 一种 使用 ros-kinetic-serial 中的py  包用的ROS的serial功能包

B:另一种则是使用编写的c的liunx底层的驱动方式 通过将ros移植在STM32中通过串口直接订阅

C:前阶段大致的思路是 先绑定 ubantu的串口 usb0 然后打开 然后定义通讯方式

---------------------------------------------------------------------------------------------------------------------------------

本章先从ubantu固定串口开始入手,因为需要不得不再添加一块CH340

在原来的基础上增加一个ttyUSB进行串口通信 也称有线控制

linux系统插入多个USB串口设备时,串口的编号不是固定的,与串口上电的顺序有关。

为了解决每次上电顺序不同,或插入顺序不同的问题,

可以将USB设备固定到某一端口位置,映射成自己的设备名字。

---------------------------------------------------------------------------------------------------------------------------------

首先基本操作查看自己当前设备上的USB

lsusb
lsusb -t

查看当前USB1的详细信息

udevadm info -a -n /dev/ttyUSB1
udevadm info --name=/dev/ttyUSB1 --attribute-walk

查看自己当前USB的挂在情况

ls -l /dev |grep ttyUSB

赋予当前窗口启动的权限

sudo chmod 777 /dev/ttyUSB0

--------------------------------------------------------------------------------------

绑定串口的方式又存在两种:

A:根据电脑USB硬件端口绑定,只要插入该USB端口即为设定设备名

同类型厂家设备也有效,固定的是工控机本体的端口号,需要固定设备插入位置

<1> 查看usb

lsusb

<2> 再插入或打开USB设备,输入

ls /dev

<3> 找到USB设备的名称(确定当前各个设备的串口名字,如机械臂是ttyUSB1,激光雷达是ttyUSB0),然后输入

udevadm info --attribute-walk --name=/dev/ttyUSB1

可以得知该设备现在使用的端口号为“1-2.4.4:1.0”,接下来开始编写绑定规则

<4>创建rules文件

<5>第一行是方式二 第二行为加入代码互补冲突互不影响

ACTION=="add",KERNELS=="1-2.4.4:1.0",SUBSYSTEMS=="usb",MODE:="0777", SYMLINK+="rplidar"

<6>复制文件到达当前的系统目录下

cp /home/zy/test_ws/src/serial_test/udev/com.rules /etc/udev/rules.d

<7>软件重新装载软件重新开始

service udev reload

service udev restart

<8>硬件☕插拔保存文件并重启PC,在终端中输入

ls -l /dev |grep ttyUSB

 可以看到这里已经完成了这两个USB的分别输入

<9>测试一些打开USB1能否接收到STM32发出的信息

PS:因为是绑定固定的端口,所以usb的接口不能随意更换位置,考虑以后在HUB上标注各个位置插的设备。

B:根据设备ID绑定

都是不同类型厂家设备时使用,此方法可以不用固定设备插入的位置

<1>查看当前的端口号

lsusb

 <2>新建一个规则文件:

sudo gedit /etc/udev/rules.d/com_rplidar.rules

自定义打开文件写入自定义规则。这里最好新建一个文件,不要覆盖以前的文件了。如果是相同设备还需要额外的辨别参数也可以添加额外的参数。我们只取前面的数值10c4,ea60,,后面的描述不要。

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

<3>然后使其作用:

sudo udevadm trigger

<4>查看是否成功

ls -l /dev/ttyRplidar 
lrwxrwxrwx 1 root root 7 Nov 12 22:22 /dev/ttyRplidar -> ttyUSB0

<5>或者

ls /dev/tty*

如图,可以看到新增了一个设备,正是我们在规则文件中设置的别名。

如果不行的话先检测规则文件的格式有没有错误,接着将USB拔了再重插。

还有其他额外的设备需要则加一行,方法一样。

补充:

记录USB设备详细信息

    udevadm info --name=/dev/ttyUSB0 --attribute-walk

这条指令执行后,命令行会打印一大串信息,一直往上翻,找到一快描述如下图所示,

是关于1-1.2的描述,记下其中的ATTRS{idVendor}、ATTRS{idProduct} 和 ATTRS{serial} 的值。

编写USB设备命名规则文件

SUBSYSTEM=="tty",ATTRS{idProduct}=="7523", ATTRS{idVendor}=="1a86", SYMLINK+="RSSICOM"
SUBSYSTEM=="tty",ATTRS{idProduct}=="6001", ATTRS{idVendor}=="0403", ATTRS{serial}=="A50285BI",SYMLINK+="Planectrcom"
SUBSYSTEM=="tty",ATTRS{idProduct}=="6001", ATTRS{idVendor}=="0403", ATTRS{serial}=="AK04WQD8",SYMLINK+="zigbeecom"

其中SUBSYSTEM的内容保持一致,之后的填入之前获取的信息,

最后的SYMLINK的值可以自由发挥,取个自己想要的名字即可。

细心的小伙伴可能已经发现了在第三步编写命名规则的文件中,

第一行并没有写关于ATTRS{serial} 的配置,第二和第三行都写了,

只有在当不同的usb设备的idVendor和idProduct都相同的情况下才需要增加这个参数加以区分。

将新规则应用

sudo udevadm trigger

致谢

ubuntu下修改usb设备为固定设备名 - 走看看在ubuntu下经常插入多个usb设备则需要知道端口号但是每次都是随即分配/dev/ttyUSB0~9 一,绑定usb芯片,但是同型号芯片不能同时插 则通过一下方法绑定设备串口名称 首先 lsusbhttp://t.zoukankan.com/miaorn-p-14144854.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ros 与 STM32 之Ros串口同设备USB固定 的相关文章

  • Android 上的 HP TouchPad USB 驱动

    我可以在运行的 HP TouchPad 上进行应用程序开发吗氰基模组 http en wikipedia org wiki CyanogenMod 9 我有一个安装了 CyanogenMod 9 的 HP TouchPad 并且正在尝试从E
  • USB 调试 - 安装 Epson Moverio 驱动程序时出现问题

    Android 开发新手 我使用以下命令制作了一个小应用程序Eclipse http en wikipedia org wiki Eclipse 28software 29在虚拟 Android 设备上完美运行 现在 我想在真实的设备上运行
  • 如何在没有窗口句柄的情况下使用 RegisterDeviceNotification?

    我正在编写一个 DLL 库 该库使用 VB NET 中的 winusb 连接到 USB 设备 由于它是一个 DLL 所以我没有窗口 而且我的库的用户也可能没有窗口 例如命令行应用程序 我见过的检测设备连接和分离的示例都使用RegisterD
  • 通过Android USB主机与智能卡读卡器通信

    我正在尝试向智能卡发送命令 我用一个金雅拓 IDBridge CT30 PC TWIN 读卡器 http www smartcardfocus com images content GEMTR jpg and a ID桥K30 http c
  • 如何对 USB/HID/蓝牙适配器进行逆向工程。使用什么工具?

    需要对蓝牙USB鼠标适配器进行逆向工程 并使用鼠标板测量距离 并用绘图库 http matplotlib org 我发现这些工具可以帮助完成此任务 Linux lsusb usbmon usbhid转储 rfcomm hidrd 转换 xx
  • 如何枚举 USB 设备*并*对其进行读/写?

    我需要与一个自定义 USB 设备进行通信 它没有特定的驱动程序 该设备不显示为 dev tty I 发现 http www signal11 us oss udev 我该如何使用libudev枚举 USB 设备 假设我设法获得相应的stru
  • 在 Contiki 程序中使用 malloc

    考虑以下 Contiki 程序 include
  • Windows 8.1 上的 Pyusb - 没有可用的后端 - 如何安装 libusb?

    使用 pyinstaller 3 1 python 2 7 9 和 tkinter 尝试使用 pyusb 而不是 pyserial 但没有可用的后端 调查Windows 上的 Pyusb 没有可用的后端 https stackoverflo
  • STM32F0、ST-link v2、OpenOCD 0.9.0:打开失败

    我在用着发射台 http www ti com ww en launchpad about htmlgcc arm none eabi 4 9 2015q2 为 STM32F0 进行编译 现在我想使用该集合中的 arm none eabi
  • Android 版 usbmon

    我想分析我的设备的 USB 通信 SGS4 我到处都看到需要配置 usbmon 并将其编译到内核中 Afaik 这个模块没有内置在android linux系统中 我在编译内核方面没有太多经验 但如果有必要 我会这样做 您能说出这样做的步骤
  • 使用 STM32F0 ADC 单独读取不同的输入

    STM32F072CBU 微控制器 我有多个 ADC 输入 并且希望单独读取它们 STMcubeMX 生成样板代码 假设我希望按顺序读取所有输入 但我无法弄清楚如何纠正这个问题 这篇博文 http blog koepi info 2015
  • Java 两个独立键盘的独立输入

    我有两个 USB 键盘插入同一台机器 我正在开发一个 Java 应用程序 是否有办法允许 Java 应用程序分离出它来自哪个 USB 键盘 即是否有类似的东西http docs oracle com javase 6 docs api ja
  • 在 Linux (libusb-1.0) 上访问 USB 设备?

    我正在编写一个小程序 使用 Linux 上的 libusb 1 0 与特定 USB HID 产品 由供应商和产品 ID 标识 进行通信 现在 我必须以 root 身份运行该程序 因为 libusb 需要对 USB 设备节点的写访问权限 有没
  • 如何将 Android USB 连接模式更改为仅充电? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案
  • 时间:2019-03-17 标签:c#usbdecision

    我们当前的应用程序中有几个进程 一个进程处理 USB 加载程序的检测和删除 处理检测和删除的代码如下 protected override void WndProc ref Message m switch m Msg case Win32
  • 如何在java中访问USB端口[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试编写一个java应用程序来访问USB端口以读取和写入通过USB连接的设备 我面临的问题是我不
  • 如何在 ADB 连接期间禁用电池充电?

    问题描述 每次我在电脑和手机之间连接 USB 线时 电池都会自动充电 我想使用 ADB 协议 但我不想在 ADB 连接期间为电池充电 是否可以关闭此充电功能 当然 我该怎么做呢 环境 Android 操作系统 4 及更高版本的手机 我只需要
  • ASP.NET/Silverlight 控制 USB 设备

    我想使用某种 USB 设备 例如闪光灯 提醒用户有新消息 是否可以从 ASP NET 或 Silverlight 控制 USB 设备 您可以在网页中使用自定义 ActiveX 组件和一些 javascript 来完成此操作 或者 您可以使用
  • USB编程

    我想对微控制器 AVR 进行编程 以通过 USB 控制一些 LED 它只是出于对如何构建和编程 USB 设备的兴趣 有一些 AVR 微控制器支持 USB 协议 或者我可以自己在另一个微控制器中实现 USB 协议 但我想知道用什么来在计算机上
  • Android 10 中没有设备筛选器的 USB_DEVICE_ATTACHED

    我正在开发一个 Android 应用程序 它在清单中为 BroadcastReceiver 注册了四个意图过滤器 这些都是 android hardware usb action USB DEVICE ATTACHED android ha

随机推荐

  • 一、ROS2简介

    ros2相关简介 ROS2的前身是ROS xff0c ROS即机器人操作系统 xff08 Robot Operating System xff09 但是ROS本身并不是一个操作系统 xff0c 而是一个软件库和工具集 Ros的出现解决了机器
  • 二、ROS2基本操作

    ROS2节点 ROS2的节点讲究分工合作 xff0c 每个节点负责一个单独的模块化功能 举一个激光雷达的例子 xff0c 一个节点负责获取激光雷达的扫描数据 xff0c 一个节点负责处理激光雷达数据 xff0c 还有一个节点负责控制车轮转动
  • 六、ROS2通信机制(服务)

    一 服务介绍 客户端发送请求给服务端 xff0c 服务端可以根据客户端的请求做一些处理 xff0c 然后返回结果给客户端 这里与话题的主要区别就是 xff1a 话题是没有返回的 xff0c 适用于单向或大量的数据传递 而服务是双向的 xff
  • 作业4-8-5:HBase Shell插入数据:学生表、课程表、选课表

    现有以下关系型数据库中的表和数据 xff0c 要求将其转换为适合于HBase存储的表并插入数据 xff1a 学生表 xff08 Student xff09 keyRow 学号 xff08 S No xff09 姓名 xff08 S Name
  • 树莓派4B连接PCF8591模块

    1 PCF8591是8位的数模 模数转换集成芯片 xff0c 如图 1 xff08 详细介绍可以点击参考 xff09 图 1 PCF8591 2 AIN0 AIN3接模拟输入 xff0c 比如气体传感器 xff0c 能外接三个通道的模拟输入
  • “指定的网络名不再可用”解决办法

    主机操作系统 xff1a win10 linux操作系统 xff1a ubuntu22 04 在Windows下安装ubuntu xff08 wsl xff09 时 xff0c 出现 指定的网络名不再可用 xff0c 解决办法如下 xff1
  • Jetson xavier nx 安装CUDA10.2,和cudnn8.0

    2022 6 16更新 现在Jetson xavier nx 安装CUDA和CUDNN不需要下面那么复杂了 xff0c 可以直接通过刷机将其安装到设备上 在官网下载SDK Manager可以直接将CUDA烧录进设备 xff08 特别注意如果
  • 关于return用法时,return报错。

    在for循环里面return想要跳出全部循环时 xff0c 会报语法错误SyntaxError return outside function 原因是return只能写在def函数里面 没有def n span class token op
  • 联邦卡尔曼滤波

    联邦Kalman滤波 利用Kalman滤波技术对多传感器数据进行最优融合有两种途径 集中式Kalman滤波和分散化滤波 集中式Kalman滤波利用一个滤波器来集中处理所有子系统的信息 分散化滤波利用子滤波器处理子系统的信息通过全局滤波器实现
  • 教你10分钟完成智能小车的PID调速

    简介 这是我在CSDN上面的第一篇博客 xff0c 来分享一下我是如何用最短的时间进行智能小车的PID调速的 在疫情期间比较无聊 xff0c 在某宝买了一个智能小车底盘和一堆零件 xff0c 基于Arduino Due和树莓派进行开发 xf
  • 实战低通滤波和卡尔曼滤波

    目录 背景所需硬件与软件理论基础一阶低通滤波卡尔曼滤波 仿真验证实际验证总结 背景 滤波这个词对任何一个工科生都不会陌生 xff0c 尤其是做控制或者信号方面的从业者和学生 我们不仅可以通过硬件滤波也可以通过软件设计算法滤波 xff0c 这
  • matplotlib保存图片为pdf格式,文字以字体形式保存,可以illustrator编辑,而不是喵点格式。

    用默认的 plt savefig xff08 xff09 保存的图片 xff0c 图利和label都是以瞄点保存的 xff0c 而不是以文字格式 这样在矢量图编辑中想要调整文字大小和字体时都不方便 使用mpl可以设置pdf图片文字以字体形式
  • 树莓派新系统无键盘安装与设置

    sudo raspi config 1 在Boot根目录下创建文件 xff1a wpa supplicant conf xff1a country 61 CN ctrl interface 61 DIR 61 var run wpa sup
  • 无人机自动驾驶软件系列 E01:OFFBOARD控制以及Gazebo仿真

    引言 https gaas gitbook io guide software realization build your own autonomous drone wu ren ji zi dong jia shi xi lie off
  • 一定能解决ROS系统 rosdep update超时问题de简单方法

    rosdep update命令使用 该方法是可以跳过sudo rosdep init初始化命令设置的 xff0c 前提是安装ros xff1a https blog csdn net weixin 44023934 article deta
  • 使用速腾雷达32线Helios和fast-LIO2算法建图(一)

    一 配置激光雷达数据 参考链接Ubuntu18 04 安装速腾聚创最新驱动RSLidar SDK采集XYZIRT格式的激光点云数据 SLAM不学无术小问题 下载驱动文件内部也有使用说明 第一步 xff1a 下载rslidar sdk xff
  • linux下发各种协议包及其详细分析

    申明 xff1a 本实验在一个虚拟机环境下完成 xff0c ip分别为 192 168 26 1 和 192 168 26 132 一 以太帧格式的分析 1 抓取方法描述 在192 168 26 132浏览网页产生数据包 xff1b 通过w
  • 使用速腾雷达32线Helios和fast-LIO2算法建图(三)

    一 建图 1 源码下载 https github com hku mars FAST LIO 2 配置环境 步奏一 安装PCL gt 61 1 8 PCL的安装可以参考 可选 xff0c 建议考虑不用安装 https blog csdn n
  • Ubuntu 18.04 安装RealSense D435教程

    1 更新内核 运行代码 uname r 如果 gt 61 4 4 0 50的版本则ok xff0c 否则需要升级内核 2 更新cmake xff08 需要3 6以上版本 xff09 xff08 需要科学上网 xff09 首先下载cmake
  • Ros 与 STM32 之Ros串口同设备USB固定

    研究后发现Ros与STM32 都是通过串口 TTL转USB 的方式连接到USB A xff1a 有两种形式 一种 使用 ros kinetic serial 中的py 包用的ROS的serial功能包 B xff1a 另一种则是使用编写的c