YDLIDAR-X4雷射雷達介紹
YDLIDAR X4雷射雷達是深圳越登智能科技有限公司(YDLIDAR,這家公司屬于EAI)研發的一款 360 度二維測距産品,本産品基于三角測距原理,并配以相關光學、電學、算法設計,實作高頻高精度的距離測量,在測距的同時,機械結構 360 度旋轉,不斷擷取角度資訊,進而實作了 360 度掃描測距,輸出掃描環境的點雲資料。
由上圖大家可知,該雷達其實很小巧,唯一不妥的地方感覺就是這個使用皮帶傳動:
0x01 下載下傳編譯ROS下驅動源碼
從github下載下傳ydlidar x4的ROS下驅動源碼,該源碼需要放在ros工作空間下的src目錄下進行編譯,下載下傳指令如下:
git clone https://github.com/EAIBOT/ydlidar.git
部落客在通過udev規則配置腳本時采用如下方法:
由于開發機器人的過程中,發現電腦每次開機,裝置的視窗都會改變;如果每次都修改代碼就有些麻煩,而且浪費時間。是以百度下了解決方法——>建立USB序列槽别名,建立udev規則。
一、檢視USB端口資訊
運作lsusb指令,然後拔掉你要建立别名的裝置,再次運作lsusb,确定你裝置的ID号:
二、建立規則
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,則說明别名成功。
當下載下傳完源碼後,接下來就可以在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
當執行該指令後會發現雷達順時針轉動起來,完整的記錄檔如下:
當啟動雷達後,檢視釋出的話題及其消息格式定義:
(2)使用lidar_view.launch來啟動雷達并同時啟動rviz進行雷達資料可視化顯示:
roslaunch ydlidar lidar_view.launch
在終端中輸入:ls /dev 可以檢視到端口資訊從下圖中可以看到端口ydlidar
根據上圖可知在雷達中也需要規定在ROS下的x,y,z方向,為了弄清楚x正方向就需要知道如下規定:
在ROS下坐标軸方向使用的是右手系,食指指向x軸正方向,中指指向y軸正方向,拇指指向的是z軸正方向。對于旋轉的正負方向規定是:右手握拳拇指指向z軸正方向,其餘四指彎曲的方向即旋轉的正方向,即圍繞z軸做逆時針旋轉是角速度的正方向,順時針旋轉是角速度的負方向。
由此可以得知雷達的旋轉方向與ROS規定的正向旋轉是相反的,是以雷達掃描得到的原始資料也需要經過處理才行,現在這部分已經在ROS源碼中經過處理了,是以現在雷達的坐标軸如下,在小車上安裝時需要注意這個方向:
0x03 launch檔案解析
首先來分析lidar.launch檔案,裡面的一些參數我們需要修改,因為這個launch檔案是一個通用的啟動檔案,還可以啟動YDLIDAR下的其他型号,具體的參數我們需要根據x4來做相應修改才行,下面是需要注意的一些參數:
(1)frame_id:設定目前雷達的坐标系名稱
(2)angle_min和angle_max是設定雷達掃描的角度範圍,這是一對很有用的參數。我們經常遇到以下情況,由于雷達在機器人底盤上的放置位置導緻其并不能将360範圍資料都拿來使用,經常隻需要雷達的前180度的掃描資料:
下面開始開始測試這兩個參數,首先我們将雷達放到一個紙箱子裡,這樣保證四面都可以檢測到障礙:
當我們使用預設的參數(angle_min=-180,angle_max=180),然後使用roslaunch ydlidar lidar_view.launch來啟動雷達和打開rviz檢視資料,如下圖所示:
然後測試将angle_min改為-90,angle_max改為90,在rviz中檢視效果如下:
(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