Upgrade to Pro — share decks privately, control downloads, hide ads and more …

完全自律ロボットを作りたくて、先に開発を自律させた話(ROS Japan UG #63 LT)

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.
Avatar for rryz_09 rryz_09
July 10, 2026

完全自律ロボットを作りたくて、先に開発を自律させた話(ROS Japan UG #63 LT)

22cm四方の自律移動ロボット「オレンジプチ」の体内PCにClaude Codeを常駐させ、PR作成→CI→実機テスト直前までを自動で回す開発ワークフローの話。完全自律ロボット構想(anima・日記を書くロボット)も少しだけ。ROS Japan UG #63 ROS LT大会(2026-07-11)発表資料

タグ: ROS2, robotics, ClaudeCode, LLM, 自律ロボット

Avatar for rryz_09

rryz_09

July 10, 2026

Other Decks in Technology

Transcript

  1. 自己紹介 今日話すこと: 「自律ロボットを作りたい」の開発プロセス側の工夫 ありさん(GitHub org: PetitOnes) 個人でも業務でも、 自律ロボットや海のロボットを開発しています 興味: HRI(Human-Robot

    Interaction) 夢: ロボットが生活空間に溶け込み   人と成長し   誰かの支えになる社会 X( 私): @ari_ac1d X( ロボット): @cube_petit_2022 GitHub: cube_petit_portal 2
  2. 研究開発向けインタラクションロボットキット「キューブプチ」 基本機能(ROS 2 Jazzy) SLAM / Navigation TTS / STT(

    音声対話) GPT 連携のリアルタイム会話 表情ディスプレイ Web アプリ 3
  3. 【動機】完全自律のロボットを作りたい SLAM / Navigation でできるのは「指示した場所に行く・巡回する」まで ここで言う完全自律: 指示されていない時間にも、自分の理由で動くこと 例: 暇になったら、好きな場所に行ってのんびりする そのために、LLM

    で 自我・欲求・記憶 を持たせた Claude Code × MCP Tools を定期実行 — 別機体で4 ヶ月検証中( この話はまた別の 機会で) 「言われた仕事をこなすロボット」から「指示されていない時間も、その子らしく過ごすロボット」へ 4
  4. でも、ぜんぶLLM に任せると「遅い・高い」 すべての判断をLLM に通すと、応答の遅さとトークン代が積み上がる → 2 層構造にする 反射の層( イベント駆動) 内発的な感情・行動Node「anima」

    センサー → 内部状態( 好奇心・退屈…) → 行動 実装済み( オレンジプチで稼働) 反射は速く・安く。考えごとはゆっくり・賢く。生き物の「反射と思考」と同じ分担です 5
  5. 【課題】AI は「実機テスト」ができない AI のおかげで、コードを書くのは速くなった でも、実機で動かさないと分からないことが残る CI が全緑でも、実機で動かすと壊れることがある 実機PC でしか起きない事故もある( 例:

    顔用Chrome を閉じる修正で、自分のChrome まで巻き込んで落ちた) そして「動かして確かめる」はAI に任せられない プチ(22cm) なら: 部屋で走らせて、ビデオを撮って、PR に貼ればいい 大きいロボットなら? ぶつけたら破損・事故 — 気軽には試せない だから、人間がやるしかない実機テストを「いかに速く・軽く回すか」が開発速度の鍵 6
  6. 【解決】実機テストの直前まで、ぜんぶAI にやらせる 計画役( 上位モデル) 設計・方針立案 タスクの委譲 レビュー Sonnet( 実行役) 実装

    PR 作成 CI 対応の反復 人間( 私) 方針決定 実機確認 マージ いまはロボットの体内PC にClaude Code が常駐しているが、複数台稼働なら別サーバーPC で もいい 7
  7. ワークフロー: PR ができるまで自動で回る 人間が方針決定 ↓ 計画役が設計してSonnet に委譲 ↓ Sonnet が実装してPR

    作成 ↓ CI が赤 ── 反復修正──┐ │ │ └──── 緑になるまで ┘ ↓ GitHub Project を「Reviewing 」へ移動 + Slack 通知(1 通・リンク入り) ↓ 人間がコードレビュー・実機確認・マージ CI が緑になるまで、人間は立ち会わない。レビューは通知が来てから(Slack / GitHub 通知 / Project ボード、好きな入口で) 必要なら、CI にAI レビュー(GitHub Copilot 等) を挟んで人間のレビューをさらに軽くする手もある 8
  8. ここが肝: petit-test(1 コマンドで実機テスト環境が立つ) colcon test で確かめられることは、全部CI で潰しておく 実機でしか確かめられないことだけを、環境が立った状態で人間に渡す $ petit-test

    cube_petit_scenario 4 [petit-test] PR #4 を取得してビルド中... [petit-test] 稼働中ワークスペースには一切手を入れません [petit-test] tmux セッション petit-test を起動しました 稼働中のロボット( ~/ros ) は触らず、別ワークスペースにオーバーレイでビルド PR テンプレの「実機確認手順」をコピペすれば、すぐ確認が始まる 今後: Docker 化で「実機でしか分からないこと」をさらに縮めたい( 完全再現は狙わない) 10
  9. 数字で見る、この2 日間 307+ テストケース 3 リポジトリ 6 直近2 日で実機確認待ちまで運んだPR テストはROS

    なしでインポートできる形に切り出し、pytest / colcon test / CI の3 通りで 同じものが走る 2026-07-09 時点の1 日集計: マージ16 本 / 新規PR13 本+ / 新規リポジトリ4 / 新規Issue6 CAN 通信の自動復旧: pkill slcand → 数秒でsystemd が再起動 → 実機受け入れテスト 合格 12
  10. Appendix: anima のトピック設計 トピック 型 internal_state InternalState (curiosity / boredom

    / energy / silence_bias / sleep_mode 等) internal_state_delta InternalStateDelta ( 各状態への加算量 + weight + source) source には mic_vad や face_detector のようなセンサー由来の名前が入り、 どの入力がどれだけ状態に効いたかを後から追える設計にしています。 17
  11. Appendix: テストの型(ROS なしで書く) 1. Node 内の計算を <name>_logic.py に関数として抽出(rclpy や *_msgs

    をimport しない) 2. Node は「メッセージ⇔ 素の値」の変換と配線だけを担当 3. 同じテストが 手元pytest / colcon test / GitHub Actions の3 通りで動く # 例: 純ロジックだけを抽出したモジュールのテスト def test_hysteresis_switch_to_sleep(): state = {"energy": 12.0, "sleep_mode": False} assert behavior_logic.should_sleep(state) is True 18
  12. Appendix: 実機でしか出なかった事故の例 顔用Chrome を閉じる修正の検証中、自分が普段使っている通常のChrome を巻き込んで 落とした 原因: Chrome のsingle-instance 動作で、専用プロファイルなしだと

    既存ブラウザに操作が転送されてしまう構造だった 対策: 顔Chrome 専用の --user-data-dir で独立インスタンス化 教訓: 「このPC では全Chrome 停止( pkill -f chrome ) は検証でも本番でも通さない」 こうした事故は、CI だけを見ていては絶対に見つからない類のものでした。 19