ROSのトピック通信、サービス通信、アクションのテンプレートプログラム
std_msgs/String型のmessageをtopic通信
$ roslaunch ros_template_programs topic_template.launch
$ roslaunch ros_template_programs topic_template_py.launch
計算式を送り,計算結果を返すサービス通信
$ roslaunch ros_template_programs service_template.launch
- service_template.launch
- service_client_template.cpp
- service_server_template.cpp
- Expression.msg
- Calculation.srv
$ roslaunch ros_template_programs service_template_py.launch
- service_template_py.launch
- service_client_template.py
- service_server_template.py
- Expression.msg
- Calculation.srv
指定した時間だけ待機するアクション
$ roslaunch ros_template_programs action_template.launch
$ roslaunch ros_template_programs action_template_py.launch
Nodeletのプラグインを用いたtopic通信
$ roslaunch ros_template_programs topic_template_nodelet.launch
- topic_template_nodelet.launch
- plugin_nodelet_topic_publisher_template.cpp
- plugin_nodelet_topic_subscriber_template.cpp
- nodelet_description.xml
ROSのノード間通信ではプロセス間通信のためにメモリコピーが発生し通信の遅延が存在します。
特に画像はデータサイズが大きいために通信量や遅延が無視できない量になります。
Nodeletを使うと記述の仕方が特殊になりますが、メモリコピー無しでノード間通信を行うことができます。
Nodeletとは通常のROSノードに当たる機能を持ったプログラムをプラグインの形で記述して、
実行時には複数のプラグインを1つのプロセスで実行することでメモリコピーを回避して高速化を狙うという仕組みです。