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 yazmaTutorial 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