(!) Please ask about problems and questions regarding this tutorial on answers.ros.org. Don't forget to include in your question the link to this page, the versions of your OS & ROS, and also add appropriate tags.

Bumper

Description: Evarobot üzerindeki bumper sensörleri kullanma

Tutorial Level: BEGINNER

Next Tutorial: Kızılötesi

Bumper'ı Çalıştırma

Evarobot içerisindeki sürücüler sayesinde robot üzerindeki bumper sensörleri okunabilmektedir. Sensörlerin okuma bilgisi, çarpışma var ya da yok şeklinde bir değere sahiptir. Evarobot üzerindeki bumper'ı çalıştırmadan önce Evarobot'a ssh ile bağlanılır.

# evarobot
> ssh pi@evarobotDSK
> sudo -s

Bumper sensörlerini çalıştırmak için aşağıdaki kodu terminalde çalıştırmak yeterli olacaktır. evarobot_bumper isimli launch dosyası bumper sensörleri çalıştırmaktadır. Launch dosyasının aldığı parametreler hakkında bilgi almak için evarobot_bumper sayfasını kullanabilirsiniz.

# evarobot
> roslaunch evarobot_bumper evarobot_bumper.launch

Bilgisayar ile Evarobot'un konuşabilmesi için multimaster_fkie paketinde keşif ve senkronizasyon için kullanılan iki düğümü çalıştırmamız gerekmektedir.

# evarobot
> roslaunch master_discovery_fkie master_discovery.launch

# evarobot
> roslaunch master_sync_fkie master_sync.launch

Bumper'ı Terminalden Okuma

Bilgisayar tarafında terminalden bumper sensörlerini okumak için senkronizasyon düğümlerini çalıştırmak gerekmektedir.

# pc
> roslaunch master_discovery_fkie master_discovery.launch

# pc
> roslaunch master_sync_fkie master_sync.launch

Başka bir terminalde rostopic komutu ile bumper verisi okunabilir.

# pc
> rostopic echo /bumper

Topik hakkında bilgi almak için ise aşağıdaki kod kullanılır.

# pc
> rostopic info /bumper

Bumper için Basit Subscriber Yazma

Catkin çalışma alanında evarobot_bumper_subs adında paket oluşturulur.

> cd ~/catkin_ws/src
> catkin_create_pkg evarobot_bumper_subs im_msgs rospy roscpp

Oluşturulan paketin içerinde /src klasörü altında bumper_listener.cpp isminde c++ dosyası oluşturulur.

> cd ~/catkin_ws/src/evarobot_bumper_subs
> mkdir -p ~/catkin_ws/src/evarobot_bumper_subs/src
> cd src
> gedit bumper_listener.cpp

bumper_listener.cpp dosyasının içerisine yazılacak kod aşağıda verilmektedir.

   1 #include "ros/ros.h"
   2 #include "im_msgs/Bumper.h"
   3 
   4 /**
   5  * Bu örnekte evarobot üzerindeki bumper sensörleri ROS sistemi üzerinden okuyan basit bir subscriber yapılmaktadır.
   6  */
   7 
   8 /**
   9  * Dinlenen topikten veri geldiğinde çalışacak callback fonksiyonudur.
  10  * Bu örnekte görevi gelen verileri ekrana yazdırmakdır.
  11  */
  12 void chatterCallback(const im_msgs::Bumper::ConstPtr& msg)
  13 {
  14   ROS_INFO("New Data: %d", msg->header.seq);
  15   for(int i = 0; i < msg->state.size(); i++)
  16   {
  17     if(msg->state[i].bumper_state)
  18           ROS_INFO("Bumper[%d] True", i);
  19         else
  20           ROS_INFO("Bumper[%d] False", i);
  21   }
  22 }
  23 
  24 int main(int argc, char **argv)
  25 {
  26   /**
  27    * ROS ilklendiriliyor.
  28    */
  29   ros::init(argc, argv, "bumper_listener");
  30 
  31   ros::NodeHandle n;
  32 
  33   /**
  34    * Subscriber tanımlanıyor.
  35    * İlk parametre olarak dinlenecek topiğin adı, ardından bufferın büyüklüğü ve callback fonksiyonu tanımlanmaktadır.
  36    */
  37   ros::Subscriber sub = n.subscribe("bumper", 1000, chatterCallback);
  38 
  39   ros::spin();
  40 
  41   return 0;
  42 }

Paket derlenirken yazdığımız cpp dosyasını derlemesi için CMakeLists.txt dosyasını aşağıdaki gibi düzenliyoruz.

> cd ..
> gedit CMakeLists.txt

cmake_minimum_required(VERSION 2.8.3)
project(evarobot_bumper_subs)

find_package(catkin REQUIRED COMPONENTS
  im_msgs
  roscpp
  rospy
)

catkin_package()

include_directories(
  ${catkin_INCLUDE_DIRS}
)

add_executable(bumper_listener src/bumper_listener.cpp)
add_dependencies(bumper_listener im_msgs_generate_messages_cpp)
 target_link_libraries(bumper_listener
   ${catkin_LIBRARIES}
 )

Yazdığımız ROS paketini derliyoruz.

> cd ~/catkin_ws/
> catkin_make

Yazdığımız bumper_listener düğümünü aşağıdaki gibi çalıştırıldığında, okunan verilerin ekrana yazılması beklenmektedir.

> rosrun evarobot_bumper_subs bumper_listener

Wiki: Robots/evarobot/tr/Tutorials/indigo/Bumper (last edited 2015-09-02 08:04:44 by makcakoca)