Mục lục:
- Bước 1: Điều gì hiệu quả và điều gì không hiệu quả
- Bước 2: Cài đặt trình điều khiển Freenect và Freenect_stack
- Bước 3: Cài đặt RTAB MAP độc lập
- Bước 4: Cài đặt Rtabmap_ros
- Bước 5: Hiển thị thời gian
- Bước 6: Tham khảo
Video: RGB-D SLAM với Kinect trên Raspberry Pi 4 [Buster] ROS Melodic: 6 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:31
Năm ngoái, tôi đã viết một bài báo về việc xây dựng và cài đặt ROS Melodic trên Raspberry Pi mới (tại thời điểm đó) với Hệ điều hành Debian Buster. Bài viết đã nhận được rất nhiều sự chú ý trên cả các kênh truyền hình và các nền tảng khác. Tôi rất vui vì tôi đã giúp rất nhiều người cài đặt thành công ROS trên Raspberry Pi. Trong video đi kèm, tôi cũng đã chứng minh ngắn gọn việc lấy hình ảnh chiều sâu từ Kinect 360. Sau đó, nhiều người đã liên hệ với tôi trên LinkedIn và hỏi tôi làm cách nào để sử dụng Kinect với Raspberry Pi. Tôi hơi ngạc nhiên về câu hỏi này, vì quá trình chuẩn bị Kinect vào thời điểm đó khiến tôi mất khoảng 3-4 giờ và không có vẻ gì là cực kỳ phức tạp. Tôi đã chia sẻ tệp.bash_history của mình với tất cả những người hỏi tôi về vấn đề này và cuối cùng vào tháng 4, tôi đã tìm thấy thời gian để viết một bài báo về cách cài đặt trình điều khiển Kinect và thực hiện RGB-D SLAM với RTAB-MAP ROS. Hàng tuần mất ngủ sau khi bắt đầu viết bài, giờ tôi đã hiểu tại sao nhiều người hỏi tôi câu này:)
Tôi sẽ bắt đầu với lời giải thích ngắn gọn về những cách tiếp cận đã hiệu quả và cách nào không. Sau đó, tôi sẽ giải thích cách cài đặt trình điều khiển Kinect để sử dụng với ROS Melodic và cuối cùng là cách thiết lập máy của bạn cho RGB-D SLAM với RTAB-MAP ROS.
Bước 1: Điều gì hiệu quả và điều gì không hiệu quả
Có một vài trình điều khiển có sẵn cho Kinect trên Raspberry Pi - trong số đó có hai trình điều khiển được hỗ trợ bởi ROS.
Trình điều khiển OpenNI - gói openni_camera cho ROS
Trình điều khiển libfreenect - gói freenect_stack cho ROS
Nếu bạn nhìn vào kho GitHub tương ứng của họ, bạn có thể thấy rằng trình điều khiển OpenNI đã được cập nhật lần cuối cách đây nhiều năm và trên thực tế là EOL trong một thời gian dài. ibfreekinect mặt khác đang được cập nhật kịp thời. Tương tự đối với các gói ROS tương ứng của chúng, freenect_stack được phát hành cho ROS melodic, trong khi bản phân phối cuối cùng mà openni_camera đã liệt kê hỗ trợ là Fuerte…
Có thể biên dịch và cài đặt trình điều khiển OpenNI và gói openni_camera trên Raspberry Pi cho ROS Melodic, mặc dù nó không hoạt động với tôi. Để thực hiện việc đó, hãy làm theo hướng dẫn này, bước 1, 2, 3, trên bước 2 và 3, hãy xóa cờ "-mfloat-abi = softfp" khỏi tệp Platform / Linux / Build / Common / Platform. ARM (theo lời khuyên về điều này Vấn đề trên Github). Sau đó, sao chép gói openni_camera vào không gian làm việc catkin của bạn và biên dịch với catkin_make. Tuy nhiên, nó không hoạt động với tôi, lỗi tạo độ sâu không thành công. Lý do: Giao diện USB không được hỗ trợ!
Cuối cùng, việc sử dụng libfreenect và freenect_stack đã mang lại thành công, nhưng có khá nhiều vấn đề cần giải quyết và giải pháp hơi khó giải quyết, mặc dù hoạt động rất ổn định (1 giờ + hoạt động liên tục).
Bước 2: Cài đặt trình điều khiển Freenect và Freenect_stack
Tôi giả sử rằng bạn sử dụng hình ảnh ROS Melodic Desktop của tôi từ bài viết này. Nếu bạn muốn cài đặt trong môi trường khác, ví dụ như ảnh ros_comm hoặc trong Ubuntu cho Raspberry Pi, hãy đảm bảo rằng bạn có đủ kiến thức về ROS để giải quyết các vấn đề có thể phát sinh từ sự khác biệt đó.
Hãy bắt đầu bằng cách xây dựng trình điều khiển libfreenect từ nguồn, vì phiên bản tạo sẵn của kho lưu trữ apt-get đã quá lỗi thời.
sudo apt-get cập nhật
sudo apt-get install libusb-1.0-0-dev
git clone
cd libfreenect
mkdir build && cd build
cmake -L..
chế tạo
sudo thực hiện cài đặt
Hy vọng rằng quá trình xây dựng sẽ suôn sẻ và tràn đầy thông điệp thân thiện với môi trường xanh. Sau khi bạn cài đặt trình điều khiển libfreenect, việc tiếp theo cần làm là cài đặt gói freenect_stack cho ROS. Có khá nhiều gói khác mà nó phụ thuộc vào, chúng tôi sẽ phải sao chép chúng và xây dựng với catkin_make tất cả cùng nhau. Trước khi bắt đầu, hãy đảm bảo rằng không gian làm việc catkin của bạn được thiết lập đúng cách và có nguồn gốc!
Từ thư mục src không gian làm việc catkin của bạn:
git clone
git clone
git clone
git clone
git clone
git clone
Ồ, đó là rất nhiều nhân bản.
CHỈNH SỬA SAU: Như đã được một độc giả của tôi chỉ ra, kho lưu trữ vision_opencv cần được đặt thành nhánh du dương. Đối với cd đó vào src / vision_opencv và thực thi
git checkout du dương
Sau đó quay lại thư mục không gian làm việc catkin của bạn. Để kiểm tra xem chúng tôi có phụ thuộc cho tất cả các gói tại chỗ hay không, hãy thực hiện lệnh này:
cài đặt rosdep - từ đường dẫn src --ignore-src
Nếu bạn đã nhân bản thành công tất cả các gói cần thiết, nó sẽ yêu cầu tải xuống libfreekinect bằng apt-get. Trả lời không, vì chúng tôi đã cài đặt nó từ nguồn.
sudo apt-get install libbullet-dev libharfbuzz-dev libgtk2.0-dev libgtk-3-dev
catkin_make -j2
Giờ uống trà;) hoặc bất cứ thức uống yêu thích nào của bạn.
Sau khi quá trình biên dịch kết thúc, bạn có thể thử khởi chạy ngăn xếp kinect và kiểm tra xem nó có xuất ra hình ảnh độ sâu và màu sắc phù hợp hay không. Tôi sử dụng Raspberry Pi không có đầu, vì vậy tôi cần chạy RVIZ trên máy tính để bàn của mình.
Trên Raspberry Pi làm (Thay đổi địa chỉ IP thành địa chỉ IP của Raspberry Pi của bạn!):
xuất ROS_MASTER_URI = https://192.168.0.108: 11311
xuất ROS_IP = 192.168.0.108
roslaunch freenect_launch freenect.launch depth_registration: = true
Bạn sẽ thấy đầu ra như trong Ảnh chụp màn hình 1. "Dừng thiết bị RGB và độ sâu luồng tuôn ra." cho biết rằng Kinect đã sẵn sàng, nhưng chưa có gì được đăng ký cho các chủ đề của nó.
Trên máy tính để bàn của bạn có cài đặt ROS Melodic, hãy thực hiện:
xuất ROS_MASTER_URI = https://192.168.0.108: 11311
export ROS_IP = [your-desktop-computer-ip] rviz
Bây giờ bạn sẽ có thể xem các luồng hình ảnh RGB và Độ sâu trong RVIZ như trong Ảnh chụp màn hình 2 ở trên… nhưng không phải cùng một lúc.
Được rồi, đây là nơi mà những thứ hacky bắt đầu. Tôi đã dành 3 ngày để thử các trình điều khiển và cách tiếp cận khác nhau và không có gì hiệu quả - ngay sau khi tôi thử truy cập hai luồng đồng thời, Kinect sẽ bắt đầu hết thời gian như bạn có thể thấy trong Ảnh chụp màn hình 3. Tôi đã thử mọi thứ: cung cấp điện tốt hơn, các cam kết cũ hơn của libfreenect và freenect_stack, dừng usb_autosuspend, tiêm thuốc tẩy vào cổng USB (được rồi, không phải là cuối cùng! Đừng làm vậy, đó là một trò đùa và không nên tạo thành một lời khuyên kỹ thuật:)). Sau đó, trong một số vấn đề của Github, tôi thấy tài khoản của một người nói rằng Kinect của họ không ổn định, cho đến khi họ "tải USB bus" bằng cách kết nối WiFi dongle. Tôi đã thử điều đó và nó hoạt động. Một mặt, tôi rất vui vì nó đã hoạt động. Mặt khác, ai đó thực sự phải sửa chữa điều đó. Chà, trong khi (đại loại) đã khắc phục điều đó, chúng ta hãy chuyển sang bước tiếp theo.
Bước 3: Cài đặt RTAB MAP độc lập
Đầu tiên, chúng tôi có một loạt các phụ thuộc cần được cài đặt:
Mặc dù có một gói armhf dựng sẵn cho PCL, chúng tôi sẽ cần phải biên dịch nó từ nguồn vì vấn đề này. Tham khảo kho lưu trữ PCL GitHub để xem cách biên dịch nó từ nguồn.
sudo apt-get install libvtk6-dev libvtk6-qt-dev libvtk6-java libvtk6-jni
sudo apt-get install libopencv-dev cmake libopenni2-dev libsqlite3-dev
Bây giờ, hãy sao chép kho lưu trữ git gói git độc lập của bản đồ rtab vào thư mục chính của chúng ta và xây dựng nó. Tôi đã sử dụng bản phát hành mới nhất (0.18.0).
git clone
cd rtabmap / bản dựng
cmake..
make -j2
sudo thực hiện cài đặt
sudo ldconfig rtabmap
Bây giờ khi chúng ta đã biên dịch RTAB MAP độc lập, chúng ta có thể chuyển sang bước cuối cùng - biên dịch và cài đặt trình bao bọc ROS cho RTAB MAP, rtabmap_ros.
Bước 4: Cài đặt Rtabmap_ros
Nếu bạn đã hiểu đến mức đó, chắc hẳn bạn đã biết rõ về vấn đề này:) Sao chép kho lưu trữ rtabmap_ros vào thư mục src không gian làm việc catkin của bạn. (Thực hiện lệnh tiếp theo từ thư mục src không gian làm việc catkin của bạn!)
git clone
Chúng tôi cũng sẽ cần các gói ROS này, rtabmap_ros đó phụ thuộc vào:
git clone
git clone
git clone
git clone
git clone
Trước khi bắt đầu biên dịch, bạn có thể đảm bảo rằng mình không thiếu bất kỳ phần phụ thuộc nào bằng lệnh sau:
cài đặt rosdep - từ đường dẫn src --ignore-src
Cài đặt thêm các phần phụ thuộc từ ap-get (những phần này sẽ không làm gián đoạn liên kết, nhưng sẽ gây ra lỗi trong quá trình biên dịch)
sudo apt-get install libsdl-image1.2-dev
Sau đó, di chuyển đến thư mục không gian làm việc catkin của bạn và bắt đầu biên dịch:
đĩa CD..
catkin_make -j2
Hy vọng bạn đã không đặt thức uống tổng hợp yêu thích của mình ở đâu quá xa. Sau khi biên dịch xong, chúng tôi đã sẵn sàng để lập bản đồ!
Bước 5: Hiển thị thời gian
Thực hiện thủ thuật hacky đó bằng cách thêm một thứ gì đó như Wi-Fi hoặc Bluetooth dongle vào cổng USB - Tôi đang sử dụng 2 cổng USB 2.0, một cổng cho Kinect, cổng còn lại cho khóa Wi-Fi.
Trên Raspberry Pi thực hiện (Thay đổi địa chỉ IP thành địa chỉ IP của Raspberry Pi của bạn!): Thiết bị đầu cuối thứ nhất:
xuất ROS_MASTER_URI = https://192.168.0.108: 11311
xuất ROS_IP = 192.168.0.108
roslaunch freenect_launch freenect.launch depth_registration: = true data_skip: = 2
Nhà ga thứ 2:
roslaunch rtabmap_ros rgbd_mapping.launch rtabmap_args: = - delete_db_on_start --Vis / MaxFeatures 500 --Mem / ImagePreDecimation 2 --Mem / ImagePostDecimation 2 --Kp / DetectorStrategy 6 --OdomF2M / MaxSize 2: = false
Bạn sẽ thấy đầu ra như trong Ảnh chụp màn hình 1. "Dừng thiết bị RGB và độ sâu luồng tuôn ra." cho biết Kinect đã sẵn sàng, nhưng vẫn chưa có gì được đăng ký cho các chủ đề của nó. Ở thiết bị đầu cuối thứ hai, bạn sẽ thấy các thông báo về chất lượng odom. Nếu bạn di chuyển Kinect quá nhanh, chất lượng odom sẽ về 0 và bạn sẽ cần chuyển đến vị trí trước đó hoặc bắt đầu từ cơ sở dữ liệu sạch.
Trên máy tính để bàn của bạn có cài đặt gói ROS Melodic và rtab_map (tôi khuyên bạn nên sử dụng máy tính Ubuntu cho điều đó, vì các gói được tạo sẵn có sẵn cho kiến trúc amd64), hãy thực hiện:
xuất ROS_MASTER_URI = https://192.168.0.108: 11311
export ROS_IP = [your-desktop-computer-ip]
rviz
Thêm các màn hình MapGraph và MapCloud vào rviz và chọn các chủ đề tương ứng đến từ rtab_map. Chà, đây rồi, vị ngọt ngào của chiến thắng! Hãy tiếp tục và thực hiện một số ánh xạ:)
Bước 6: Tham khảo
Trong khi viết bài này, tôi đã tham khảo một số tài nguyên, chủ yếu là các diễn đàn và các vấn đề về GitHub. Tôi sẽ để chúng ở đây.
github.com/OpenKinect/libfreenect/issues/338
www.reddit.com/r/robotics/comments/8d37gy/ros_with_raspberry_pi_and_xbox_360_kinect_question/
github.com/ros-drivers/freenect_stack/issues/48
official-rtab-map-forum.67519.x6.nabble.com/RGB-D-SLAM-example-on-ROS-and-Raspberry-Pi-3-td1250.html
github.com/OpenKinect/libfreenect/issues/524
Thêm tôi trên LinkedIn nếu bạn có bất kỳ câu hỏi nào và đăng ký kênh YouTube của tôi để nhận thông báo về các dự án thú vị hơn liên quan đến học máy và người máy.
Đề xuất:
Esp8266 dựa trên Boost Converter với giao diện người dùng Blynk tuyệt vời với bộ điều chỉnh phản hồi: 6 bước
Esp8266 dựa trên Boost Converter với giao diện người dùng Blynk tuyệt vời với bộ điều chỉnh phản hồi: Trong dự án này, tôi sẽ chỉ cho bạn một cách hiệu quả và phổ biến cách tăng điện áp DC. Tôi sẽ cho bạn thấy việc xây dựng một bộ chuyển đổi tăng cường có thể dễ dàng như thế nào với sự trợ giúp của Nodemcu. Hãy xây dựng nó. Nó cũng bao gồm một vôn kế trên màn hình và một phản hồi
ROS Melodic trên Raspberry Pi 4 [Debian Buster] + RPLIDAR A1M8: 6 bước
ROS Melodic trên Raspberry Pi 4 [Debian Buster] + RPLIDAR A1M8: Bài viết này sẽ trình bày quá trình cài đặt ROS Melodic Morenia trên Raspberry Pi 4 chạy Debian Buster mới nhất và cách sử dụng RPLIDAR A1M8 với cài đặt của chúng tôi. Kể từ khi Debian Buster chính thức được phát hành chỉ vài tuần trước (tính đến thời điểm này
Bắt đầu với ROS Melodic trên Raspberry Pi 4 Model B: 7 bước
Bắt đầu với ROS Melodic trên Raspberry Pi 4 Model B: Hệ điều hành rô bốt (ROS) là một bộ thư viện phần mềm và công cụ được sử dụng để xây dựng các hệ thống và ứng dụng rô bốt. Phiên bản dịch vụ dài hạn hiện tại của ROS là Melodic Morenia. ROS Melodic chỉ tương thích với Ubuntu 18.04 Bionic Beaver
Cài đặt Raspbian Buster trên Raspberry Pi 3 - Bắt đầu với Raspbian Buster Với Raspberry Pi 3b / 3b +: 4 bước
Cài đặt Raspbian Buster trên Raspberry Pi 3 | Bắt đầu với Raspbian Buster Với Raspberry Pi 3b / 3b +: Xin chào các bạn, gần đây tổ chức Raspberry pi đã tung ra hệ điều hành Raspbian mới được gọi là Raspbian Buster. Đây là một phiên bản mới của Raspbian dành cho Raspberry pi's. Vì vậy, hôm nay trong phần hướng dẫn này, chúng ta sẽ học cách cài đặt Hệ điều hành Raspbian Buster trên Raspberry pi 3 của bạn
Theo dõi thời tiết M5Stack M5stick C dựa trên ESP32 với DHT11 - Theo dõi nhiệt độ độ ẩm & chỉ số nhiệt trên M5stick-C với DHT11: 6 bước
Theo dõi thời tiết M5Stack M5stick C dựa trên ESP32 với DHT11 | Theo dõi nhiệt độ độ ẩm và chỉ số nhiệt trên M5stick-C Với DHT11: Xin chào các bạn, trong phần hướng dẫn này, chúng ta sẽ học cách giao tiếp cảm biến nhiệt độ DHT11 với m5stick-C (một bảng phát triển của m5stack) và hiển thị nó trên màn hình của m5stick-C. Vì vậy, trong hướng dẫn này, chúng ta sẽ đọc nhiệt độ, độ ẩm & nhiệt tôi