(!) 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 için Basit Subscriber Yazma

Description: Bilgisayarda, bumper için cpp ile Subscriber yazma

Tutorial Level: BEGINNER

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: evarobot_bumper/Tutorials/indigo/Bumper Basit Subscriber Yazma (last edited 2015-09-02 08:59:58 by makcakoca)