การสร้างอุปกรณ์เชื่อมต่อ
XV-11 Lidar ที่ซื้อมาจาก eBay นั้นยังไม่พร้อมใช้งาน โดยเราจะต้องสร้างอุปกรณ์สำหรับเชื่อมต่อดังภาพด้านล่าง ซึ่งประกอบไปด้วย1. USB to Serial module - อุปกรณ์ชิ้นนี้มีบทบาทสำคัญ เพราะจะเป็นตัวแปลงสัญญาณข้อมูลจาก Lidar ส่งมายัง PC ผ่านพอร์ต USB โมดูลนี้โดยส่วนใหญ่จะให้ output power สองระดับ คือ 3.3V และ 5V ซึ่ง 3.3V จะเป็นไฟเลี้ยงสายสัญญาณ Serial นั่นเอง ส่วน 5V จะต้องถูกแปลงโดย Step down เป็นไฟ 3V เพื่อเลี้ยงมอเตอร์ของ Lidar โดยจะต้องเท่ากับ 3V แบบไม่ขาดไม่เกิน
2. Step down module - โมดูลนี้จะแปลงไฟ 5V ให้เหลือ 3V เพื่อขับมอเตอร์ของ Lidar ควรเลือกโมดูลที่สามารถปรับค่าได้ละเอียด
3. JST 2.0 PH 2-Pin connector สำหรับสาย power ของมอเตอร์ และ JST 2.0 PH 4-Pin connector สำหรับสายสัญญาณ Serial
เราสามารถสร้างอุปกรณ์ตาม diagram ด้านบนได้ตามอิสระ เพื่อความสะดวกและคงทน เราควรบัดกรีอุปกรณ์บน prototype pcb หรือ แผ่นไข่ปลา และทำที่ยึดด้วยแผ่นอคริลิก ตัวอย่างอุปกรณ์ที่ทำสำเร็จแล้วแสดงตามภาพ
ติดตั้ง xv_11_laser_driver
เมื่อสร้าง hardware เรียบร้อยแล้ว ขั้นตอนต่อไปก็การติดตั้ง ROS package สำหรับ XV-11 Lidar ผมใช้ ROS kinetic ใน Ubuntu Mate 16.04 บน Raspberry Pi 3 B ดังนั้น คำสั่งในการติดตั้ง driver XV-11 คือ
$ sudo apt-get install ros-kinetic-xv-11-laser-driver
สร้าง udev rules (optional)
ขั้นตอนนี้ถือเป็น optional เพราะชื่อพอร์ตของ XV-11 จะขึ้นอยู่กับโมดูล USB Serial ที่เราใช้ โดยปกติจะเป็น /dev/ttyUSB0 หรือ /dev/ttyACM0 แต่เพื่อให้เกิดความสะดวกในการเรียกชื่อพอร์ตของ XV-11 เราจะสร้างไฟล์สำหรับ udev rule ดังนี้- ใช้คำสั่ง $ lsusb เพื่อดู idVender และ idProduct ตามภาพ
- จากนั้นใช้คำสั่ง text editor อย่างเช่น $ sudo pluma ใน Ubuntu Mate เพื่อสร้างไฟล์และบันทึกลงใน /etc/udev/rules.d/52-lidar.rules แล้วใส่เนื้อหาตามตัวอย่าง โดย idVender และ idProduct ของแต่ละคนอาจจะไม่เหมือนกัน
SUBSYSTEMS=="usb", KERNEL=="ttyUSB[0-9]*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", SYMLINK+="lidar"
- เมื่อ reboot เราจะพบว่ามีพอร์ต /dev/lidar เกิดขึ้น
สร้าง launch file
ในกรณีที่เรามี ROS workspace อยู่แล้ว ให้สร้าง launch file ขึ้นมาเพื่อความสะดวกในการสร้างโหนด XV-11 Lidar สมมุติว่าชื่อ test_laser.launch ดังตัวอย่าง<?xml version="1.0"?>
<launch>
<node pkg="xv_11_laser_driver" type="neato_laser_publisher" name="xv_11_laser_driver">
<param name="port" value="/dev/lidar"/>
<param name="firmware_version" value="2"/>
<param name="frame_id" value="laser"/>
</node>
</launch>
ทดสอบ XV-11 lidar
เมื่อผ่านขั้นตอนต่างๆ มากมายมาแล้ว คราวนี้เราทดสอบ XV-11 Lidar ของเรากัน- รันโหนดด้วยคำสั่ง
$ roslaunch package_name test_laser.launch
โดยที่ package_name ตามที่เราสร้าง
- ดูค่า scan ด้วย rviz
รันคำสั่ง rviz จากนั้น Add by topic เลือก /scan ดังภาพ
เอกสารอ้างอิง
- http://wiki.ros.org/xv_11_laser_driver/Tutorials/Running%20the%20XV-11%20Node
- http://meetjanez.splet.arnes.si/2015/08/22/neato-xv-11-to-ros-slam