メインコンテンツまでスキップ

ROS 2 (ロボット / AGVミドルウェア)

ROS 2 (Robot Operating System 2) は、モバイルロボット / AGV / 協働ロボット / ドローン分野の標準ミドルウェアであり、DDS (Data Distribution Service, RTPS over UDP/TCP) 上で publish / subscribe / service / action を提供します。トピック(例: /odom、/imu、/battery_state)を購読してロボット状態を監視するのが一般的です。

ゲートウェイの ROS2 ドライバは、ROS 2 標準ブリッジ rosbridge_suite (rosbridge_server) の JSON over WebSocket エンドポイントに接続してトピックを購読する実装ドライバです。DDS に直接接続しないため、ROS 2 側では rosbridge_server を起動するだけで済みます。読み取り専用です。


事前準備 — rosbridge_server​

ROS 2 側(ロボット本体または同一ネットワークの PC)で標準パッケージ rosbridge_suite をインストール・起動します。

# 예: ROS 2 Humble
sudo apt install ros-humble-rosbridge-suite
ros2 launch rosbridge_server rosbridge_websocket_launch.xml # 기본 ws 포트 9090

登録フォーム入力値​

入力欄記入内容例
IP アドレスrosbridge_server のホスト192.168.0.30
ポートrosbridge WebSocket ポート9090 (ws デフォルト) / 9443 (wss デフォルト)
パス (rosbridge)WebSocket エンドポイントパス — オプション path/ (デフォルト)
TLS 使用false = ws / true = wss — オプション tlsfalse (デフォルト)
書き込み非対応

ROS 2 ドライバは読み取り専用です。トピック publish(例: /cmd_vel 移動コマンド)は rosbridge の advertise が必要なためサポートしていません。ロボットへのコマンド送信は別経路を使用してください。


タグの PLC アドレス表記​

アドレスは <topic>:<field.dot.path> — 最初の : でトピックとフィールドパスを分離します(ROS トピックは / を含み、: はありません)。

表記意味
/temperature:datastd_msgs/Float64 の data フィールド
/imu:orientation.zsensor_msgs/Imu のネストしたフィールド(ドットパス)
/scan:ranges.0配列要素 — 数値セグメントがインデックス
/odom: がない場合、msg 全体(JSON 文字列)
  • リーフフィールドはテキスト値として、object / array は JSON 文字列として返されます。
  • lazy subscribe — トピックは最初の read 時に 1 回購読され、その後 rosbridge が新しいサンプルを push します。したがって、最初の値は次の収集サイクルから入ってきます。

データ形式マッチング​

msg フィールドデータ形式
float フィールド (data, orientation.z …)Float / Double
int / enum フィールドInteger
bool フィールドBoolean
文字列 / msg 全体 (JSON)String

よく使うトピックマッピング (参考)​

アドレス意味推奨形式
/battery_state:percentageバッテリー残量 (sensor_msgs/BatteryState)Float
/odom:pose.pose.position.xロボット位置 x (nav_msgs/Odometry)Float
/odom:twist.twist.linear.x前進速度 (nav_msgs/Odometry)Float
/diagnostics診断メッセージ全体String (JSON)

/scan (LiDAR raw) のような大きなメッセージは、msg 全体の収集を避け、必要な要素のみ(例: /scan:ranges.0)を登録してください。


よくある問題​

症状考えられる原因解決方法
登録直後に値が空lazy subscribe — 最初の read は購読のみ次の収集サイクル (timecycle 1回) まで待機
接続失敗 (connect failed)rosbridge_server 未起動 / ポート不一致ROS 2 側で rosbridge_server 起動 + ポート (9090) 確認
wss 接続失敗TLS 設定 / 証明書tls=true の場合、rosbridge も TLS で起動する必要あり (wss デフォルトポート 9443)
値が更新され途中で停止WebSocket 切断 — ドライバは即座に未接続へ移行 (古いキャッシュ値を返し続けない)ネットワーク / rosbridge 再起動確認
トピック名は正しいが値が空フィールド dot-path のタイプミス (msg にないパス)ros2 topic echo <topic> で msg 構造を確認後、パス修正

その他の統合経路 (参考)​

rosbridge が使えない環境では、以下の経路も可能です。

状況代替案
複数ロボット + クラウド収集まで必要MQTT ブリッジ → Sparkplug B / MQTT クライアント
産業用ロボットコントローラ (ABB / KUKA / UR)OPC UA Robotics Companion → OPC-UA