えいあーるれいの技術日記

ROS2やM5 Stack、Ubuntuについて書いています

空間ログビューワーからはじめる ロボット開発環境の𝓥𝓲𝓫𝓮 𝓒𝓸𝓭𝓲𝓷𝓰(の模索)

ROS Japan UG #58 九州ROSJP の内容です。 今回はVibe Codingについてお話しました。ちょっとロボットとは離れている気がしますが、「ROS / ROS 2さえ使っていれば話す内容は何でもOKのゆるい会」ということなので、ヨシッ🙃


最近のAIツール(Cursor・GitHub Copilot Agent・Claude Codeなど)は曖昧な指示からコーディングを行うだけでなく、作成方針を立てたりエラー内容から修正を自動で行うようになりましたね。昨年・一昨年と比較してもインタフェース・AI自体の性能が飛躍的に向上しているように見えます。自然言語による指示をベースとしてコードを直接書かずに開発を進める手法を「Vibe Cording」というようです。

この進歩で「アプリケーションの書き捨て」がより容易になった気がします。


今までだと、よく使うようなアプリはある程度使い回せるテンプレみたいな感じにしていたのですが、1発で大体いい感じに動いちゃうので最近はそんなこともしなくなりました。

確実に動くようにメンテナンスされた事前プロンプトやMCPサーバなどがあるとなお良い開発体験ができることでしょう。


今回は、ログビューワーを浮かすソリューションをVibe Codingしました。

浮かせるために使用したものは Apple Vision Proというヘッドマウントディスプレイ(HMD)です。

かなり高価なHMDですが、パススルー(HMDに搭載されたカメラで捉えた周囲の映像をディスプレイに表示する機能)がとても綺麗で歪みも無いので、現実世界のハードウェア上で操作をする上で適していると思います。

ar-ray.hatenablog.com


↓今回作成したソフトが入っているリポジトリはこちら

github.com


背景

背景1 : ロボットアームなどロボットを操作していると画面の置き場に困ってしまう

ロボットを自ら操作するタスクにおいては、大体両手が塞がりがちです。常に手があと1本あればいいのに‥

しかしながらディスプレイを置くだけのスペースを用意できるほどのフィールドを用意できないのもあるあるなのかなと思います。(ただの感想です🙃

あるとき、ロボットの様子を確認するためにWebRTCでカメラ映像のros topicを変換したものを作成してVisionProに送っていたのですが、これが結構使いやすくてよかったです。

自然に視線を移せる場所に画面があるのは結構便利です。専用のアプリケーションを構築しなくて良いのもいいです。


背景2 : TUIのログビューワー実装を見て、これを浮かせたいと考えた

ROSは、コンソールと /rosout というトピックにログを出します。launchなどで複数ノードを立ち上げると、いろいろなノードが混ざって確認が大変になるので、rqtに入っているビューワーを使ってフィルタリングすることはできます。しかし、ちょっと欲しい情報を得るにはスペースが狭いというか、黒い画面で見たいというか‥といろいろなお気持ちが出てきます。

rqt

あるとき、ROSを触っているメンバーがログビューワーのTUI実装をしてくださり、これがかなり使いやすかったです。

リポジトリ(TUI)はこちら

github.com

これを空間に浮かせられないかなと思い、実装することにしました。


実現方法

システムの概要を以下の画像に示します。端的に言えば、 /rosout を読みやすくするシステムです。

データの流れ

HTTPサーバーを作成してGETメソッドでデータを受け取れるようにした上で、データを要求して表示するものはAIに丸投げしてもらいます。

配信ノードの中身

このツールは、ブラウザで動くので同じネットワークにいるスマートフォンQRコードをスキャンして開けば簡単にノードごとのログを確認することができます。

launchの中にサーバーを追加してログだけスマートフォンで見る‥というのも面白いかもしれないですね📱


最近、Claude Codeを使い始めたのですが、とても便利ですね。軽いプログラムであれば一発で動くものを出してくれるし、 C++は勝手にビルドしてくれるので本当に丸投げ状態です。

CLAUDE.mdという事前プロンプトをプロジェクトのルートに置くとそのルールに従ってくれるので、そのスクリプトもpushしてあります。(もしかしたら、他のツールがすぐにClaude Codeを追い抜いてしまうかもしれませんが)

VSCode内のClaude☀


さいごに

会場にVisionProを持ち運んでライブデモをするなどの無茶なことをして、ご迷惑をおかけしました‥🥽🙇