ROS2のTutorialsをやります。
暫くはTutorialsそのままをやります。
Service通信をC++で実装する前にsrvを定義します。
Creating custom msg and srv files
環境はUbuntu 22.04です。ROS2 Humbleです。
ディレクトリ構成
srvを作るために専用のPackageをつくります。つくる必要があります。今回はservice_sv_cl_interfacesとします。
今回はMyAddTwoInts.srvをつくります。これをcolcon buildするとmy_add_two_ints.hppが生成されます。
上記と同じworkspaceに配置した「Service通信をさせるPackage(service_sv_clとします)」から
#include "service_sv_cl_interfaces/srv/my_add_two_ints.hpp"
とします。
- ros2_study/
- service_cpp_ws/
- build/
- install/
- log/
- src/
- service_sv_cl_interfaces/
- include/
- service_sv_cl_interfaces/
- srv/
- MyAddTwoInts.srv
- CMakeLists.txt
- package.xml
- include/
- service_sv_cl/
- service_sv_cl_interfaces/
- service_cpp_ws/
下記はROS2のライブラリを参考にした図です。
msgsの数が多い場合も考慮すると2階層が必要ということでしょう。
1階層の場合と2階層の場合の両方があります。
- ros2_study/
- workspace/
- src/
- calculation_msgs/
- add_msgs/
- srv/
- MyAddTwoInts.srv
- srv/
- add_msgs/
- service_sv_cl/
- calculation_msgs/
- src/
- workspace/
msgについても同様です。
Packageをつくろう !!
$ cd ~/ros2_study
$ mkdir service_cpp_ws
$ cd service_cpp_ws
$ mkdir src
$ cd src
packageの名前をservice_sv_cl_interfacesとします。
$ ros2 pkg create service_sv_cl_interfaces --build-type ament_cmake
独自のsrvを定義しよう !!
型の一覧は下記で定義されています。
$ cd service_sv_cl_interfaces (cd ~/ros2_study/service_cpp_ws/src/service_sv_cl_interfaces)
$ mkdir srv
$ cd srv
$ vi MyAddTwoInts.srv
MyAddTwoInts.srv
int64 a
int64 b
---
int64 sum
独自のsrvを定義したからCMakeLists.txtを変更しよう !!
srvのための記述を追記します。
$ cd .. (cd ~/ros2_study/service_cpp_ws/src/service_sv_cl_interfaces)
$ vi CMakeLists.txt
find_package(rosidl_default_generators REQUIRED)
rosidl_generate_interfaces( ${PROJECT_NAME} "srv/MyAddTwoInts.srv" )
追加していきやすい書き方。
find_package(rosidl_default_generators REQUIRED)
rosidl_generate_interfaces( ${PROJECT_NAME}
"srv/MyAddTwoInts.srv"
)
独自のsrvを定義したからpackages.xmlを変更しよう !!
変更しないでcolcon buildすると「packages.xmlにこの記述が足りてないよ」と教えてくれます。
<buildtool_depend>rosidl_default_generators</buildtool_depend>
<exec_depend>rosidl_default_runtime</exec_depend>
<member_of_group>rosidl_interface_packages</member_of_group>
colcon build
$ cd ../.. (cd ~/ros2_study/service_cpp_ws)
$ colcon build --packages-select add_msg
my_add_two_ints.hppが生成されていることを確認します。
$ ls install/service_sv_cl_interfaces/include/service_sv_cl_interfaces/service_sv_cl_interfaces/srv
広告
IT開発関連書とビジネス書が豊富な翔泳社の通販『SEshop』さくらのレンタルサーバ
ムームードメイン
Oisix(おいしっくす)
らでぃっしゅぼーや
珈琲きゃろっと
エプソムソルト