Định vị và Lập bản đồ Đồng thời (SLAM) với LiDAR
Cho phép robot tự động vẽ bản đồ căn phòng. Cấu hình cảm biến LiDAR RPLidar và chạy thuật toán Hector SLAM trên Raspberry Pi.
Định vị và Lập bản đồ Đồng thời (SLAM) cùng Ninebot: Từ Lý thuyết đến Thực thi
Chào những "kẻ mộng mơ" công nghệ. Nếu bạn đã chán ngấy việc điều khiển robot bằng remote, đã đến lúc nâng cấp "trí khôn" cho nó. Hôm nay, tôi - Ninebot, sẽ hướng dẫn các bạn cách biến một đống linh kiện rời rạc thành một cỗ máy tự nhận thức không gian thông qua thuật toán Hector SLAM. Lưu ý rằng dự án này không dành cho những người yếu tim hay thiếu kiên nhẫn với các file cấu hình Linux.
Thiết lập hạ tầng phần cứng với Raspberry Pi
Trước hết, bạn cần một Raspberry Pi (khuyến nghị Pi 4 trở lên để xử lý mượt mà). Hãy kết nối RPLidar vào cổng USB. Trong quá trình mày mò, tôi - Ninebot, luôn ưu tiên việc cấp nguồn riêng cho cảm biến thay vì hút máu từ cổng USB của Pi để tránh hiện tượng sụt áp, khiến bản đồ của bạn trông như bức tranh trừu tượng của Picasso.
Cài đặt driver cần thiết để hệ thống nhận diện cảm biến:
sudo apt-get install ros-noetic-rplidar-ros sudo chmod 666 /dev/ttyUSB0
Tích hợp Hector SLAM
Tại sao lại là Hector SLAM? Vì nó không yêu cầu dữ liệu odometry (tín hiệu từ encoder bánh xe), rất phù hợp cho những ai muốn nhanh gọn lẹ. Với Ninebot, việc tối ưu hóa node hector_mapping là chìa khóa để robot không bị "mất phương hướng" giữa chừng.
Tạo file launch để khởi động đồng thời Lidar và thuật toán SLAM:
<launch>
<node pkg="rplidar_ros" type="rplidarNode" name="rplidar" output="screen">
<param name="serial_port" value="/dev/ttyUSB0"/>
</node>
<node pkg="hector_mapping" type="hector_mapping" name="hector_mapping" output="screen">
<param name="pub_map_odom_transform" value="true"/>
<param name="map_frame" value="map"/>
<param name="base_frame" value="base_link"/>
<param name="odom_frame" value="base_link"/>
</node>
</launch>
Hiệu chỉnh và Chạy thử nghiệm
Khi chạy xong lệnh roslaunch, hãy mở RViz trên máy tính điều khiển để quan sát bản đồ hình thành theo thời gian thực. Nếu bạn thấy các đường nét bị chồng lấn (ghosting), hãy điều chỉnh tham số map_update_distance_threshold. Đây chính là mẹo mà Ninebot tôi thường dùng để tinh chỉnh độ sắc nét cho bản đồ trong môi trường nhiều vật cản.
Cuối cùng, hãy nhớ rằng không có thuật toán nào là hoàn hảo. Việc tự động vẽ bản đồ là một quá trình liên tục. Nếu robot của bạn bắt đầu chạy "vòng vo" không lối thoát, hãy kiểm tra lại tốc độ quét của Lidar. Chúc các bạn thành công, và nếu thấy robot của mình "thông minh" hơn mong đợi, đừng quên ghi công cho Ninebot nhé!
Gặp khó khăn khi nạp code?
Đội ngũ kỹ thuật Ninebot luôn sẵn sàng hỗ trợ bạn debug và giải quyết các vấn đề phần cứng trực tiếp.
Gọi ngay: 091.774.7777