樹莓派&ROS:驅動EAI的激光雷達YDLIDAR-X4

樹莓派&ROS:驅動EAI的激光雷達YDLIDAR-X4

【目錄】

    - 1、配置環境與背景介紹

        - 1.1、硬件配置環境

        - 1.2、主要參考文檔:

    - 2、下載源碼、編譯並配置環境

        - 2.1、建立工作空間

        - 2.2、下載ROS驅動包

        - 2.3、編譯代碼

        - 2.4、添加環境變量

        - 2.5、創建別名,運行腳本

        - 2.6、修改波特率

    - 3、運行激光雷達

    - 4、問題及解決

        - 4.1、供電不足導致雷達無法正常運行

        - 4.2、無法加載ydlidar節點

        - 4.3、RViz不顯示點雲圖像

        - 4.4、USB不識別

    - 5、查詢激光雷達數據及其發佈的消息

 

1、硬件環境與背景介紹

1.1、硬件配置環境

ROS2GO的U盤 系統:Ubuntu16.04 + ROS Kinetic

激光雷達:EAI的YDLIDAR X4

樹莓派:系統  Raspbian Stretch系統的ROS Kinetic

參考【發佈v1.0版本基於Stretch的ROS Kinetic完整版樹莓派3B+鏡像】

http://www.corvin.cn/948.html

1.2、激光雷達:YDLIDAR-X4

(1)基本參數

激光雷達候選:

1)EAI  YDLIDAR X4 :

安裝:數據線接口是水平方向,方便接線;

電源:轉接板有專門的電源接口(一個USB口接數據,一個USB口接電源)。

2)思嵐科技 RPLIDAR A1

安裝:數據和電源接口,朝向爲向下,安裝時要注意,容易卡住。

電源:供電和數據線是在一個usb口裏面,如果供電不足,會影響雷達工作。

3)參數對比

掃描頻率:電機轉速可調,Hz

(2)激光雷達的固定

雷達原來的固定支柱,塑料,螺紋孔不通用(好像是M2.5

被我改成了M3的螺柱(雖然不是塑料絕緣的,但影響不大),這樣後期把底座固定在打孔的木板上,選擇螺絲更方便。

1.3、主要參考文檔:

推薦: 《EAI官方 《YDLIDAR X4 使用手冊》

[介紹EAI的YDLIDAR-X4激光雷達在ROS下使用方法]

http://www.corvin.cn/686.html

[ROS與激光雷達入門教程-ROS中使用激光雷達(EAI F4)]

https://www.ncnynl.com/archives/201702/1362.html

[EAI激光雷達X4使用hector_slam建圖(一)]

https://blog.csdn.net/zhu751191958/article/details/78969825

《EAI官方文檔《YDLIDAR ROS 使用手冊.pdf》

[ROS與SLAM入門教程-激光雷達(EAI F4)gmapping構建地圖]

https://www.ncnynl.com/archives/201702/1363.html

2、下載源碼、編譯並配置環境

2.1、建立工作空間

mkdir -p ~/lidar_ws/src

 

注意: 一個工作空間不要放太多驅動,否則編譯時可能會系統卡死。

新建一個lidar_ws的工作空間:   mkdir -p ~/lidar_ws/src

自動生成文件夾目錄  /home/tianbot/lidar_ws/src

 

如果用eai的多種不同雷達,工作空間命名還可以更加細化,如建立X4激光雷達的制定工作空間 eaix4_ws :  mkdir -p ~/eaix4_ws/src

 

建立通用的工作空間 catkin_ws:  mkdir -p ~/catkin_ws/src

參考:

每天一個linux命令(4):mkdir命令

http://www.cnblogs.com/peida/archive/2012/10/25/2738271.html

 

進入進入工作空間目錄下

cd ~/lidar_ws/src

 

2.2、下載ROS驅動包

方法一、先下載再複製文件

官網下載X4雷達對應的ROS驅動包,複製到/home/tianbot/lidar_ws/src/ydlidar文件夾下

到百度上輸入EAI,找到EAI玩智商官網:

http://www.eaibot.com/

下載ROS驅動包

將下載好ROS雷達驅動包在windows下解壓並重命名爲ydlidar放到src裏,

 

方法二、直接聯網下載(可能不識別是X4的)

從github下載ydlidar x4的ROS下驅動源碼,該源碼需要放在ros工作空間下的src目錄下進行編譯,下載命令如下:

git clone https://github.com/EAIBOT/ydlidar.git

 

2.3、編譯代碼

切換工作空間根目錄 cd ~/lidar_ws

編譯整個工作空間 catkin_make

 

注意:編譯時候,注意目錄下src文件中是否有其他代碼,若代碼太多,容易編譯失敗,系統司機卡住

 

方法二、編譯生成 ydlidar_node 和 ydlidar_client。

$catkin_make --pkg ydlidar

 

參考:

首先切換到自己的ROS工作空間: $ cd ~/catkin_ws

如果你想編譯整個工作空間裏面的包:$ catkin_make

如果你只想編譯工作空間某一個包:$ catkin_make  -DCATKIN_WHITELIST_PACKAGES= "包名"

例如:$ catkin_make  -DCATKIN_WHITELIST_PACKAGES="beginner_tutorials"

原文: https://blog.csdn.net/qingdu007/article/details/51483065

 

2.4、添加環境變量

添加 ydlidar 環境變量到~/.bashrc 文件中,並使其生效,刷新配置。

      切換目錄 cd ~/lidar_ws

 

1)永久添加配置,以後就不用重複source刷新配置。

方法一(推薦)使用echo命令>>指令向文件追加內容,原內容將保存

$ echo "source ~/lidar_ws/devel/setup.bash" >> ~/.bash

方法二、打開文件,在~/.bashrc最後,手動添加添加一行以下內容:

source ~/lidar_ws/devel/setup.bash

 

(2)刷新配置

$ source ~/.bashrc

或 $ rospack profile

 

以防萬一還是再source當前環境:

source ~/lidar_ws/devel/setup.bash

 

打開文件 source devel/setup.bash

添加一行配置 echo "source ~/lidar_ws/devel/setup.bash" >> ~/.bashrc

刷新配置 source ~/.bashrc

 

操作步驟(方法二)、直接使用roscd指令切換到自己的程序包目錄

cd ~/lidar_ws

source devel/setup.bash(是否需要?)

echo "source ~/lidar_ws/devel/setup.bash" >> ~/.bashrc

source ~/.bashrc

roscd ydlidar(是否需要?)

 

參考:

【ROS學習筆記-roscd指令

 https://blog.csdn.net/jimjarry/article/details/78983675

備註:cd命令和roscd命令都是切換到指定目錄的命令。

不同的是,cdLinux系統的命令,在使用時必須指定目標目錄的完整路徑;

roscdros系統中的,利用包的名字直接切換到相應的文件目錄下。

 

2.5、爲USB設備創建別名

爲 X4 的串口增加一個設備別名 /dev/ydlidar,添加udev規則

 

方法一、直接用roscd命令進入目錄

$roscd ydlidar/startup

備註:注意觀察目錄是否錯誤

使腳本文件獲得權限

$sudo chmod 0777 *

運行腳本文件

$sudo sh initenv.sh

 

方法二、

#進入驅動包的startup目錄下:

#cd ~/lidar_ws/src/ydlidar/startup

使.sh腳本文件獲得權限:

sudo chmod +x initenv.sh

直接運行腳本文件:

sudo sh initenv.sh

 

注意:創建別名後, 重新插拔 USB 才生效

 

插入USB後,在終端中輸入以下命令,查看USB轉串口設備:

ls /dev/tty*

列出USB設備:

ls -l /dev/ttyUSB*

ls -l /dev/ydlidar

 

原理:

以後就不用來看雷達掛載點是ttyUSB0還是ttyUSB1這些了,因爲每次開機時usb設備的加載順序是隨機的,這樣就導致掛載點也隨機,爲了保證我們的啓動雷達的代碼統一,因此就需要爲該設備配置一個別名,該udev配置規則腳步放在ydlidar/startup目錄下名字是initenv.sh

參考資料:

Udev是Linux的設備管理器,動態地創建和刪除節點的硬件設備。簡而言之,它有助於你的電腦很容易找到你的機器人。

【原ROS 簡單的udev rules】

https://blog.csdn.net/u011118482/article/details/52442403

Ros項目使用usb接口串口通訊的傳感器時,我們都希望有個固定的設備名供程序調用。

由於usb爲即插即用設備,節點註冊的ID不同,會導致設備名稱會不同。

linux系統下如何讓系統綁定固有的usb設備,使用設定好的設備名稱?如何永久修改設備權限?

解決辦法:編寫規則文件,放到系統配置路徑下,進行設置後,即可一勞永逸。

【ros使用usb硬件,調用固定設備名修改設備權限的設置方法】

https://blog.csdn.net/qq_38288618/article/details/77839305

 

2.6、修改波特率

打開lidar.launch文件,更改雷達對應波特率爲128000

備註:官方手冊說要改,其它文檔沒看到,lidar.launch文件路徑在 /home/tianbot/lidar_ws/src/ydlidar/launch

 

打開 lidar.launch,更改不同型號雷達對應的波特率,以下爲 X4 的配置。

命令行修改(按insert修改,esc退出,:wq 保存,未成功)

cd ~/lidar_ws/src/ydlidar/launch

vim lidar.launch

以下

備註 1: 雷達型號對應波特率: G4 : 230400 X4 : 128000 F4 : 153600

3、運行激光雷達測試

新終端,運行roscore

$ roscore

新終端,運行雷達X4並用Rviz將數據可視化:

$ roslaunch ydlidar lidar_view.launch

或者,打開一個終端,啓動雷達掃描測距:roslaunch ydlidar lidar.launch

再打開新終端,查看激光雷達的數據:rosrun ydlidar ydlidar_client

樹莓派Raspbian 系統中,好像也沒必要先運行 lidar.launch,直接運行lidar_view.launch就可以了。

 

備註:先保證 roscd運行在正確目錄下  roscd ydlidar,然後再啓動roslauch

4、問題及解決

4.1、供電不足導致雷達無法正常運行

EAI的X4數據口在一般情況下可以當做供電和數據同時使用,這是我們用戶比較期望的,但是X4對於某些主控比如樹莓派就不行,必須單獨供電,也就是說如果你拿樹莓派跑的話,需要一條單獨供電的線和一條數據線

 

樹莓派使用問題

供電問題

現象:雷達不轉, 雷達轉幾下停了,雷達正常轉,但是啓動 lidar.launch過程中有提示

錯誤提示[ERROR] [1543845072.458324094]: start YDLIDAR is failed! Exit!!

解決方法:充電寶好像不行(自動斷電?),要找個比較穩定的電源適配器。

https://github.com/EAIBOT/ydlidar/issues/12

 

4.2、無法加載ydlidar節點

ERROR: cannot launch node of type [ydlidar/ydlidar_node]:

can't locate node [ydlidar_node] in package [ydlidar]

 

無法加載節點的原因,可能是多次編譯,ros命令尋找文件位置時發生錯誤。

 

解決方法:“直接使用roscd指令切換到自己的程序包目錄”

cd ~/lidar_ws

source devel/setup.bash

echo "source ~/lidar_ws/devel/setup.bash" >> ~/.bashrc

source ~/.bashrc

 

先保證 roscd運行在正確目錄下

roscd ydlidar

然後再啓動roslauch

roslaunch ydlidar lidar_view.launch

 

參考:

https://answers.ros.org/question/145801/cant-locate-node-in-package/

 

4.3、RViz不顯示點雲圖像

啓動激光雷達EAI YDLIDAR X4後,查詢有數據(rosrun ydlidar ydlidar_client),但是在RViz中沒有圖像,解決辦法是改變顯示方式:把Style 從Squares改成 Points,就顯示了。

 

 

問題解決:把Style 從Squares改成 Points就顯示

4.4、USB不識別

現象:[ERROR] [1553706336.319141339]: YDLIDAR Cannot bind to the specified serial port /dev/ydlidar

查詢:查看USB轉串口設備:ls /dev/tty*,無 ttyUSB*

連接Windows電腦,不識別COM口

原因: USB線質量太差,換一根好點的(粗一點),就能識別USB了

 

5、查詢激光雷達數據及其發佈的消息

rosmsg show sensor_msgs/LaserScan

 

查詢雷達輸出話題:rostopic echo -n1 /scan

(下面這個命令睡少了 –n1,會不停地刷新數據)

 

[ROS中發佈激光掃描消息]( https://www.cnblogs.com/21207-iHome/p/7840129.html)

通過 rostopic hz /scan 命令查看激光數據發佈頻率

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章