树莓派3B开启串口并运行ROS的串口节点所遇问题

运行平台是树莓派3B,系统为ubuntu16.04 mate

一、树莓派3B串口配置问题:

(一)树莓派3B的板载蓝牙和串口互相冲突,两者只能用其一,使用串口就必须关掉蓝牙,将硬件串口恢复给GPIO的串口。恢复硬件串口的方法如下:

1、下载 pi3-miniuart-bt-overlay 文件,解压出pi3-miniuart-bt-overlay.dtb文件,并将dtb文件拷贝到/boot/overlays/目录下。

2、编辑/boot目录下的config.txt文件

sudo nano /boot/config.txt

在文件末尾添加以下两行:

dtoverlay=pi3-miniuart-bt-overlay
force_turbo=1

3、编辑/boot目录下的cmdline.txt文件

sudo nano /boot/cmdline.txt

修改为如下内容:

dwc_otg.lpm_enable=0 console=serial1,115200  console=tty1 root=/dev/mmcblk0p2  kgdboc=serial1,115200 rootfstype=ext4 elevator=deadline fsck.repair=yes  rootwait

保存并退出。

 

(二)关闭板载蓝牙方法:

1、输入下面命令关闭hciuart:

sudo systemctl disable hciuart

 2、编辑/lib/systemd/system/hciuart.server 将 “ttyAMA0”(或者serial0)修改为“ttyS0” 

 

 保存并退出。

3、更新并重启

sudo apt-get update
sudo apt-get upgrade
sudo reboot

 

(三)关闭串口登录树莓派的通道并使能串口

打开设置:

sudo raspi-config

依次选择Interfacing Options->serial->NO->YES

设置结果:

 

二、开启ROS串口节点所遇问题

运行ROS节点却发现打不开串口,原因一般为以下两种:

(一)串口号对不上问题

解决方法:

1、查看一下树莓派的串口号是否正确,查看指令如下:

ls -l /dev |grep ttyUSB

结果如下:

 ROS节点程序中用的是”/dev/ttyUSB0”串口端口号,因此端口号能够对应起来,否则的话需要修改程序中的端口号,使得程序中的端口号和设备的端口号相对应。

(二)串口开启权限问题

串口的开启需要root权限,节点运行成功却打不开串口,可能是用户没开启root权限,解决方法如下:

增加udev规则

创建文件/etc/udev/rules.d/70-ttyusb.rules:

sudo vim /etc/udev/rules.d/70-ttyusb.rules

在文件内添加:

KERNEL==”ttyUSB[0-9]*”, MODE=”0666

重新插入串口设备,普通用户就拥有开启串口的权限了

posted @ 2020-07-05 20:00  寒灵oay  阅读(944)  评论(0编辑  收藏  举报