Cara menggunakan ros python

# RE605 - Setup Development Environment Development environment yang akan digunakan untuk mata kuliah Machine Vision adalah sebagai berikut: * Python 3.7.x (Anaconda) * PyTorch 1.7.x * OpenCV 4.5.x * Tensorboard * Scikit-learn * Scikit-image * Scipy * Matplotlib * Jupyter Notebook ## 1. Instalasi Anaconda dan Membuat Virtual Environment **Instalasi pada Linux** Ketikkan perintah berikut pada terminal ```bash= sudo apt update && sudo apt upgrade -y wget https://repo.anaconda.com/archive/Anaconda3-2020.11-Linux-x86_64.sh chmod +x Anaconda3-2020.11-Linux-x86_64.sh ./Anaconda3-2020.07-Linux-x86_64.sh ``` Lakukan proses instalasi diatas dengan pilihan default. Setelah proses instalasi selesai lakukan eksekusi terhadap file `~/.bashrc` dengan mengetikkan perintah berikut ini. ```bash= source ~/.bashrc ``` Setelah mengeksekusi perintah tersebut, di terminal akan muncul environment default `base` yang sedang digunakan seperti berikut. ``` (base) username@machine-name:~$ ``` **Membuat Virtual Environment** Membuat virtual environment dapat dilakukan dengan dua cara: 1. Menggunakan `anaconda-navigator` 2. Menggunakan terminal Jika menggunakan terminal, format perintah yang digunakan sebagai berikut. ``` conda create -n envname python=x.x anaconda ``` Contoh: membuat virtual environment dengan nama `re605` dan menggunakan Python versi 3.7.x. ```bash= conda create -n re605 python=3.7 anaconda ``` **Mengaktifkan Virtual Environment** Setelah membuat virtual environment, aktifkan virtual environment yang ingin digunakan dengan format perintah sebagai berikut. ``` conda activate envname ``` Contoh: mengaktifkan virtual environment `re605` yang telah dibuat. ```bash= conda activate re605 ``` Sekarang di terminal akan muncul nama environment yang aktif `re605` seperti berikut ini. ``` (re605) username@machine-name:~$ ``` **Menonaktifkan Virtual Environment** Untuk menonaktifkan virtual environment format perintah yang digunakan adalah sebagai berikut. ``` conda deactivate envname ``` Contoh: menonaktifkan virtual environment `re605` ```bash= conda deactivate re605 ``` Setelah menonaktifkan virtual environment `re605` maka secara default virtual environment yang digunakan adalah `base`. Jika ingin menonaktifkan virtual environment `base`, lakukan proses `deactivate` sekali lagi. Jika Anda melakukan `deactivate` pada environment `base`, maka tampilan pada terminal akan kembali seperti semua dimana tidak ada virtual environment yang aktif seperti berikut ini. ``` username@machine-name:~$ ``` ## 2. Instalasi Python Package Menggunakan Conda Package Manager Untuk melakukan instalasi Python package/library disarankan menggunakan `conda package manager` dan menggunakan channel `conda-forge`. Dengan cara tersebut, package yang ter-*install* adalah yang **stable** dan **latest update**. Format perintah untuk melakukan instalasi python package dengan `conda package manager` adalah sebagai berikut. ``` conda install -c nama-channel nama-package ``` Contoh: menginstall package `matplotlib` menggunakan `conda package manager` dari channel `conda-forge` ```bash= conda install -c conda-forge matplotlib ``` ### 2.1 Instalasi PyTorch Setelah Anda membuat virtual environment, lakukan instalasi PyTorch terlebih dahulu pada virtual environment yang digunakan. Silahkan merujuk ke link berikut ini [https://pytorch.org/](https://pytorch.org/) untuk melakukan instalasi PyTorch. Jika komputer Anda dilengkapi dengan NVIDIA GPU, sesuaikan PyTorch yang diinstall dengan versi CUDA yang digunakan. ### 2.2 Instalasi Package Lainnya Instalasi package lainnya dapat menggunakan `conda package manager` dengan perintah yang terlah dijelaskan sebelumnya. Selain itu pastikan instalasi dilakukan pada virtual environment yang digunakan. ## 3. Verfikasi Python Package yang Terinstall Untuk melakukan verfirikasi, jalankan jupyter notebook terlebih dahulu dengan mengetikkan perintah berikut ini pada terminal. ```bash= jupyter notebook ``` Halaman Jupyter Notebook akan muncul pada browser. Buatlah notebook baru dengan cara klik kanan pada tombol **New** disebelah kanan, kemudian pilih **Python 3** ![](https://i.imgur.com/ZLmzSRv.png) Tambahkan script berikut ini pada cell pertama di Jupyter Notebook. ```python= import torch import cv2 import matplotlib import sklearn import skimage import scipy import tensorboard ``` ![](https://i.imgur.com/hp9c8Ky.png) Eksekusi script diatas dengan cara menekan tombol **Shift + Enter** pada keyboard. Pastikan tidak ada pesan error ketika script dieksekusi. **PyTorch dengan NVIDIA GPU** Jika komputer dilengkapi dengan GPU, pastikan PyTorch mengenali GPU pada komputer. Caranya jalankan script berikut ini pada cell berikutnya ```python= torch.cuda.current_device() ``` Jika PyTorch mengenali GPU, maka output dari script diatas akan menampilkan index dari GPU yang digunakan. Contoh seperti berikut ini. ![](https://i.imgur.com/dcthvSo.png)

Pada contoh ini akan digunakan beberapa command dasar yang penting dan akan dibahas lebih mendalam pada sesi tulisan berikutnya

Dalam tutorial ini embeddednesia menggunakan Ubuntu 16.04 LTS dan  ROS versi Kinetic Kame. Bagi pembaca yang belum memiliki environment ROS yang berjalan, silahkan baca tutorial sebelumnya tentang bagaimana cara menginstal ROS.

Tutorial ini juga tersedia dalam format video melalui kanal Youtube dengan judul Hello Turtlesim, jangan lupa like dan subscribe, serta gunakan kolom komentar untuk memberikan saran dan pertanyaan

ROS Master

Pertama,  jalankan terlebih dahulu server ROS dengan menggunakan perintah roscore. Roscore disebut juga master atau server ros,  Buka terminal baru lalu ketik command berikut

roscore

Secara default server akan di jalankan di mesin lokal. Dikarenakan koneksi dengan ROS Master menggunakan protokol TCP/IP maka secara teknis adalah  mungkin jika kita ingin menjalankan server ROS pada mesin yang berbeda, selama  dalam jaringan LAN yang sama.





ROS Node

Jika roscore adalah server ROS, maka aplikasi client di ROS disebut dengan istilah node. Untuk melihat node ROS yang berjalan bisa diguankan gunakan command

rosnode list.

Setelah perintah tersebut dijalankan, anda akan dapat melihat rosout  sedang aktif, rosout adalah node yang berfungsi mengumpulkan informasi dan mencatat output debugging dari node lain.

rosnode list

/rosout

Untuk melihat  informasi lebih rinci dari masing – masing node, bisa digunakan perintah

 rosnode info [NAMA_NODE]

 

Dari command tersebut dapat diketahui topic apa yang di-publish dan di-subscribe oleh node, juga service yang berjalan.

Publisher dan Subscriber

Untuk pemahaman awal, anda bisa membayangkan node sebagai seorang pelanggan dan/atau penerbit suatu majalah yang disebut topic. Node yang berfungsi sebagai subcriber akan berlangganan (subscribe)  sebuah topic tertentu. Sedangkan node yang berfungsi sebagai publisher akan menerbitkan (publish) majalah kepada pelanggan – pelanggannya (subscriber). Sebuah node bisa bertindak sebagai publisher, subscriber ataupun keduanya secara bersamaan.





Turtlesim

Untuk menjalan sebuah node yang bernama turtlesim, gunakan perintah berikut pada terminal

$ rosrun [nama package] [nama node]

Node turtlesim berada di package turtlesim dengan nama  turtlesim_node jadi perintah yang dimasukkan adalah

rosnode list

/rosout

/turtlesim

Pada jendela terminal baru, masukan kembali perintah rosnode list. dan perhatikan terdapat tambahan node aktif yaitu  /turtlesim di dalam list.

Jika penasaran tentang  node turtlesim,  seperti sebelumnya, dapat digunakan perintah rosnode info /turtlesim

rosnode info /turtlesim

--------------------------------------------------------------------------------

Node [/turtlesim]

Publications:

* /turtle1/color_sensor [turtlesim/Color]

* /rosout [rosgraph_msgs/Log]

* /turtle1/pose [turtlesim/Pose]

Subscriptions:

* /turtle1/cmd_vel [unknown type]

Services:

* /turtle1/teleport_absolute

* /turtlesim/get_loggers

* /turtlesim/set_logger_level

* /reset

* /spawn

* /clear

* /turtle1/set_pen

* /turtle1/teleport_relative

* /kill

contacting node http://ROS-16:37185/ …

Pid: 2464

Connections:

* topic: /rosout

* to: /rosout

* direction: outbound

* transport: TCPROS





Rosnode ping

Untuk memastikan koneksi node ke server berjalan baik, bisa digunakan perintah ping seperti berikut

rosnode ping [nama node]

Turtle Teleop Key

Untuk mengendalikan gerak dari si kura – kura Turtlesim, diperlukan Node bernama turtle_teleop_key yang berada di package yang sama dengan  turtlesim_node 

rosrun turtlesim turtle_teleop_key

Reading from keyboard

---------------------------

Use arrow keys to move the turtle.

Jika anda melihat info dari /turtle_teleop dan memperhatikan topic yang dipublish adalah /turtle1/cmd_vel merupakan topic yang sama yang disubscribe oleh /turtlesim. Melalui topic ini lah turtlesim mendapatkan informasi untuk menggerakkan kura – kura sesuai perintah keyboard dari /turtle_teleop

Rostopic echo

Topic /turtle1/cmd_vel yang dikirimkan /turtle_teleop ke /turtlesim dapat dimunculkan pada layar terminal dengan menggunakan perintah

$ rostopic echo [nama_topic]

RQT_GRAPH

Untuk memvisualisasikan hubungan antara /turtle_teleop dan /turtlesim berserta topic apa saja yang terlibat dapat digunakan perintah

rqt_graph

Cara menggunakan ros python

Kini kita telah berhasil bermain dengan kura – kura turtlesim, dan selangkah lebih baik mengenal perintah – perintah dasar yang dimiliki oleh ROS.