
aptpod Advent Calendar 2025 12月17日の記事です。
こんにちは、Roboticsグループのエンジニアの影山です。
今回は、最近外部向けのデモ等で活躍しているUnitreeGo2-W(以下 Go2W)をどのように、弊社サービスと連携させるために環境構築、機能を拡張しているか紹介したいと思います。
この記事を読んで頂くことで、Go2Wに限らず、既存のロボットにどのようにintdashを組み込むことができるのか、参考にして頂ければと思います。
構成
実装の一例として、2025年7月に行われたメンテナンス・レジリエンス TOKYO 2025で展示したGo2Wのデモ構成を紹介していきたいと思います。 この展示会ではintdashとGo2Wを中心にいろいろな連携の可能性をデモさせて頂きました。
概要は以下のレポート記事を参照ください。
このデモでは、以下のようなGo2W上の要素をintdashと連携しました。
- Go2Wの遠隔操作
- 頭部カメラ映像
- LiDAR
- 360度カメラ
- ガスセンサー
- Go2Wの各種状態
連携の結果、DataVisualizerでGo2Wから取得したデータを以下のような形で可視化できました。

以降、どのようにしてこのような連携を行ったのか、詳細を説明していきたいと思います。
UnitreeGo2-WのHW構成

Go2Wは、通常の歩行の制御などは本体側で行っており、ユーザ側で改変などはできない仕組みになっています。 Go2W本体のより詳細な情報はTechShare様の記事を参考にたどっていただくのがよいと思います。
ユーザ側のアプリケーションを実行するために、オプションのDocking Stationを搭載して、その中で開発を行います。

Docking Stationは、中にはJetson Orin NXが搭載されており、図に示したように、Ethernetの端子や電源の端子を備えています。
内部にはおそらくEthernetのハブが存在しており、そのハブを経由して本体とEthernetを介してDDSで通信しています。
センサーなどを追加したい場合は、基本的にはUSBを利用して拡張することになります。USBの数も限られるため、複数のセンサーや、インターネット接続のためのデバイスを繋ぐためにはUSBハブが必要になります。
JetsonではUSBハブの電力給電が足りなかったりすると問題がおきることもあり、実際にはまったこともあったので、USBハブにはセルフパワーのものを用いています。
今回は、USBハブを介して、360度カメラのTHETA-X 、Arduinoで制御したガスセンサー2種を接続しています。今回利用したものはUSBハブだけでなくEthernetアダプタの機能もあるので、Go2Wの背中に搭載した小型のマルチ回線ルーター(MAX BR2 Micro)もそこに繋いでいます。 SIMを2枚搭載して、複数回線を束ねることで、実際に電波が輻輳しやすい展示会会場でも比較的安定した通信が実現できていました。
マルチ回線ルーターについて興味のある方は以下の記事を参照ください。
intdashとの連携
Docking Station内のJetsonはユーザで自由に開発可能です。弊社で購入したものにはUbuntu20.04およびFoxyとNoeticがインストールされています。
intdashと連携するためにintdash Edge Agent2を導入する必要があるため、Dockerを用いて環境を構築しています。Dockerを用いることで、OSのバージョンに限定があるようなドライバ等もコンテナを分けることで管理が容易になりますし、構成の管理や機能の追加もやりやすくなります。
以下には概念的なコンテナの構成図を示しています。

オレンジ色がコンテナを表しています。それらをDocker composeで束ねています。 intdash Edge Agent2や、intdash ROS2BridgeはAmazon ECRで公開しているので、簡単に環境を構成できます。
systemdのserviceファイルで、docker composeコマンドを実行するように設定して、自動でintdashへの接続が始まるようにしています。
ROSとの連携
ROS2トピックの送受信にはintdash ROS2Bridgeを用いています。 技術的な詳細は、以下の記事をご参照ください。
intdash ROS2Bridgeのコンテナを、network_mode: host として起動することで、ホスト環境で動いているROS2とも疎通が可能になります。
実際のdocker-compose.ymlと設定例を以下のgithubのリポジトリで公開していますので、参照して頂くことで利用のイメージが付きやすいかと思います。
ロボットの遠隔制御
遠隔制御については、基本的な考え方は以下の記事で紹介した内容のとおりとなっています。
Data Visualizerでは、Gamepadパーツがあり、ブラウザ上でPCに接続したゲームパッドの操作を読み取ることができます。ゲームパッド以外にも、マウスやキーボード操作にも対応しています。
操作の情報はROS2のJoyトピックデータ構造に合わせたMessagePack形式のデータに変換され、指定したエッジにダウンストリームすることができます。

Go2Wでは、intdash ROS2Bridgeを経由することで、ROS2ノードが、操作情報をJoyトピックとして受信できるようにしています。 ROS2ノードが、受信したJoyトピックからGo2W向けの制御トピックを生成してPublishすることで、Go2W本体側を制御します。
センシングデバイスの追加
今回は、360度カメラのTHETA Xと、ガスセンサーをArduinoを経由して搭載しています。
THETA X
THETA XではLinuxでビデオデバイスとして認識させるためのドライバの実装が公開されており、それを利用しました。 取得できた動画は4Kの高ビットレートストリームなので、再エンコードして画質を調整しています。 現在は、THETA Xから入力されたエクイレクタングラー形式のまま表示していますが、必要な変換を行うことで、普通の2D映像にすることも可能です。
ガスセンサー
最初は業務用のセンサーを搭載検討しましたが、サイズ的になかなか難しかったため、簡易的なガスセンサー(MQ-3、MQ-7)をユニバーサル基板に乗せ、ケースに入れて、Arduinoで制御するようにしました。 測定結果は、JSON文字列としてシリアル通信で定期的に送信するようにしています。

物理的な搭載方法
今回はたくさんのデバイスを搭載するため、どのようにGo2Wの小さい背中に乗せるかが課題の一つでした。 背中に大きな箱を載せると、LiDARの視界を大きく遮ることが問題になります。 そのため、適切なサイズにアクリル板をカットして、それらを金属スペーサでつないで、専用の台座を作りました。 専用の台座を作る際は、簡易的なCADで高さ合わせなども行い、サイズを最適化しました。
tech.aptpod.co.jp

構築時の注意点
Dockerとデバイスの接続
Dockerを用いる場合は、ホスト側での開発よりもアクセスできるリソースに制約があるため、デバイスとの接続には注意が必要です。 挿抜したときに、再検知可能かどうか、抜いた状態でもdocker composeがエラーにならないか、など異常系の確認も大切です。
Dockerと動画エンコーダ/デコーダ
動画エンコード処理にDockerを用いる場合、そのままではHWエンコーダにアクセスできません。そのためには利用するコンテナや起動時の設定に注意が必要です。詳しくは以下の記事が参考になります。
まとめ
本記事では、UnitreeGo2-W を例に、既存ロボットへ intdash を組み込み、外部システムと柔軟に連携するための実践的な構成とノウハウを紹介しました。 Jetson 上に Docker コンテナを用いた構成を取り、ROS・各種センサー・遠隔操作を疎結合にまとめることで、ハードウェアや OS の制約を受けにくい拡張性の高い構成を実現している点が、ポイントです。
このアプローチは UnitreeGo2-W に限らず、他の移動ロボットにも応用できます。 intdashと連携することで、データ可視化・遠隔操作・複数システム連携といった価値を加えることができます。
intdashを利用して、ロボットに新たなセンサーや用途を追加したい場合の一つの設計パターンとして、本記事の内容が参考になれば幸いです。