Teknofest Simülasyon Ortamı Kurulumu ve Çalıştırılması

bir önceki adıma gidin. anasayfaya dönün.

Bu adımda simülasyon ortamının kurulumu & çalıştırılması anlatılacaktır.

Simülasyon Ortamının Oluşturulması

alt text

Teknofest 2021 İnsansız Sualtı Sistemleri Yarışması için hazırladığımız simülasyon ortamını indirmek için aşağıdakı komutlar çalıştırılmalıdır.

# catkin workspace oluşturmadıysanız oluşturun
mkdir -p ~/catkin_ws/src

# oluşturduğunuz workspace'in source klasörüne gidin
cd ~/catkin_ws/src

# Teknofest simülasyon ortamı için teknofest_simulator paketini klonlayalım.
# Not: eğer clone işlemi sırasında hata alırsanız, bu bilgisayarınızdaki ssh anahtarını
# github hesabınıza eklemediğinizden kaynaklanmaktadır. Ayarlar bölümünden ekleyin veya
# git clone https://github.com/itu-auv/teknofest-simulator.git 
# çalıştırın. 
git clone git@github.com:itu-auv/teknofest-simulator.git
# git clone https://github.com/itu-auv/teknofest-simulator.git 


# Catkin build komutu çalıştırılırken workspace içinde bulunulmalıdır,
# bu sebeple workspace klasörüne tekrar geri dönün
cd ~/catkin_ws

# Paketi derleyin
catkin build -- teknofest_simulator

Yukarıdaki işlemler tamamlandıktan sonra source ~/catkin_ws/devel/setup.bash komutunu çalıştırarak derlemiş olduğumuz paketi bulunduğunuz terminalin environment’ında tanımlamış olduk.

Simülasyon ortamını çalıştırmak için source işlemi yapılan terminalde aşağıdaki komut çalıştırılır.

roslaunch teknofest_simulator start.launch

Simülasyon Ortamına Aracın Yüklenmesi

Bu adımda daha önceki adımlarda test amaçlı oluşturmuş olduğumuz aracı yüklemek için aşağıdaki komut çağırılır. Yine önceki adımlarda da olduğu gibi <robot_name> kısmı, aracınıza verdiğiniz isim ile değiştirilmelidir.

Eğer aracınızın sensör ve itici tanımlamalarında, t100_thruster, t200_thruster, xsens_mti_g710 vs vs gibi sensör/iticileri kullandıysanız bunların tanımlanmış olduğu ituauv-uuv-descriptions paketini de workspace’inize indirmiş olmanız gerekir. Bunun için,

# oluşturduğunuz workspace'in source klasörüne gidin
cd ~/catkin_ws/src

# Teknofest simülasyon ortamı için teknofest_simulator paketini klonlayalım.
git clone https://github.com/itu-auv/ituauv-uuv-descriptions.git

# Catkin build komutu çalıştırılırken workspace içinde bulunulmalıdır,
# bu sebeple workspace klasörüne tekrar geri dönün
cd ~/catkin_ws

# Paketi derleyin
catkin build -- ituauv_uuv_descriptions

# Paketi terminalimize tanıtıyoruz
source devel/setup.bash

Bu noktaya gelindiğinde catkin_ws/src/ klasörü altında 3 paket bulunması gerekmektedir

teknofest-simulator/
ituauv-uuv-descriptions/
<robot_name>_description/
# Daha sonrasında artık <robot_name>_description paketimizi derleyebiliriz
catkin build -- <robot_name>_description
# veya tüm paketleri derlemek için "catkin build"

# Paketi terminalimize tanıtıyoruz
source devel/setup.bash

Yukarıdaki işlemler tamamlandıktan sonra

roslaunch <robot_name>_description upload.launch

komutu çalıştırılır. Bu durumda Gazebo’da tasarlanmış aracın görülüyor olması gerekir.

Tüm sistemlerin fonksiyonel olduğuna dair bir genel bakış yapmak için

rostopic list

komutu çalıştırılabilir. Burada ROS ağı üzerinde yayımlanmakta olan topic’ler görülebilir. Bu listede örnek olarak aşağıdaki bir kaç topic aranabilir, rostopic echo <topic_ismi> ile de istenilen topic’deki veri akışı gözlemlenebilir.

/<robot_name>/sensors/imu/data_raw
/<robot_name>/sensors/imu/mag
/<robot_name>/cameras/cam_<camera_name>/image_raw
/<robot_name>/sensors/pressure
/<robot_name>/thrusters/0/input
...
/<robot_name>/thrusters/7/input

Simülasyon Ortamından Odometri (Ground Truth) Bilgisi Elde Edilmesi

Sensörlerden elde edilen bilgilerin yanısıra, geliştirilen algoritmaları test edebilmek ve aracın gerçek konumunu görebilmek amacıyla simülatör tarafından ground truth odometri bilgisi /<robot_name>/pose_gt topic’inde nav_msgs/Odometry mesaj tipinde yayımlanmaktadır. Bu bilgi <robot_name>_description/urdf/sensors.xacro dosyası içerisindeki

<default_pose_3d_macro namespace="${namespace}" parent_link="${namespace}/base_link" inertial_reference_frame="${inertial_reference_frame}" />

satırında eklenen plugin ile sağlanmaktadır.

not: Bu bilgi simülatör tarafından sağlanmakta olup, gerçek yarışma ortamında bu bilgilerin sağlanmayacağını unutmayın.

Sonraki adımda simülasyon ortamında iticilerin kontrol edilmesi işlenecektir.