Kostum messages, srv dan action¶
Kostum msg, srv dan action standar nya ditempatkan di package yang berbeda. Misalnya dalam projek ini, mereka akan di tempatkan di package ros_custom_msgs.
catkin_create_pkg ros_custom_msgs std_msgs message_generation
Setelah itu kita bisa edit CMakeLists.txt dan package.xml seperti berikut ini:
0 cmake_minimum_required(VERSION 2.8.3)
1 project(ros_custom_msgs)
2
3 ## Compile as C++11, supported in ROS Kinetic and newer
4 # add_compile_options(-std=c++11)
5
6 find_package(catkin REQUIRED COMPONENTS
7 std_msgs
8 message_generation
9 )
10
11 #add_action_files(DIRECTORY action
12 # FILES
13 # DetectScene.action
14 #)
15
16 #add_message_files(
17 # FILES
18 # contoh_msg.msg
19 #)
20
21 # Generate services in the 'srv' folder
22 add_service_files(
23 FILES
24 CountWords.srv
25 )
26
27 ## Generate added messages and services with any dependencies listed here
28 generate_messages(
29 DEPENDENCIES
30 std_msgs # Or other packages containing msgs
31 )
32
33 # Define that it's a catkin package So that it can be found by pkg
34 # that is dependent on this package
35 catkin_package(
36 CATKIN_DEPENDS
37 message_runtime
38 )
File srv yang sudah dibuat (lihat subsection Membuat kostum srv file), kemudian di tambahkan ke add_service_files. Begitu pula dengan msg dan action files.
0 <?xml version="1.0"?>
1 <package format="2">
2 <name>ros_custom_msgs</name>
3 <version>0.0.0</version>
4 <description>The ros_custom_msgs package</description>
5
6 <maintainer email="mwasil@outlook.co.id">Mohammad Wasil</maintainer>
7 <author email="mwasil@outlook.co.id">Mohammad Wasil</author>
8
9 <license>GPL-3.0</license>
10
11 <buildtool_depend>catkin</buildtool_depend>
12 <build_depend>std_msgs</build_depend>
13 <build_depend>message_generation</build_depend>
14
15 <exec_depend>message_runtime</exec_depend>
16
17 </package>
Untuk membuat sebuah kostum srv file, kita memerlukan build dependency pada message_generation dan runtime atau execution dependency pada message_generation runtime.
Tree structure dari kostum messages, srv dan action files:
$ tree ros_custom_msgs/
ros_custom_msgs/
├── action
├── CMakeLists.txt
├── msg
├── package.xml
└── srv
└── CountWords.srv
Membuat kostum srv file¶
Service definition atau srv file merupakan sebuah list dari berbagai macam ROS messages dan digunakan oleh service. Perbedaannya dengan message (msg) file adalah srv file memiliki request dan response yang dipisahkan dengan ---. Standar penamaan srv file diawali dengan predikat (verb), misalnya : CountWords, RecognizeObject, ComputeIK.
Berikut adalah contoh dari sebuah service file dengan request sebuah kalimat (String) dan response nya adalah jumlah kata (Int32) dalam kalimat tersebut.
std_msgs/string words
---
std_msgs/Int32 num_words
Kemudian build package ros_custom_msgs:
catkin build ros_custom_msgs
Verifikasi msg, srv atau action kita sudah ready:
$ rossrv show CountWords
[ros_custom_msgs/CountWords]:
std_msgs/String words
string data
---
std_msgs/Int32 num_words
int32 data
Membuat kostum msg file¶
ToDo
Membuat kostum action file¶
ToDo