My battery is low and it's getting dark.
Bu ödevde göreviniz Turtlebot simülasyonu kullanarak reaktif şekilde engelden kaçınma algoritması geliştirmek olacaktır. Robot önüne çıkan engellerden /scan topic'inden gelen LaserScan mesaj türündeki veriyi kullanarak kaçınmalıdır. Robot etrafındaki engelleri tespit etmek için lazer tarayıcı kullanmalı ve aşağıdaki şekilde hareket etmelidir.
- Hızını önündeki engel durumuna göre değiştirmeli.
- Önündeki engellere göre uzaktan manevra yapmalı.
- Robotun hareketi boyunca hızının aynı olması ve robot süpürgeler gibi durduğu yerde dönmesi istenmemektedir.
- Smooth bir hareket gözlenmelidir.
Robotun hareketini gerçekleştireceği parkur
Robotun hareket süresi 60 saniyedir. Bu süre boyunca koridorda başlangıç noktasından olabildiğince uzaklaşmalıdır. 60 saniyenin sonrasında simülasyon ortamının ışığı söndürülmeli ve robot hareketini sonladırmalıdır. Robotun hareketi aşağıdaki örnekteki gbi olmalıdır.
example.mp4
Ödevle ilgili daha fazla bilgiye ve yardımcı olacak kaynaklara aşağıdan ulaşabilirsiniz.
Bir workspace oluşturun.
mkdir ~/rover_ws
cd ~/rover_ws
catkin_init_workspace
mkdir src
Bu paketi klonlayıp derleyin.
cd ~/rover_ws/src
git clone https://github.com/itu-rover/iturover_obstacle_avoidance_assignment
cd ..
catkin build
İçerisinde launch dosyası olan yeni bir paket oluşturun.
cd ~/rover_ws/src
catkin_create_pkg reactive_robot std_msgs rospy geometry_msgs message_generation
cd reactive_robot
mkdir launch
Turtlebot simülasyonunu kullanmak için gerekli paketleri kurun.
sudo apt install ros-noetic-turtlebot3-simulations
Gazebo ve RViz'i çalıştırmak için aşağıdaki komutu terminal yardımıyla çalıştırın.
roslaunch reactive_robot_sim reactive_robot_sim.launch
- Robot bir komut ile harekete geçmelidir.
- Robot harekete geçtikten sonra 60 saniye hareket etmelidir.
- Robot, hareketi esnasında lazer tarayıcadan gelen veriyi kullanarak herhangi bir engele çarpmadan hareket etmelidir.
- 60 saniyelik sürenin sonunda robot hareketini sonlandırmalı, /scan topic'inden unsubscribe olmalı ve node kapanmalıdır.
- 60 saniyelik sürenin sonunda Gazebo ortamındaki sun adlı ışık Gazebo service'i olan DeleteLight yardımıyla kaldırılmalıdır.
- Robotun hareketindeki değişimler rospy.loginfo yardımıyla terminalde gösterilmelidir. Örneğin: Started rotating left. Her değişim için yapmayı unutmayınız.
- Node ile ilgili bilgiler rospy.loginfo yardımıyla terminalde gösterilmelidir. Örneğin: Time limit reached. Stopping...
- Script'iniz ve simülasyon ortamı aynı anda launch dosyası yardımıyla çalıştırılmalıdır.
- Launch dosyasının ismi reactive_robot.launch_ olmalıdır.
- Robotun hareketini ayarlamak için kullanacağınız değişkenlerin değerleri oluşturacağınız launch dosyasından çekilmelidir.
- Kodunuz yorum satırlarıyla açıklanmalıdır.