TECH PLAY

Arduino

イベント

該当するコンテンツが見つかりませんでした

マガジン

該当するコンテンツが見つかりませんでした

技術ブログ

はじめに 株式会社 WinTicket バックエンドエンジニアの鈴木です。 本記事では、競輪場での風 ...
既存ロボットに intdash を組み込む方法:UnitreeGo2-Wを例に aptpod Advent Calendar 2025 12月17日の記事です。 こんにちは、Roboticsグループのエンジニアの影山です。 今回は、最近外部向けのデモ等で活躍しているUnitreeGo2-W(以下 Go2W)をどのように、弊社サービスと連携させるために環境構築、機能を拡張しているか紹介したいと思います。 この記事を読んで頂くことで、Go2Wに限らず、既存のロボットにどのようにintdashを組み込むことができるのか、参考にして頂ければと思います。 構成 UnitreeGo2-WのHW構成 intdashとの連携 ROSとの連携 ロボットの遠隔制御 センシングデバイスの追加 THETA X ガスセンサー 物理的な搭載方法 構築時の注意点 Dockerとデバイスの接続 Dockerと動画エンコーダ/デコーダ まとめ 構成 実装の一例として、2025年7月に行われたメンテナンス・レジリエンス TOKYO 2025で展示したGo2Wのデモ構成を紹介していきたいと思います。 この展示会ではintdashとGo2Wを中心にいろいろな連携の可能性をデモさせて頂きました。 概要は以下のレポート記事を参照ください。 tech.aptpod.co.jp このデモでは、以下のようなGo2W上の要素をintdashと連携しました。 Go2Wの遠隔操作 頭部カメラ映像 LiDAR 360度カメラ ガスセンサー Go2Wの各種状態 連携の結果、DataVisualizerでGo2Wから取得したデータを以下のような形で可視化できました。 DataVisualizerでGo2Wから取得したデータを可視化した様子 以降、どのようにしてこのような連携を行ったのか、詳細を説明していきたいと思います。 UnitreeGo2-WのHW構成 センサーを搭載した状態のUnitreeGo2-W外観 Go2Wは、通常の歩行の制御などは本体側で行っており、ユーザ側で改変などはできない仕組みになっています。 Go2W本体のより詳細な情報は TechShare様の記事 を参考にたどっていただくのがよいと思います。 ユーザ側のアプリケーションを実行するために、オプションのDocking Stationを搭載して、その中で開発を行います。 Go2W環境のHW構成 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枚搭載して、複数回線を束ねることで、実際に電波が輻輳しやすい展示会会場でも比較的安定した通信が実現できていました。 マルチ回線ルーターについて興味のある方は以下の記事を参照ください。 tech.aptpod.co.jp intdashとの連携 Docking Station内のJetsonはユーザで自由に開発可能です。弊社で購入したものにはUbuntu20.04およびFoxyとNoeticがインストールされています。 intdashと連携するためにintdash Edge Agent2を導入する必要があるため、Dockerを用いて環境を構築しています。Dockerを用いることで、OSのバージョンに限定があるようなドライバ等もコンテナを分けることで管理が容易になりますし、構成の管理や機能の追加もやりやすくなります。 以下には概念的なコンテナの構成図を示しています。 Dockerコンテナと周辺機器の構成 オレンジ色がコンテナを表しています。それらをDocker composeで束ねています。 intdash Edge Agent2 や、 intdash ROS2Bridge はAmazon ECRで公開しているので、簡単に環境を構成できます。 systemdのserviceファイルで、docker composeコマンドを実行するように設定して、自動でintdashへの接続が始まるようにしています。 ROSとの連携 ROS2トピックの送受信にはintdash ROS2Bridgeを用いています。 技術的な詳細は、以下の記事をご参照ください。 tech.aptpod.co.jp intdash ROS2Bridgeのコンテナを、 network_mode: host として起動することで、ホスト環境で動いているROS2とも疎通が可能になります。 実際のdocker-compose.ymlと設定例を以下のgithubのリポジトリで公開していますので、参照して頂くことで利用のイメージが付きやすいかと思います。 github.com ロボットの遠隔制御 遠隔制御については、基本的な考え方は以下の記事で紹介した内容のとおりとなっています。 tech.aptpod.co.jp Data Visualizerでは、Gamepadパーツがあり、ブラウザ上でPCに接続したゲームパッドの操作を読み取ることができます。ゲームパッド以外にも、マウスやキーボード操作にも対応しています。 操作の情報はROS2のJoyトピックデータ構造に合わせたMessagePack形式のデータに変換され、指定したエッジにダウンストリームすることができます。 Gamepadパーツ 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 CADでサイズ合わせ 構築時の注意点 Dockerとデバイスの接続 Dockerを用いる場合は、ホスト側での開発よりもアクセスできるリソースに制約があるため、デバイスとの接続には注意が必要です。 挿抜したときに、再検知可能かどうか、抜いた状態でもdocker composeがエラーにならないか、など異常系の確認も大切です。 Dockerと動画エンコーダ/デコーダ 動画エンコード処理にDockerを用いる場合、そのままではHWエンコーダにアクセスできません。そのためには利用するコンテナや起動時の設定に注意が必要です。詳しくは以下の記事が参考になります。 tech.aptpod.co.jp まとめ 本記事では、UnitreeGo2-W を例に、既存ロボットへ intdash を組み込み、外部システムと柔軟に連携するための実践的な構成とノウハウを紹介しました。 Jetson 上に Docker コンテナを用いた構成を取り、ROS・各種センサー・遠隔操作を疎結合にまとめることで、ハードウェアや OS の制約を受けにくい拡張性の高い構成を実現している点が、ポイントです。 このアプローチは UnitreeGo2-W に限らず、他の移動ロボットにも応用できます。 intdashと連携することで、データ可視化・遠隔操作・複数システム連携といった価値を加えることができます。 intdashを利用して、ロボットに新たなセンサーや用途を追加したい場合の一つの設計パターンとして、本記事の内容が参考になれば幸いです。
この記事は、 NTT docomo Business Advent Calendar 2025 の16日目の記事です。 社内サークルのメンバーでハッカソンに参加した結果、気が付いたら競馬の冠レースを開催していたという活動報告です。 はじめに AIロボット部の紹介 参加したハッカソンの概要 アイデアの背景とコンセプト 「でっかい」縛り 100均アイテム縛り 「スマホのみ」縛り 「お腹」に関連した機能 制約と創造性 結果はオーディエンス賞!そして風変わりな賞品を頂く 船橋競馬場にて「みかかロボット杯」開催! おわりに はじめに こんにちは、AIロボット部のサークルメンバーの宮岸( @daiking1756 )です。 普段は5G&IoTサービス部で映像系サービスの企画やプリセールス的なお仕事をしています。 この記事では、AIロボット部のメンバー2名で参加した風変わりなハッカソンの模様と、風変わりな賞品をご紹介します。 AIロボット部の紹介 AIロボット部はものづくり系の社内サークルです。 普段はSlackで情報交換しながらメンバーが個人で作りたいものを作っています。 昨年のアドベントカレンダーの記事でもAIロボット部の活動を書いています! engineers.ntt.com 参加したハッカソンの概要 2025年3月、私たちは「創発遊戯 2025」という社会人向けのハッカソンに参加しました。 同ハッカソンが2024年に開催されたときの様子を、私がSNS上で見ていて、ユニークなハッカソンだなーと思っていました。 そんな時に、2025年開催の情報を聞いてAIロボット部のメンバーに声を掛けたのが、参加のきっかけでした。 このハッカソンはチーム毎に異なる「縛り」が適用されるという特徴があります。 縛りは「テーマ」「技術・素材」「その他 環境・条件」のカテゴリに分かれており、各カテゴリに約10個の縛りが用意されています。 各チームで選べるのはカテゴリと縛りの個数(最大4つ)までで、どの縛りが選ばれるかはランダムです。 今回我々は各カテゴリから1つずつ縛りを選びました。 選ばれた縛りは下記です。 縛りカテゴリ 縛り内容 テーマ 「でっかい」 技術・素材 100円均一ショップで買った素材を3つ以上取り入れる その他 環境・条件 「スマホのみで」どこまでできるか、チャレンジする 他の参加チームでは「本業に関するなにか」や「シラフ禁止」などを引いており、どのチームも頭を悩ませながらも楽しそうに開発していた印象です。 うちのチームは「スマホのみ」縛りがかなり重いですが、やれるところまで挑んでみることにしました。 その他ハッカソンの詳細は下記に記載されています。 https://mashupawards.connpass.com/event/344340 mashupawards.connpass.com アイデアの背景とコンセプト 簡単にどんな作品を作ったのか紹介します。 我々は SMART HARAMAKI という腹巻き型のウェアラブルデバイスを開発しました。 「でっかい」縛り 「でっかい」という縛りに対し、普段小さいものを大きくするという逆転の発想から、スマートウォッチの巨大版を作ることにしました。アイデアが生まれました。 大きさ的に手首ではなくお腹に巻くようなものになりそうだったので、腹巻き型デバイスにしました。 100均アイテム縛り 100均アイテムの縛りに対しては、振動モーターは100均の電装ハンディプッシャーから分解して調達したり、スマホに拡大鏡を取り付けることで画面を巨大化させて「でっかい」に結びつけるなどの試みを行いました。 ハッカソン期間中、近所の100均をハシゴした回数は片手で収まりません。(たまたま3種の100均が徒歩圏内にあった) 「スマホのみ」縛り 一番大変だったのが「スマホのみ」縛りです。 序盤はWebアプリ側のベース実装はスマホからVibe Codingするなどで、スマホでの開発の新鮮さを楽しんでいました。 しかし、マイコン(ESP32)にプログラムを書き込む工程で苦戦してしまいます。 1 次第にスマホの画面サイズでの開発や、マイコンとの接続不調に心が折れてしまい、PCでの開発に泣く泣く切り替えました。 スマホの画面内での開発はさすがにキツくなってきた😇 #創発遊戯 pic.twitter.com/pl58tmG2wX — みやぎdaiking⊿🌗 (@daiking1756) 2025年3月14日 x.com 「お腹」に関連した機能 腹巻き型デバイスを作っていく中で、「お腹」に関連した機能として下記の機能を実装しました。 満腹時計: お腹の膨らみを圧力センサーで検出して食事中の満腹度を可視化する。 食べ物レーダー: 4カ所に設置したモーターの振動によって近くの飲食店の位置を伝える。「お腹が震える方向に歩けばご飯に辿り着く」体験を 実現。 私はウェブアプリ側の開発を担当したのですが、デバイス側を担当したメンバーからは「腹巻きに基盤を縫い付けるのが大変だった」という予想外の視点からのコメントがありました。 また、今回のハッカソンはリモート開催だったのですが、デバイスが中心となるプロダクトであっため、期間中に1度だけ出社してオフラインで作戦会議をしました。 モーターをLEDに変えたデバッグ用の回路を相方から受け取ったことで、その後の開発をスムーズに進めることができました。 デバイスの制作過程や作品の詳細は下記のページに記載しています。 protopedia.net 制約と創造性 「スマホだけで作れ」という縛りを引いた瞬間、正直『詰んだかも』と思いました。 でも、 創造的制約の力 の動画でも語られているように、制約って不思議で、逆にアイデアがどんどん湧いてきたんです。 知識としては知っていたものの、制約が新たな創造のきっかけになることを今回のハッカソン中に肌で感じました。 この記事を読んだ方が創発遊戯に参加することがあれば、縛りはMAXの個数を選ぶことをオススメします! 少し話はズレますが、生成AIに入力するプロンプトも出力結果への制約を課しているとみることができます。 制約が少ない・抽象的だと、欲しい出力が得られないということは、AIに置き換えてみると私たちは実体験としてよく知っているかと思います。 結果はオーディエンス賞!そして風変わりな賞品を頂く 参加者による相互投票の結果、SMART HARAMAKIはオーディエンス賞を受賞しました🙌 そしてオーディエンス賞の賞品として贈られたのが、なんと 地方競馬の賞レース冠権 でした。 (下記の通り賞品は三択から選べたのですが、一番楽しそうなやつにしました) オーディエンス賞の賞品!! A~Cのどれかを選べる! #創発遊戯 pic.twitter.com/EB1aIBAznl — ひげだるま (@masaya3) 2025年3月13日 x.com 船橋競馬場にて「みかかロボット杯」開催! 全国に15か所ある地方競馬場の中から、運営さんとも相談し、メンバーの家からも近い船橋競馬場で開催して頂くことにしました。 そして、2025年11月7日、ついに船橋競馬場にて、我々の冠レースが開催されました。 レース名は「みかかロボット杯」です! ハッカソン参加時のチーム名「みかかロボット部」が由来です。 レース当日の様子は下記でも投稿していますが、来賓室から見るレースは一味違う体験でした。 (と言っても、メンバー2人とも競馬場に行くのはほぼ初めてでしたが) 個室の来賓室から見るレースは最高でした🙌 予想も的中させることができ、みかかロボット部初のサークル遠足は大成功でした🏇 今回作成頂いた横断幕は今後サークル内で大切に使わせて頂きます。 pic.twitter.com/nmht7UXWtw — みやぎdaiking⊿🌗 (@daiking1756) 2025年11月7日 x.com おわりに 簡単ですが、創発遊戯への参加報告および船橋競馬場での冠レース「みかかロボット杯」の開催報告でした。 社内サークルでの活動でまさか競馬場に行くとは思っていませんでした。 次のサークル遠足はどこに行くのか、楽しみです。 また、ハッカソンは毎回何か新しい発見や学びがあるので、今後も継続的に参加していきます。 今回参加した2名ともハッカソン期間中に確定申告に追われながらの開発となってしまったことが反省点でした。 3月中旬のハッカソンに参加する際は、事前に確定申告を終わらせておくことをオススメします。 今後も、AIロボット部では遊び心と技術力を融合させたチャレンジを続けていきます。 次回の活動報告も乞うご期待ください! それでは明日の記事もお楽しみに〜👋 ArduinoやESP32系マイコンにSketchを書き込める ArduinoDroid というAndroid向けアプリがあるようですが、私の手元の端末では動作しませんでした。 ↩

動画

該当するコンテンツが見つかりませんでした

書籍