ソフトウェア仕様(ROS2版)

ROS2版のtopic, service, actionの通信仕様を記載します。

joint_state_publisher

topic

/joint_state

関節情報を取得する。
type: JointState
header (std_msgs/Header) -- Headerの情報。
name (string[]) -- 関節の名前のリスト。
position (float32[]) -- 各関節の現在位置のリスト。単位は[rad]
velocity (float32[]) -- 各関節の目標関節速度の設定値のリスト。単位は[rad/s]
acceleration (float32[]) -- 各関節の目標関節加速度の設定値のリスト。単位は[rad/s^2]
enabled (bool[]) -- 各関節のサーボON状態。Trueの場合サーボON。
moving_state (bool[]) -- 各関節の動作状態。停止中であればTrue。

m5stack_publisher

topic

/m5stack

M5からの情報を取得する。
type: M5
header (std_msgs/Header) -- Headerの情報。
button_a (bool) -- M5の前面のボタンAの入力。ボタンを押すとTrue、押していないとFalse。
button_b (bool) -- M5の前面のボタンBの入力。ボタンを押すとTrue、押していないとFalse。
button_c (bool) -- M5の前面のボタンCの入力。ボタンを押すとTrue、押していないとFalse。
din0 (bool) -- ヘッドのdin0ピンのデジタル入力。HiがTrue、LoがFalse。デフォルトHi。
din1 (bool) -- ヘッドのdin1ピンのデジタル入力。HiがTrue、LoがFalse。デフォルトHi。
ain0 (uint16) -- ヘッドのain0ピンのアナログ入力。0-3.3Vを0-4095の4096段階にする。
dout0 (bool) -- ヘッドのdout0ピンのデジタル出力。TrueでHi(3.3V)、FalseでLo(0V)。
dout1 (bool) -- ヘッドのdout1ピンのデジタル出力。TrueでHi(3.3V)、FalseでLo(0V)。
pwmout0 (uint8) -- ヘッドのpwmout0ピンのPWM出力。0-255の256段階で0-3.3Vを出力可能。
temperature (float32) -- AKARI側面の環境センサモジュールの温度計測値。単位は℃。
pressure (float32) -- AKARI側面の環境センサモジュールの観測絶対圧力。単位はPa。
brightness (uint16) -- AKARI側面の光センサユニットの観測明るさを4096段階で出力。0が最も明るい。

servo_server

service

/set_joint_enable

サーボの有効無効状態を設定する。
type: SetJointBool
Request:
joint_name (string[]) -- 関節名のリスト。制御したい関節名を pan, tilt で入力する。
val (bool[]) -- 関節名のリストに対応した要素を設定。TrueでトルクON, FalseでトルクOFF。
Response:
result (bool) -- サービス実行の成功、失敗を返答する。

/move_joint

サーボの目標角度を設定する。 ここで設定した値まで移動する。
type: SetJointPos
Request:
joint_name (string[]) -- 関節名のリスト。動かしたい関節名を pan, tilt で入力する。
val (float32[]) -- 関節名のリストに対応した目標角度のリスト。単位はrad。
sync (bool) -- Trueにすると、サーボの移動が完了するまで関数の終了を待機する。
Response:
result (bool) -- サービス実行の成功、失敗を返答する。

/set_joint_vel

関節の速度を指定する。
type: SetJointFloat
Request:
joint_name (string[]) -- 関節名のリスト。制御したい関節名を pan, tilt で入力する。
val (float32[]) -- 関節名のリストに対応した目標速度のリスト。単位はrad/s。
Response:
result (bool) -- サービス実行の成功、失敗を返答する。

/set_joint_acc

関節の加速度を指定する。
type: SetJointFloat
Request:
joint_name (string[]) -- 関節名のリスト。制御したい関節名を pan, tilt で入力する。
val (float32[]) -- 関節名のリストに対応した目標加速度のリスト。単位はrad/s^2。
Response:
result (bool) -- サービス実行の成功、失敗を返答する。

action

/move_joint

サーボの目標角度を設定する。 ここで設定した値まで移動する。
type: MoveJoint
Request:
goal_pan (float32) -- pan関節の目標角度。単位はrad。
goal_tilt (float32) -- tilt関節の目標角度。単位はrad。
Response:
result (bool) -- サービス実行の成功、失敗を返答する。
Feedback:
pos_pan (float32) -- 現在のpan角度フィードバック。単位はrad。
pos_tilt (float32) -- 現在のtilt角度フィードバック。単位はrad。

m5_server

service

/set_dout

ヘッド部GPIOピンのデジタル出力を設定する。
type: SetDout
Request:
pin_id (uint8) -- pin番号。0でdout0、1でdout1を指定する。
val (bool) -- デジタル出力の値。Falseで0V,Trueで3.3V出力。
sync (bool) -- 同期実行の指定。Trueの場合M5側で実行完了するまで関数の終了待ちを行う。
Response:
result (bool) -- サービス実行の成功、失敗を返答する。

/set_pwmout

ヘッド部GPIOピンのPWM出力を設定する。
type: SetPwmout
Request:
pin_id (uint8) -- pin番号。デフォルトではpwmout0しかないため、0を指定すること。
val (uint8) -- PWM出力の値。 0-255で指定し、0で0V、255で3.3Vを出力する。
sync (bool) -- 同期実行の指定。Trueの場合M5側で実行完了するまで関数の終了待ちを行う。
Response:
result (bool) -- サービス実行の成功、失敗を返答する。

/set_allout

ヘッド部GPIOピンの出力をまとめて設定する。
type: SetAllout
Request:
dout0_val (bool) -- dout0の出力値。Falseで0V,Trueで3.3V出力。
dout1_val (bool) -- dout1の出力値。Falseで0V,Trueで3.3V出力。
pwmout0_val (uint8) -- pwmout0の出力値。0-255で指定し、0で0V、255で3.3Vを出力する。
sync (bool) -- 同期実行の指定。Trueの場合M5側で実行完了するまで関数の終了待ちを行う。
Response:
result (bool) -- サービス実行の成功、失敗を返答する。

/reset_allout

ヘッド部GPIOピンの出力をリセットする。
type: Trigger
Request:
・ None
Response:
result (bool) -- サービス実行の成功、失敗を返答する。

/set_display_color

ボディー部M5のディスプレイ背景色を変更する。
type: SetDisplayColor
Request:
color (string) -- 色名をテキストで指定。指定可能な色は ソフトウェアAPI 内akari_client.color.Colorsと同様。
sync (bool) -- 同期実行の指定。Trueの場合M5側で実行完了するまで関数の終了待ちを行う。
Response:
result (bool) -- サービス実行の成功、失敗を返答する。

/set_display_color_rgb

ボディー部M5のディスプレイ背景色を変更する。
type: SetDisplayColorRgb
Request:
r (uint8) -- RGBのR値を0-255で指定。
g (uint8) -- RGBのG値を0-255で指定。
b (uint8) -- RGBのB値を0-255で指定。
sync (bool) -- 同期実行の指定。Trueの場合M5側で実行完了するまで関数の終了待ちを行う。
Response:
result (bool) -- サービス実行の成功、失敗を返答する。

/set_display_text

ボディー部M5のディスプレイに文字を表示する。
type: SetDisplayText
Request:
text (string) -- 表示する文字列。
pos_x (int32) -- x方向の描画位置ピクセルを0-320で指定。左端が0。 ソフトウェアAPI 内akari_client.position.Positions を用いた位置指定も可能。
pos_y (int32) -- y方向の描画位置ピクセルを0-240で指定。上端が0。 position.Positions を用いた位置指定も可能。
size (uint8) -- 文字サイズを1-11の11段階で指定。
text_color (string) -- 文字色名をテキストで指定。指定可能な色は ソフトウェアAPI 内akari_client.color.Colorsと同様。
back_color (string) -- 背景色名をテキストで指定。指定可能な色は ソフトウェアAPI 内akari_client.color.Colorsと同様。
refresh (bool) -- trueの場合画面全体を現在の背景色で更新する。falseの場合は現在の表示を維持しつつ、文字を描画する範囲のみ更新する。
sync (bool) -- 同期実行の指定。Trueの場合M5側で実行完了するまで関数の終了待ちを行う。
Response:
result (bool) -- サービス実行の成功、失敗を返答する。

/set_display_image

ボディー部M5のディスプレイに画像を表示する。
type: SetDisplayImage
Request:
filepath (string) -- M5のSDカード内のファイルパス。(例;"image/hoge.jpg")
pos_x (int32) -- x方向の描画位置ピクセルを0-320で指定。左端が0。 ソフトウェアAPI 内akari_client.position.Positions を用いた位置指定も可能。
pos_y (int32) -- y方向の描画位置ピクセルを0-240で指定。上端が0。 position.Positions を用いた位置指定も可能。
scale (float32) -- 画像の拡大縮小倍率を指定。1.0で等倍表示。マイナスの値を入れた場合、画面サイズに合わせて自動でサイズ調整される。
sync (bool) -- 同期実行の指定。Trueの場合M5側で実行完了するまで関数の終了待ちを行う。
Response:
result (bool) -- サービス実行の成功、失敗を返答する。

/reset_m5

M5をリセットして再起動する。
type: Trigger
Request:
・ None
Response:
result (bool) -- サービス実行の成功、失敗を返答する。

ROS2版を使ってみよう へ戻る