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.

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 .

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

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 RGB dari kamera kiri (/ zed / left / image_raw_color):

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

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


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:

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.