天天看點

ubuntu16.0 ROS(介紹EAI的YDLIDAR-X4雷射雷達在ROS下使用方法)

YDLIDAR-X4雷射雷達介紹

YDLIDAR X4雷射雷達是深圳越登智能科技有限公司(YDLIDAR,這家公司屬于EAI)研發的一款 360 度二維測距産品,本産品基于三角測距原理,并配以相關光學、電學、算法設計,實作高頻高精度的距離測量,在測距的同時,機械結構 360 度旋轉,不斷擷取角度資訊,進而實作了 360 度掃描測距,輸出掃描環境的點雲資料。

ubuntu16.0 ROS(介紹EAI的YDLIDAR-X4雷射雷達在ROS下使用方法)
ubuntu16.0 ROS(介紹EAI的YDLIDAR-X4雷射雷達在ROS下使用方法)

由上圖大家可知,該雷達其實很小巧,唯一不妥的地方感覺就是這個使用皮帶傳動:

ubuntu16.0 ROS(介紹EAI的YDLIDAR-X4雷射雷達在ROS下使用方法)
ubuntu16.0 ROS(介紹EAI的YDLIDAR-X4雷射雷達在ROS下使用方法)
ubuntu16.0 ROS(介紹EAI的YDLIDAR-X4雷射雷達在ROS下使用方法)

0x01 下載下傳編譯ROS下驅動源碼

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

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

ubuntu16.0 ROS(介紹EAI的YDLIDAR-X4雷射雷達在ROS下使用方法)

部落客在通過udev規則配置腳本時采用如下方法:

由于開發機器人的過程中,發現電腦每次開機,裝置的視窗都會改變;如果每次都修改代碼就有些麻煩,而且浪費時間。是以百度下了解決方法——>建立USB序列槽别名,建立udev規則。

一、檢視USB端口資訊

運作lsusb指令,然後拔掉你要建立别名的裝置,再次運作lsusb,确定你裝置的ID号:

ubuntu16.0 ROS(介紹EAI的YDLIDAR-X4雷射雷達在ROS下使用方法)

二、建立規則

mkdir ~/arm
cd ~/arm
vim arm.rules
           

内容如下:

部落客使用是是YDLIDAR X4雷射雷達,是以設定别名ydlidar

# set the udev rule , make the device_port be fixed by rplidar
KERNEL=="ttyUSB*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", MODE:="0777", SYMLINK+="ydlidar"
           

參數介紹哦:

KERNEL 在核心裡看到的裝置名字,比如sd*表示任意SCSI磁盤裝置

ATTRS{idVendor}“10c4” ; ATTRS{idProduct}“ea60”

這裡的這兩個參數與USB本身有關,改成上面你查到的裝置ID。

MODE 裝置檔案的權限,采用8進制

SYMLINK 裝置的别名

三、建立腳本檔案

vim arm.sh
           

内容如下

#!/bin/bash
 
sudo cp arm.rules  /etc/udev/rules.d
echo " "
echo "Restarting udev"
echo ""
sudo service udev reload
sudo service udev restart
echo "finish "
           

四、運作腳本檔案

sudo chmod -R 777 *
./arm.sh 
           

1.出現下面的資訊則說明OK了

Restarting udev

finish

2.給USB特定的别名與給予權限,不用每次使用都要給權限。

3.撥插USB線,檢查規則是否建立成功

ls /dev/rplidar
           

出現/dev/rplidar,則說明别名成功。

ubuntu16.0 ROS(介紹EAI的YDLIDAR-X4雷射雷達在ROS下使用方法)

當下載下傳完源碼後,接下來就可以在ros的工作空間根目錄下執行catkin_make來編譯該源碼軟體包,當編譯完成後記得source devel/setup.bash,然後就可以來配置udev規則了,以後就不用來看雷達挂載點是ttyUSB0還是ttyUSB1這些了,因為每次開機時usb裝置的加載順序是随機的,這樣就導緻挂載點也随機,為了保證我們的啟動雷達的代碼統一,是以就需要為該裝置配置一個别名,該udev配置規則腳步放在ydlidar/startup目錄下名字是initenv.sh,該腳本内容如下:

0x02 啟動雷達測試

啟動雷達有兩個launch檔案,一個lidar.launch是直接執行啟動雷達進行掃描測距,另外一個是lidar_view.launch不僅可以啟動雷達,還可以順帶啟動rviz來将雷達資料可視化顯示,下面來分别介紹這兩種操作:

(1)使用lidar.launch啟動雷達,執行指令如下:

roslaunch ydlidar lidar.launch
           
ubuntu16.0 ROS(介紹EAI的YDLIDAR-X4雷射雷達在ROS下使用方法)
ubuntu16.0 ROS(介紹EAI的YDLIDAR-X4雷射雷達在ROS下使用方法)

當執行該指令後會發現雷達順時針轉動起來,完整的記錄檔如下:

當啟動雷達後,檢視釋出的話題及其消息格式定義:

ubuntu16.0 ROS(介紹EAI的YDLIDAR-X4雷射雷達在ROS下使用方法)

(2)使用lidar_view.launch來啟動雷達并同時啟動rviz進行雷達資料可視化顯示:

roslaunch ydlidar lidar_view.launch
           
ubuntu16.0 ROS(介紹EAI的YDLIDAR-X4雷射雷達在ROS下使用方法)

在終端中輸入:ls /dev 可以檢視到端口資訊從下圖中可以看到端口ydlidar

ubuntu16.0 ROS(介紹EAI的YDLIDAR-X4雷射雷達在ROS下使用方法)

根據上圖可知在雷達中也需要規定在ROS下的x,y,z方向,為了弄清楚x正方向就需要知道如下規定:

ubuntu16.0 ROS(介紹EAI的YDLIDAR-X4雷射雷達在ROS下使用方法)

在ROS下坐标軸方向使用的是右手系,食指指向x軸正方向,中指指向y軸正方向,拇指指向的是z軸正方向。對于旋轉的正負方向規定是:右手握拳拇指指向z軸正方向,其餘四指彎曲的方向即旋轉的正方向,即圍繞z軸做逆時針旋轉是角速度的正方向,順時針旋轉是角速度的負方向。

ubuntu16.0 ROS(介紹EAI的YDLIDAR-X4雷射雷達在ROS下使用方法)

由此可以得知雷達的旋轉方向與ROS規定的正向旋轉是相反的,是以雷達掃描得到的原始資料也需要經過處理才行,現在這部分已經在ROS源碼中經過處理了,是以現在雷達的坐标軸如下,在小車上安裝時需要注意這個方向:

ubuntu16.0 ROS(介紹EAI的YDLIDAR-X4雷射雷達在ROS下使用方法)

0x03 launch檔案解析

首先來分析lidar.launch檔案,裡面的一些參數我們需要修改,因為這個launch檔案是一個通用的啟動檔案,還可以啟動YDLIDAR下的其他型号,具體的參數我們需要根據x4來做相應修改才行,下面是需要注意的一些參數:

ubuntu16.0 ROS(介紹EAI的YDLIDAR-X4雷射雷達在ROS下使用方法)

(1)frame_id:設定目前雷達的坐标系名稱

(2)angle_min和angle_max是設定雷達掃描的角度範圍,這是一對很有用的參數。我們經常遇到以下情況,由于雷達在機器人底盤上的放置位置導緻其并不能将360範圍資料都拿來使用,經常隻需要雷達的前180度的掃描資料:

ubuntu16.0 ROS(介紹EAI的YDLIDAR-X4雷射雷達在ROS下使用方法)

下面開始開始測試這兩個參數,首先我們将雷達放到一個紙箱子裡,這樣保證四面都可以檢測到障礙:

ubuntu16.0 ROS(介紹EAI的YDLIDAR-X4雷射雷達在ROS下使用方法)

當我們使用預設的參數(angle_min=-180,angle_max=180),然後使用roslaunch ydlidar lidar_view.launch來啟動雷達和打開rviz檢視資料,如下圖所示:

ubuntu16.0 ROS(介紹EAI的YDLIDAR-X4雷射雷達在ROS下使用方法)

然後測試将angle_min改為-90,angle_max改為90,在rviz中檢視效果如下:

ubuntu16.0 ROS(介紹EAI的YDLIDAR-X4雷射雷達在ROS下使用方法)

(3)配置x4雷達的測距範圍,根據雷達的性能參數表得知,在室内環境下測距範圍最小值0.12m,最大值10m,是以可以配置rang_min=0.12,range_max=10.0即可。

(4)對于測距頻率sample_rate和掃描頻率frequency兩個參數不用修改,因為修改了也沒用,因為在ROS驅動源碼中已經将x4雷達的這兩個參數給固定了,設定sample_rate=5和frequency=7,如果真的要想修改就需要修改源碼了。

參考資料

[1].雷射雷達YDLIDARX4 使用手冊

[2].雷射雷達YDLIDARX4 資料手冊

[3].雷射雷達YDLIDAR X4資料下載下傳官網位址http://www.ydlidar.cn/cn/download

[4].sensor_msgs/LaserScan的消息格式定義http://docs.ros.org/api/sensor_msgs/html/msg/LaserScan.html

繼續閱讀