Ros 与 STM32 之Ros串口同设备USB固定
研究后发现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 reloadservice 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
Ros 与 STM32 之Ros串口同设备USB固定相关推荐
- STM32和ROS串口通信常见问题汇总答疑
STM32和ROS串口通信常见问题汇总答疑 大家好,我是白茶清欢,最近看了博客文章<stm32和ros的串口通信>有很多问题的评论,这里汇总回复一下. 问题1:运行时报错如下: rosru ...
- ROS机器人DIY教程:ROS和STM32通信(常规通信方式和rosserial)之通过上层修改底层参数
本文主要介绍怎么编写代码实现在上层修改底层参数的相关知识,主要讲解使用两种通信方式来实现 1.rosserial方法,rosserial是官方对arduino提供的一种简单的通信协议,本人对这个库进行 ...
- ROS 移动机器人 STM32 Kinect2 智能车
基于ROS平台的移动机器人-目录 说明 本系列博文将介绍基于ROS平台的移动机器人的搭建,包括小车的底盘的制作,控制和与上位机的通信,建图和导航. 目录 基于ROS平台的移动机器人-1-小车底盘的搭建 ...
- ROS机器人操作系统——如何将ROS与STM32连接(十六)
ROS机器人操作系统 文章目录 ROS机器人操作系统 前言 一.两种控制器的功能 二.硬件连接 总结 前言 前面学习了ROS的基本操作,仅仅只使用这个操作系统并没有什么用处,还需要讲他与硬件相结合从而 ...
- 五、ROS使用serial包进行串口通信
五.ROS使用serial包进行串口通信 1.下载串口调试助手CuteCom 2.下载虚拟串口模拟器socat 3.下载串口调试助手minicom 4.安装serial串口功能包 5.创建工作空间 6 ...
- ROS笔记(39) 串口配置
ROS笔记(39) 串口配置 1. 前言 2. 串口通讯 3. C++配置 3.1. 安装serial 3.2. 配置 3.3. 编译 3.4. 通讯测试 4. Python配置 4.1. 安装pys ...
- agx 安装ros opencv_【树莓派ROS开源机器人】阿克曼转向机器人,最接近无人自动驾驶的人工智能机器人...
塔克创新出品的系列入门ROS智能机器人学习开发平台,包括麦克纳姆轮机器人,四轮差速机器人,两轮差速机器人,阿克曼转向小车等平台.可实现SLAM建图导航.自动避障.雷达跟随.视觉巡线.三维建图.手机AP ...
- STM32的USART串口通讯程序(查询方式)
STM32的USART串口通讯程序(查询方式) 文章目录 STM32的USART串口通讯程序(查询方式) 一.USART介绍 1.异步通信: 2.同步通信: 二.CubeMX创建项目 1.点击ACCE ...
- 在 stm32CubeMX下生成程序完成流水灯以及完成STM32的USART串口通讯程序实现STM32系统给上位机(win10)连续发送“hello windows”
目录 一.STM32CubeMX简介及安装 二.利用STM32CubeMX生成代码 1.创建项目 2.配置芯片 3.导出项目 三.Keil中补充代码完善功能 四.在Keil中观察实验波形 五.US ...
最新文章
- epoll监听文件_怎么理解把标准输入以ET模式加入epoll,监听EPOLLOUT事件时,epoll_wait多次返回?...
- 10个有趣的javascript和css库(2019年5月最新)
- 《SqlServer性能分析一》
- Java Web技术经验总结(二)
- MongoDB数据库索引基础知识与实战技巧
- Android: Bundle机制
- 地图投影系列介绍(一)----地球空间模型
- 【Python】如何判断一个字符串为空
- java heap_javaHeap的组成及GC监控
- java中抽象类与接口的不同之处
- html语言format,HTML 文本格式化
- 【zookeeper 获取节点数据getData源码解析】
- img和文字都居中对齐
- linux mysql cnf_mysql在linux下查看my.cnf位置的方法
- 什么是学习?如何学习?
- Android原生(Native)C开发
- AGV调度:路径规划
- Java eclipse控制台按任意键返回主菜单 控制台清屏
- 正则匹配字符串最后一个逗号,不是逗号不匹配
- CV:无人驾驶/自动驾驶汽车中涉及的软硬件技术(摄像头、雷达、激光雷达)、计算机视觉技术(检测、分类、跟踪、语义分割)的简介