
Arduino
イベント

マガジン
該当するコンテンツが見つかりませんでした
技術ブログ
従業員の家族を職場に招く「ファミリーデー」で、子どもたちに通信の仕組みを体験してもらうため、光ファイバーを使った音声通話装置を一から作りました。 この記事では、回路の試作やプリント基板・ケースの製作、人数分の量産、そして当日の実験教室の様子までをご紹介します。 はじめに AIロボット部とは 光ファイバーで「通信」を体験してもらう 通信装置を作る アナログ回路と格闘する プリント基板を作る ケースも3Dプリンターで作る そして量産へ…… 当日の様子 おわりに はじめに こんにちは、AIロボット部(社内サークル)部員の浅野秀平です。 普段はデジタル改革推進部で、社内のデータ分析の仕事をしています。 今回は、従業員の家族を職場に招き、普段働いている場所や仕事に触れてもらう「ファミリーデー」の企画の1つとして、子どもたちに「通信」を身近に感じてもらう体験教室を実施しました。 この記事では、その体験教室で使う実験装置を試作した過程から、当日の様子までをご紹介します。 AIロボット部とは AIロボット部は、ものづくりに興味のある社員が集まる社内サークルです。 普段はSlack上でゆるく情報交換をしたり、ハッカソンなどのイベントに参加したりしています。 これまでの活動については、以下の記事もご覧ください。 AIロボット部の活動記事一覧 光ファイバーで「通信」を体験してもらう 今年のファミリーデーでは、NTTドコモビジネスの事業とも深く関わる「通信」をテーマに、光ファイバーを使った音声通話の実験教室「ひかりでんわ」を企画しました。 コンセプトは、以下のようなものです。 私たちは普段、家族や友人と離れた場所にいても、電話やインターネットを通して当たり前のように会話をしたり、動画を見たりしています。 その「つながる」を支えているのが、通信の技術です。 この教室では、子どもたち自身の手で通信装置を組み立て、自分の声が「光」に変わり、光ファイバーを通って相手に届く仕組みを体験します。 「見て・作って・話して」楽しみながら、普段は意識することのない通信の仕組みや、私たちの暮らしを支える技術への興味を持ってもらうことを目指しました。 子どもたち自身に通信装置を組み立ててもらい、音が光になって伝わる様子を観察することで、ものづくりの楽しさと通信技術の面白さを体験してもらうのが狙いです。 通信装置を作る こちらが、今回製作した通信装置です。 仕組みは比較的シンプルです。 マイクから入った音声の電気信号を増幅し、LEDを光らせる LEDの光を、光ファイバーを通して反対側の光センサーへ届ける 光センサーで受け取った信号を再び増幅し、スピーカーから音として鳴らす つまり、声を一度「光」に変換し、光ファイバーの中を通してから、もう一度「声」に戻しています。 アナログ回路と格闘する 普段からArduinoなどのマイコンを使った電子工作には慣れていましたが、アナログ回路の経験はそれほどありませんでした。 そのため今回は、ChatGPTに回路について教えてもらいながら設計を進めました。 抵抗やコンデンサーの値を変えては試し、うまくいかなければまた回路を修正する、という作業の繰り返しです。 途中では、マイコンを使って音声をデジタル処理する方法も検討しました。 数日間の試行錯誤の末、光ファイバーの先につないだスピーカーから初めて自分の声が聞こえてきた瞬間は、かなり感動しました。 ちなみに当初は、テレビのリモコンのような赤外線LEDを使い、空間を飛ばして音声を送る方法も試していました。 しかし、どう調整しても1〜2m先へ安定して音声を届けることができず、最終的には断念しました。 もし同じような構成でうまくいった方がいたら、ぜひ教えてください。 プリント基板を作る 試作回路が動いたところで、次は回路を回路図に起こし、プリント基板を設計しました。 回路や基板データの詳細は、GitHubでも公開しています。 https://github.com/mikaka-robotics/hikari_denwa ケースも3Dプリンターで作る 基板を収めるケースはBlenderでモデリングし、3Dプリンターで製作しました。 今回特に工夫したのが、送信と受信を切り替える仕組みです。 本体中央には、送信用のLEDと受信用の光センサーが並んでいます。 中央にある水色のパーツをスライドさせると、光ファイバーの接続先が物理的に切り替わります。 同時に基板上の回路も送信/受信で切り替わるため、1つの操作で通信方向を変更できます。 なお、今回使用した光ファイバーは、本格的な通信用のものではありません。 安価で扱いやすい、照明・装飾用として販売されているプラスチック製の光ファイバーを使用しています。 そして量産へ…… 試作品が完成し、いよいよ参加する子どもたちの人数分を量産していきます。 ……が、ここで想像以上に大変なことに気づきました。 今回の基板は部品点数が多く、すべて手作業ではんだ付けすると、1枚を組み立てるだけで約30分かかります。 さらにケースにも3か所のネジ穴があり、3Dプリントしたケース一つひとつに、タップを使ってネジ山を切る必要があります。 今回の参加者は約50人。そして「電話」なので1人につき2台必要となり、用意する通信装置は合計100台です。 つまり、 基板も100枚。 ここからは、AIロボット部の部員総出による地獄の量産作業が始まりました。 ひたすら部品をはんだ付けし、ケースにタップを立て、組み立てる日々です。 途中からは、部品の取り付けやケース加工などを分担し、ちょっとした製造ラインのような状態になっていました。 それでも当日までになんとか必要な台数を完成させ、無事にファミリーデーを迎えることができました。 当日の様子 当日は、子どもたちに説明書を見ながら部品を組み立ててもらいました。 完成した装置を光ファイバーでつなぎ、最後は実際に会話してもらいます。 説明書を読みながら、 「これはどこにつけるんだろう?」 と、謎解きのように1つずつ部品を取り付けていきます。 そして、いよいよ完成した装置で通信実験です。 最初は「本当にこれで声が聞こえるの?」という様子だった子どもたちも、光ファイバーの先から相手の声が聞こえてくると、「聞こえた!」と驚いた表情を見せてくれました。 兄弟同士で話したり、親子で装置を挟んで会話したりと、それぞれ楽しみながら試してくれていました。 普段何気なく使っている「通信」は、音を別の信号へ変換し、離れた場所まで届け、再び音へ戻すことで成り立っています。 その仕組みを、自分で組み立てた装置を通して、少しでも実感してもらえたのではないかと思います。 おわりに 今回、一から実験装置を設計し、基板やケースを作り、人数分を量産して実験教室を開催するところまで、AIロボット部らしいものづくりができたと思います。 特に、実際に装置を使った子どもたちから「聞こえた!」という反応をもらえたのは、作った側としてもうれしい瞬間でした。 一方で、大量の基板を手ではんだ付けするのは想像以上に大変でした。 来年以降は準備をもう少し楽にするため、基板製造だけでなく、部品実装まで依頼できるサービスの利用も検討したいと思います。 今後もAIロボット部では、遊び心と技術を組み合わせたチャレンジを続けていきます。 次回の活動報告もお楽しみに!
はじめに 株式会社 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を利用して、ロボットに新たなセンサーや用途を追加したい場合の一つの設計パターンとして、本記事の内容が参考になれば幸いです。
動画
該当するコンテンツが見つかりませんでした







