樹莓派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

重新插入串口設備,普通用戶就擁有開啟串口的權限了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM