ROS2のpublisher/subscriber概要にて質問を頂いて色々考える機会をもらったので本ページを作成.感謝.
概要
ROS2ノードはメッセージのやり取りによって緩い接続性を実現している.その時,独自メッセージによって自分独自の(プロジェクト独自の)メッセージを実現しても良い.
ただ,よく使用するメッセージは common_interfaces
にまとめられており,(特にロボットや器械を対象にすると)結構そろっているので活用しない手はない.
使い方は
common_interfacesの活用
種類を確認
GitHubの公式のcommon_interfacesに色々あるので見てみる.
利用
例えば以下のメッセージを利用する場合.
- common_interfaces/sensor_msgs/msg/BatteryState.msg
インクルードファイル
#include <sensor_msgs/msg/battery_state.hpp>
package.xml
使用するものを追加.
<depend>sensor_msgs</depend>
CMakeLists.txt
使用するものを追加
find_package(sensor_msgs REQUIRED)
ament_target_dependencies(
...
"sensor_msgs"
...
)
ament_export_dependencies(
...
"sensor_msgs"
...
)
メッセージでの利用など
メッセージの型を指定してcreate_publisher
やcreate_subscription
を利用する.
この時の型は以下のようになる.
sensor_msgs::msg::BatteryState
注意
std_msgs
は中の注意書きにあるように「とりあえず使う分だから.長期使用には合いません」みたいなことが書いてある.
The primitive and primitive array types should generally not be relied upon for long-term use.
primitive
とprimitive array
なので ColorRGBA
,Empty
,Header
は別.