ROS2 vs ROS1. Menginstal ROS2 di Ubuntu 18.04

ROS (sistem operasi robotik) dengan percaya diri menempati posisi terdepan dalam standar robotika. Dalam kata-kata politisi terkenal, "tidak hanya segalanya" sudah menggunakannya.
Pada artikel ini, kami akan mencoba melihat pada tahap selanjutnya dari pengembangan ROS - sistem ROS2, cocok untuk lebih banyak pengembang "ramping". Mari kita bandingkan kedua sistem secara umum, dan pada saat yang sama menginstal ROS2 di Ubuntu 18.04.



* gambar dari www.theconstructsim.com
Model yang sedikit ketinggalan zaman akan digunakan sebagai konfigurasi PC dasar - intel NUC (5i5RYK), RAM 4GB, SSD M.2 120Gb. Performa NUC cukup "untuk mata" untuk tujuan ROS, tetapi kartu single-board (raspberry, odroid, jetson) sengaja tidak dipertimbangkan, karena masing-masing memiliki spesifikasi masing-masing. Diasumsikan bahwa Ubuntu 18.04 (disarankan untuk digunakan dengan ROS) sudah diinstal.

Pengantar.


Selama dekade terakhir, ROS (ROS1) telah tumbuh dan telah tumbuh beberapa kali. Saat ini,
ia memiliki daftar paket yang sangat banyak, di mana setiap paket menyelesaikan masalah baik sebagian atau
seluruhnya, yang menghilangkan konsep penemuan roda lagi. Paket-paket yang dibuat oleh masyarakat telah mengarah pada penciptaan pendekatan yang sama sekali baru untuk robotika dan pengisian cerdas yang diusulkan untuk sistem yang ada.

Keterbatasan ROS1.


Terlepas dari kenyataan bahwa ROS1 memberikan kebebasan komunikasi tertentu dengan komponen perangkat keras dan perangkat lunak yang kompleks, ada beberapa kesulitan yang terkait dengan penggunaan ROS1 dalam produk akhir. Kesulitan-kesulitan ini mulai muncul ketika ada seluruh armada robot heterogen (robot seluler, manipulator robot, dan sebagainya).
Membangun hubungan di antara mereka cukup sulit karena keterbatasan arsitektur ROS1.
Keterbatasan pertama adalah bahwa ROS1 tidak mendukung konsep multimaster.
Keterbatasan kedua ROS1 adalah bahwa, terlepas dari kenyataan bahwa node dapat berkomunikasi satu sama lain tanpa masalah, tidak ada cara yang aman dalam komunikasi ini. Siapa pun yang memiliki kemampuan untuk terhubung ke master (master-node) dapat mengakses topik dan kemudian mengeksploitasi atau memodifikasinya. Karena itu, tujuan utama ROS1 adalah untuk menguji konsep atau prototipe untuk tujuan ilmiah.
Dan yang ketiga, mungkin batasan utama ROS1 adalah bahwa sistem ini bukan sistem waktu nyata. Hal ini menyebabkan keterlambatan dalam menerima data dan kehilangannya.
Semua kerugian di atas didorong ke penciptaan ROS2.

Apa manfaat dari ROS2?


- memungkinkan Anda membuat koneksi aman antara komponen sistem (node)
- interaksinya real-time
- koneksi beberapa robot ke dalam satu jaringan disederhanakan
- kualitas komunikasi antar node ditingkatkan
- tingkat arsitektur ROS diimplementasikan langsung pada perangkat keras
- paket terbaru digunakan pembaruan (ROS1 tidak diperbarui sesering).

ROS2 mengikuti standar industri dan mengimplementasikan interaksi waktu nyata melalui apa yang disebut konsep DDS (Data Distributed Services).

Versi ROS2

.
Versi stabil resmi pertama ROS2 dirilis pada Desember 2017. Distribusi itu diberi nama "Ardent Apalone." Lalu ada rilis pada Juni 2018, dengan nama "Bouncy Bolson". Crystal Clemmys muncul pada Desember 2018. Dashing Diademata (versi saat ini) pada Mei 2019. Seperti yang Anda lihat, distribusi diperbarui dengan cukup ceria, dan, semoga alfabetnya cukup untuk pertama kalinya.

Dukungan OS

.
ROS2 mendukung (jika kita berbicara tentang dukungan resmi) lapisan OS, Linux, Windows, macOS, dan Sistem Operasi Real-Time (RTOS), hanya ROS1 Linux dan macOS.
Dukungan OS yang lebih rinci:


Jadi mengapa Anda membutuhkan ROS2?


ROS2 menggunakan prinsip operasi yang sama dengan ROS1. Pada saat yang sama, ROS2 bukan bagian dari ROS1. ROS2 dibuat untuk melangkahi batas rekannya dengan menggunakan dependensi dan alat yang lebih baru.
Tidak seperti ROS1, yang tumpukannya ditulis dalam C ++, dan pustaka klien dalam C ++ dan Python, ROS-2 juga menggunakan bahasa C. Level independen yang ditulis dalam C diperkenalkan yang berinteraksi dengan pustaka klien ROS2 seperti rclcpp, rclpy, dan rcljava.

ROS2 lebih baik mendukung konfigurasi jaringan dan mengimplementasikan koneksi yang andal.
ROS2 juga tidak lagi menggunakan konsep nodelets (http://wiki.ros.org/nodelet) dan mendukung kemampuan untuk menginisialisasi banyak node secara bersamaan (inisialisasi multinode). Tidak seperti ROS1, fitur pembeda lain dari ROS2 adalah kemampuan untuk melacak status suatu simpul dan menerima pesan jika suatu simpul atau topik telah ditambahkan atau dihapus. Ini dapat digunakan untuk membuat sistem toleran kesalahan.

Perubahan yang terjadi di ROS2 dibandingkan dengan ROS1:


Instal ROS2

.
Jadi, kami akan menginstal distribusi Dashing Diademata (dashing) terbaru di Ubuntu 18,04 dari sumber

Siapkan lingkungan.


$ sudo locale-gen en_US en_US.UTF-8
$ sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
$ export LANG=en_US.UTF-8


Tambahkan repositori ROS2.


$ sudo apt update && sudo apt install curl gnupg2 lsb-release
$ curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc |
sudo apt-key add -
$ sudo sh -c 'echo "deb [arch=amd64,arm64] http://packages.ros.org/ros2/ubuntu `lsb_release -cs` main" > /etc/apt/sources.list.d/ros2-latest.list'


Instal Alat Pengembang ROS.


$ sudo apt update && sudo apt install -y build-essential cmake git
python3-colcon-common-extensions python3-lark-parser python3-pip
python-rosdep python3-vcstool wget
$ python3 -m pip install -U argcomplete flake8 flake8-blind-except
flake8-builtins flake8-class-newline flake8-comprehensions flake8-
deprecated flake8-docstrings flake8-import-order flake8-quotes
pytest-repeat pytest-rerunfailures pytest pytest-cov pytest-runner
setuptools
$ sudo apt install --no-install-recommends -y libasio-dev libtinyxml2-dev


Buat ruang kerja ROS2.


$ mkdir -p ~/ros2_ws/src
$ cd ~/ros2_ws
$ wget https://raw.githubusercontent.com/ros2/ros2/release-latest/ros2.repos
$ vcs import src < ros2.repos

Itu akan memakan waktu.

Instal dependensi menggunakan rosdep.


$ sudo rosdep init
$ rosdep update
$ rosdep install --from-paths src --ignore-src --rosdistro dashing -y --skip-keys "console_bridge fastcdr fastrtps libopensplice67 libopensplice69
rti-connext-dds-5.3.1 urdfdom_headers"

Jika semuanya berjalan dengan baik dan entri "Semua rosdeps yang diperlukan berhasil diinstal" muncul di terminal, Anda dapat melanjutkan ke langkah berikutnya.

Kami mengumpulkan kode, instal colcon.


Dalam ROS1, paket dikumpulkan menggunakan alat catkin. ROS2 menggunakan colcon (utilitas yang mencakup catkin_make, catkin_make_isolated, catkin_tools, dan ament_tools). colcon dapat mengumpulkan paket ROS1 dan paket ROS2. Setelah perintah terakhir, Anda bisa pergi minum teh dengan aman, karena Instalasi mungkin memakan waktu sekitar satu jam. Setelah berhasil diselesaikan, kira-kira informasi berikut tentang instalasi yang berhasil akan muncul di terminal:
$ sudo apt install python3-colcon-common-extensions
$ cd ~/ros2_ws/
$ colcon build --symlink-install






Menyiapkan lingkungan untuk ROS2 (lingkungan).


Agar tidak memasukkan perintah panjang 'sumber ~ / ros2_ws / install / local_setup.bash' setiap kali untuk memulai ROS di terminal, tambahkan alias ke bashrc:
$ sudo gedit ~/.bashrc

Selanjutnya, tambahkan baris di akhir file:
alias initros2='source ~/ros2_ws/install/local_setup.bash

Simpan, keluar dari file dan baca kembali dengan perintah (agar tidak sistem reboot):
$ source ~/.bashrc

Periksa pengoperasian ROS2.


Terminal 1: Perintah-perintah ini memulai simpul bicara. Terminal 2: Di sini, masing-masing, simpul "mendengarkan" diluncurkan. Secara visual, kedua node terlihat seperti ini: Anda juga dapat melihat topik yang dihasilkan oleh node di terminal ke-3: Untuk meringkas. ROS2 ditinjau dibandingkan dengan ROS1, prosedur pemasangan untuk ROS2 (Dashing Diademata (gagah)) di Ubuntu 18.04 telah ditunjukkan.
$ initros2
$ ros2 run demo_nodes_cpp talker




$ initros2
$ ros2 run demo_nodes_py listener










All Articles