Mengkonfigurasi ROS dan bekerja dengan kamera stereo ZED di NVIDIA Jetson

Selamat siang, para pembaca! Dalam artikel terbaru, saya berbicara tentang SLAM dan metode odometri visual yang populer yang mendukung ROS. Pada artikel ini saya akan menyimpang sedikit dari topik dan berbicara tentang pengaturan dan bekerja dengan ROS pada komputer mikro NVIDIA Jetson TK1 . Setelah menginstal semua yang kita butuhkan, kita akan terhubung dan mencoba streolabs ZED stereo camera . Kepada siapa itu menarik saya bertanya di bawah kat.

Tentang NVIDIA Jetson


Untuk memulai, pertimbangkan platform NVIDIA Jetson TK1. NVIDIA Jetson TK1 adalah mikrokomputer NVIDIA berdasarkan Tegra K1 SOC (CPU + GPU pada satu chip dengan dukungan CUDA). NVIDIA Jetson membanggakan CPU quad-core ARM Cortex-A15 dengan 2,3 GHz, memiliki komponen yang sama dengan Raspberry Pi (HDMI, USB 2.0 dan 3.0, Ethernet), serta modul khusus PC: SATA, mini-PCIe . Prosesor ponsel Tegra K1 memiliki sifat dan arsitektur yang sangat mirip dengan GPU desktop, yang memungkinkannya menahan beban berat dengan konsumsi daya minimal. Seperti yang dinyatakan pada halaman resmi, prosesor ini memungkinkan Anda untuk menjalankan tugas-tugas grafik yang intensif sumber daya, seperti pengenalan wajah, augmented reality, dan bahkan tugas penglihatan komputer untuk kendaraan tak berawak. Anda dapat membaca lebih lanjut tentang semua fitur platform di sini .

Memori internal pada NVIDIA Jetson TK1 diwakili oleh modul eMMC 16 GB. Secara default, NVIDIA Jetson TK1 hadir dengan sistem operasi Ubuntu 14.04.

Adaptor AC / DC 12 V digunakan untuk memberi daya pada komputer mikro.

gambar

Kamera stereo ZED


Kamera stereo ZED adalah kamera dengan kedalaman pasif, terdiri dari dua kamera RGB biasa, berjarak 12 cm satu sama lain, dengan pemandangan hingga 20 meter. Tidak seperti kamera aktif (seperti ASUS Xtion dan Microsoft Kinect), kamera stereo ZED tidak memiliki laser inframerah untuk mengukur jarak. Kamera ini relatif murah (biaya $ 449). Keuntungan dari kamera adalah ukurannya yang kecil (175 x 30 x 33 mm) dan ringan (159 g).

Kamera dapat digunakan untuk membuat peta area di luar ruangan pada drone .
Anda dapat membaca lebih lanjut tentang kamera di halaman resmi .

gambar

Mengkonfigurasi Ubuntu pada NVIDIA Jetson TK1


Kami menghubungkan NVIDIA Jetson TK1 menggunakan HDMI ke monitor, kabel Ethernet ke konektor yang sesuai, dan akhirnya menggunakan adaptor 12 V AC / DC ke sumber listrik.

Untuk menginstal sistem pada NVIDIA Jetson, Anda mungkin perlu menginstal JetPack TK1 (instruksi dapat ditemukan di sini ). Saya mendapatkan NVIDIA Jetson dengan JetPack yang sudah diinstal dan Ubuntu 14.04, jadi di sini saya tidak akan mempertimbangkan untuk menginstalnya.

Jadi sistem Ubuntu 14.04 akan mulai secara otomatis. Untuk otorisasi, kami menggunakan nama pengguna dan kata sandi ubuntu.

Cari tahu alamat IP host Jetson:

ifconfig 

Dapatkan spesifikasi perangkat keras:

 lscpu 

Kesimpulannya adalah ini:

 Architecture: armv7l Byte Order: Little Endian CPU(s): 4 On-line CPU(s) list: 0-3 Thread(s) per core: 1 Core(s) per socket: 4 Socket(s): 1 

Mungkin ada masalah saat menyambungkan ke Jetson melalui SSH: ifconfig menampilkan alamat IP, tetapi Anda tidak dapat terhubung ke Jetson di alamat ini. Untuk menyelesaikan masalah, buka file / etc / network / interface dari root:

 sudo nano /etc/network/interface 

dan tambahkan baris:

 auto eth0 iface eth0 inet dhcp 

Kami membuat penugasan alamat IP yang dinamis. Simpan perubahan dan jalankan:

 sudo ifup eth0 

Sekarang semuanya harus bekerja. Keputusan ini diambil dari sini .
Sekarang terhubung ke Jetson melalui SSH:

 ssh -X ubuntu@<ip_address> 

Instal CUDA


Untuk bekerja dengan kamera ZED, kita membutuhkan ZED SDK, yang membutuhkan CUDA versi 6.5 yang diinstal. Unduh file deb untuk CUDA Toolkit 6.5 untuk L4T dari sini (instruksi diambil dari sini ):

 wget http://developer.download.nvidia.com/compute/cuda/6_5/rel/installers/cuda-repo-l4t-r21.1-6-5-prod_6.5-14_armhf.deb 

Setel metadata repositori untuk CUDA untuk L4T yang baru saja Anda unduh:

 sudo dpkg -i cuda-repo-l4t-r21.1-6-5-prod_6.5-14_armhf.deb 

Unduh dan instal CUDA Toolkit itu sendiri termasuk toolkit OpenGL untuk NVIDIA:

 sudo apt-get update 

Instal cuda-toolkit-6-5:

 sudo apt-get install cuda-toolkit-6-5 

Tambahkan pengguna ubuntu ke grup "video" untuk memberikan akses ke GPU:

 sudo usermod -a -G video $USER 

Di sini $ USER adalah ubuntu.
Tambahkan path ke folder instalasi CUDA ke skrip .bashrc dan jalankan di terminal saat ini:

 echo "export PATH=/usr/local/cuda-6.5/bin:$PATH" >> ~/.bashrc echo "export $PATH=/usr/local/cuda-6.5/bin:$PATH" >> ~/.bashrc source ~/.bashrc 

Periksa apakah CUDA Toolkit diinstal pada perangkat:

 nvcc -V 

Mengkonfigurasi USB 3.0 pada Jetson TK1


Secara default, port USB 3.0 dikonfigurasi oleh sistem pada Jetson TK1 sebagai USB 2.0. Kita perlu mengkonfigurasinya sebagai USB 3.0. Untuk melakukan ini, buka file /boot/extlinux/extlinux.conf di bawah root:

 sudo vi /boot/extlinux/extlinux.conf 

Temukan string 'usb_port_owner_info = 0'. Jika baris ini muncul dua kali, maka ubah inklusi terakhir. Tulis ulang 'usb_port_owner_info = 0' hingga 'usb_port_owner_info = 2'.

Instal ZED SDK


Prosedur instalasi terlihat mirip dengan Linux desktop. Hanya perlu dicatat bahwa OpenCV sudah diinstal ketika menginstal JetPack sehingga Anda dapat menggunakan optimasi Tegra untuk itu. Karena itu, instalasi OpenCV secara manual tidak diperlukan.

Untuk menggunakan kamera stereo ZED, kita perlu menginstal ZED SDK 1.2. Pemasang menggunakan file .run Jetson TK1 khusus. Unduh penginstal:

 wget https://www.stereolabs.com/developers/downloads/archives/ZED_SDK_Linux_JTK1_v1.2.0.run 

Tetapkan hak eksekusi untuk file dan jalankan di terminal:

 sudo chmod +x ZED_SDK_Linux_JTK1_v1.2.0.run ./ZED_SDK_Linux_JTK1_v1.2.0.run 

Kami menerima ketentuan perjanjian lisensi, tekan 'q' dan kemudian 'Y'. Selanjutnya, ikuti instruksi.

Luncurkan ZED Explorer di Jetson sendiri (tidak berfungsi saat menghubungkan jarak jauh melalui SSH):

 /usr/local/zed/tools/ZED\ Explorer 

gambar

Menginstal driver ROS untuk kamera stereo ZED


Saya menggunakan ROS Indigo dalam percobaan saya. Instal dependensi untuk driver ROS:

 sudo apt-get install ros-indigo-tf2-ros ros-indigo-image-transport ros-indigo-dynamic-reconfigure ros-indigo-urdf 

Pasang pembungkus ROS untuk kamera ZED:

 cd ~/catkin_ws/src git clone https://github.com/zastrix/zed-ros-wrapper.git git checkout ef3ad46f14cf62ff21083829a1fa6879d20246de cd ~/catkin_ws catkin_make 

Jalankan zed_wrapper dengan menjalankan perintah berikut di jendela terminal yang berbeda:

 roscore roslaunch zed_wrapper zed.launch 

Kami menunjukkan topik aktif:

 rostopic list 

Dalam daftar, selain topik standar, kita akan melihat topik dengan awalan / zed:

 /zed/depth/camera_info /zed/depth/depth_registered /zed/joint_states /zed/left/camera_info /zed/left/image_raw_color /zed/left/image_rect_color /zed/odom /zed/point_cloud/cloud_registered /zed/rgb/camera_info /zed/rgb/image_raw_color /zed/rgb/image_rect_color /zed/right/camera_info /zed/right/image_raw_color /zed/right/image_rect_color 

Jalankan rqt_image_view:

 rosrun rqt_image_view rqt_image_view 

Saat memilih topik / zed / depth / depth_registered kita mendapatkan peta kedalaman:

gambar

Gambar RGB dari kamera kiri (/ zed / left / image_raw_color):

gambar

Dan akhirnya, gambar RGB dari kamera kanan (/ zed / right / image_raw_color):

gambar

Data dari kamera diterbitkan dalam topik / zed / rgb / image_raw_color dan / zed / depth / depth_registered dengan frekuensi 15Hz.
Kami menemukan frekuensi penerbitan cloud titik dalam topik / zed / point_cloud / cloud_registered:

 rostopic hz /zed/point_cloud/cloud_registered 

 average rate: 4.146 min: 0.202s max: 0.371s std dev: 0.04798s window: 11 average rate: 4.178 min: 0.191s max: 0.371s std dev: 0.04306s window: 16 

Jalankan rviz di Jetson sendiri (saya tidak berhasil meluncurkannya ketika menghubungkan via ssh dengan opsi -x):

 rosrun rviz rviz 

gambar

gambar

SLAM Pada NVIDIA Jetson dengan Kamera Stereo ZED


Sekarang mari kita coba kamera ZED pada tugas praktis. Pada NVIDIA Jetson, Anda dapat dengan mudah menjalankan algoritma SLAM RTAB-MAP. Pertama, instal pembungkus ROS untuk RTAB-MAP:

 sudo apt-get install ros-indigo-rtabmap-ros 

Sekarang jalankan rtabmap menggunakan kamera ZED. Jika kita tidak menjalankan zed_wrapper, maka jalankan:

 rosrun zed_wrapper zed_wrapper_node 

Jalankan rtabmap:

 rtabmap 

Pilih kamera ZED di jendela rtabmap sebagai sumber:

gambar

Saya belum menguji RTAB-MAP pada NVIDIA Jetson, jadi saya meninggalkan Anda, pembaca yang budiman, kesempatan untuk mencoba algoritma SLAM ini. Penggunaan RTAB-MAP dapat ditemukan di dua artikel terakhir saya (di sini dan di sini ).

Saya harap artikel ini akan menjadi titik awal yang baik bagi Anda untuk menggunakan kamera stereo ZED dan mikrokomputer NVIDIA Jetson. Semoga sukses dalam eksperimen dan sampai jumpa lagi!

PS: Pendapat Anda tentang memilih kamera stereo yang murah untuk eksperimen itu menarik. Dukungan ROS bukanlah masalah besar, yang terpenting adalah harga. Silakan tulis opsi Anda di komentar ke artikel.

PS (Pembaruan): Saya ingin mencoba kamera stereo pasif seperti ZED. Diinginkan dapat bekerja dengan Raspberry Pi 3.

Source: https://habr.com/ru/post/id409259/


All Articles