研究后发现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固定相关推荐

  1. STM32和ROS串口通信常见问题汇总答疑

    STM32和ROS串口通信常见问题汇总答疑 大家好,我是白茶清欢,最近看了博客文章<stm32和ros的串口通信>有很多问题的评论,这里汇总回复一下. 问题1:运行时报错如下: rosru ...

  2. ROS机器人DIY教程:ROS和STM32通信(常规通信方式和rosserial)之通过上层修改底层参数

    本文主要介绍怎么编写代码实现在上层修改底层参数的相关知识,主要讲解使用两种通信方式来实现 1.rosserial方法,rosserial是官方对arduino提供的一种简单的通信协议,本人对这个库进行 ...

  3. ROS 移动机器人 STM32 Kinect2 智能车

    基于ROS平台的移动机器人-目录 说明 本系列博文将介绍基于ROS平台的移动机器人的搭建,包括小车的底盘的制作,控制和与上位机的通信,建图和导航. 目录 基于ROS平台的移动机器人-1-小车底盘的搭建 ...

  4. ROS机器人操作系统——如何将ROS与STM32连接(十六)

    ROS机器人操作系统 文章目录 ROS机器人操作系统 前言 一.两种控制器的功能 二.硬件连接 总结 前言 前面学习了ROS的基本操作,仅仅只使用这个操作系统并没有什么用处,还需要讲他与硬件相结合从而 ...

  5. 五、ROS使用serial包进行串口通信

    五.ROS使用serial包进行串口通信 1.下载串口调试助手CuteCom 2.下载虚拟串口模拟器socat 3.下载串口调试助手minicom 4.安装serial串口功能包 5.创建工作空间 6 ...

  6. ROS笔记(39) 串口配置

    ROS笔记(39) 串口配置 1. 前言 2. 串口通讯 3. C++配置 3.1. 安装serial 3.2. 配置 3.3. 编译 3.4. 通讯测试 4. Python配置 4.1. 安装pys ...

  7. agx 安装ros opencv_【树莓派ROS开源机器人】阿克曼转向机器人,最接近无人自动驾驶的人工智能机器人...

    塔克创新出品的系列入门ROS智能机器人学习开发平台,包括麦克纳姆轮机器人,四轮差速机器人,两轮差速机器人,阿克曼转向小车等平台.可实现SLAM建图导航.自动避障.雷达跟随.视觉巡线.三维建图.手机AP ...

  8. STM32的USART串口通讯程序(查询方式)

    STM32的USART串口通讯程序(查询方式) 文章目录 STM32的USART串口通讯程序(查询方式) 一.USART介绍 1.异步通信: 2.同步通信: 二.CubeMX创建项目 1.点击ACCE ...

  9. 在 stm32CubeMX下生成程序完成流水灯以及完成STM32的USART串口通讯程序实现STM32系统给上位机(win10)连续发送“hello windows”

    目录 一.STM32CubeMX简介及安装 二.利用STM32CubeMX生成代码 1.创建项目 2.配置芯片 3.导出项目 ​ 三.Keil中补充代码完善功能 四.在Keil中观察实验波形 五.US ...

最新文章

  1. epoll监听文件_怎么理解把标准输入以ET模式加入epoll,监听EPOLLOUT事件时,epoll_wait多次返回?...
  2. 10个有趣的javascript和css库(2019年5月最新)
  3. 《SqlServer性能分析一》
  4. Java Web技术经验总结(二)
  5. MongoDB数据库索引基础知识与实战技巧
  6. Android: Bundle机制
  7. 地图投影系列介绍(一)----地球空间模型
  8. 【Python】如何判断一个字符串为空
  9. java heap_javaHeap的组成及GC监控
  10. java中抽象类与接口的不同之处
  11. html语言format,HTML 文本格式化
  12. 【zookeeper 获取节点数据getData源码解析】
  13. img和文字都居中对齐
  14. linux mysql cnf_mysql在linux下查看my.cnf位置的方法
  15. 什么是学习?如何学习?
  16. Android原生(Native)C开发
  17. AGV调度:路径规划
  18. Java eclipse控制台按任意键返回主菜单 控制台清屏
  19. 正则匹配字符串最后一个逗号,不是逗号不匹配
  20. CV:无人驾驶/自动驾驶汽车中涉及的软硬件技术(摄像头、雷达、激光雷达)、计算机视觉技术(检测、分类、跟踪、语义分割)的简介

热门文章

  1. 单片机如何优雅的读取0-10V传感器信号(一)
  2. Ubuntu安装显卡驱动弹secure boot
  3. 4、ArrayList的详细扩容过程
  4. C#大型医院HIS系统源码 医院信息管理系统源码 C/S架构 VS2013+sql2012
  5. java计算机毕业设计医疗器械销售电子商城源程序+mysql+系统+lw文档+远程调试
  6. docker搭建searx_Searx
  7. 面对区块链行业的鱼龙混杂,怎么合理分辨
  8. 企业AAA信用等级办理好处,认证流程
  9. python自动更新pom文件
  10. 如果让你来测试扫码支付,你会考虑哪些场景?