運行平台是樹莓派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”
重新插入串口設備,普通用戶就擁有開啟串口的權限了
