原创:未经同意,请勿转载
我们在windows 通过USB连接串口,在设备串口中可以观测到COM0或者COMx.当我们插入不同的USB口时会显示不同的COM。
在UBUNTU下,ROS下接收串口信息时,也需要设置COM接口,特别是当有两个串口接入的时候,需要区分对应COM端口号。
接下来我们就来解决在ROS下串口变动的问题,通过软连接固定COM口。
1.首先我们打开一个终端,输入如下命令:
ll /dev
出现如下:
发现里边没有关于USB COM信息,这是因为我们还没有接入串口。
2. 我们将串口数据线通过USB接入UBANTU系统,在终端输入输入以上命令。
ll /dev
出现如下:可以看到有了一个ttyUSB0
3.查看USB接口权限,若为一个rw,则需要修改USB权限,将其设置为所有用户可读可写模式,这样做是为了实现对USB0进行访问。
也是通过命令:
ll /dev
若这里只有一个rw,则需要修改权限。通过以下命令修改。在修改之前首先要进入dev路径
cd /dev
sudo chmod 666 ttyUSB0
修改之后就会发现USB0变为了可读可写模式。
4.获取该USB的硬件编码(idVendor)和产品编码(idProduct),不同的USB有着不同的硬件编码和产品编码,在终端输入如下命令:
lsusb -vvv
出现如下界面:可以找到USB硬件编码和产品编码。
5.在home下创建文件rqlidar.rules文件,并将其复制到/utc/udev/rules.d/路径下。
在rqlidar.rules中写入如下内容:其中"rplidar"是软连接名称。
KERNEL=="ttyUSB*", ATTRS{idVendor}=="1d6b", ATTRS{idProduct}=="0002", MODE:="0666", SYMLINK+="rplidar"
在硬件编码(idVendor)和产品编码(idProduct)对应位置填入4步中获得的编码。
使用如下命令进行复制:
cp rqlidar.rules /etc/udev/rules.d
进入该路径下查看是否存在该文件,也可以通过gedit打开文件进行查看。
6.拔下USB接口,并再次插入,在终端下输入:
ll /dev
在列表中会存在如下条目:表示已经实现了软连接。
总结:
通过以上的方法我们实现了串口USB的软连接,不需要再去考虑COMx,只需要在代码实现连接的地方将串口设置为软连接名称就可以了。