本文へ移動
Duskcoil. 検索
← プロジェクト一覧に戻る

記録上の状態 · 実機検証を継続中

屋内自律走行ロボット

LiDARとカメラで自己位置推定・障害物回避・自律移動を行う差動駆動ロボット。

概要

屋内環境において、LiDARとカメラによる自己位置推定・障害物回避・自律移動を 実現する差動駆動ロボットを設計・製作する。エッジ機とPCへ処理を分散し、 限られた無線帯域の中で実時間性を確保する。安全機構は制御ソフトウェアと 物理的なキルスイッチの二重構成とし、単一の失敗が事故に直結しない設計を貫く。

設計・検証の記録 ↓
アルミフレームの差動駆動ロボット。上段にLiDAR、下段に制御基板と配線。
所有者提供の実機写真

設計・検証の記録

設計判断

役割分担 →

分散処理アーキテクチャの仕組み

2026年8月19日

アーキテクチャ

SYSTEM
ロボットとPCの分散システム構成センサー入力はエッジ機へ、SLAMとナビゲーションはPCへ分散する。エッジ機はESP32を通してモーターを制御する。物理的な非常停止は独立して動作する。 センサー LiDAR + IMUCameraEncoders Raspberry Pi 5エッジ機 センサーデータの取得安全監督・障害物ガード操作指令の調停 PC(上位機)SLAM地図生成ナビゲーション データ Wi-Fi ESP32モーター制御・エンコーダ ドライバ・モーター車体の移動 物理 e-stop独立した非常停止

図1 — 安全監督層は自律・手動いずれのモードでも最優先で介入する。センサー入力はエッジ機で処理し、PCへは間引かれたデータのみを送る。

記録されている機能

6 項目

コントローラーでの手動操作と、車輪の回転数から自分の位置を推定することができるようになった。

LiDAR(レーザーで周囲との距離を測るセンサー)とカメラを使い、周囲の地図を自動で作れるようになった。

地図上の行きたい場所を指定するだけで、障害物を避けながら自動で移動できるようになった。

障害物に近づくと自動で減速・停止するため、壁や物に衝突しにくくなった(ただし完全に防げるわけではない)。

ブラウザから、バッテリー残量やセンサーの接続状況をリアルタイムで確認できるようになった。

制御用コンピュータが予期せず停止しても、手動操作と物理的な非常停止ボタンだけは独立して機能するようになった。

使用している技術

車体・ハードウェア

アルミフレーム(3階建)差動駆動用ギヤモーター×2Cytron MDD10A モータードライバ

センサー

Livox Mid-360 (LiDAR+IMU)Logitech C920 (USBカメラ)

制御コンピュータ

Raspberry Pi 5ESP32

ソフトウェア基盤

ROS2 JazzyUbuntu 24.04

自己位置推定

FAST-LIOrobot_localization (EKF)

地図生成・自律走行

slam_toolboxNav2RTAB-Map

独自実装

twist_mux裁定安全監督ノード障害物ガードWebダッシュボード

使用機材

8 点

実際にこのプロジェクトで使っている機材と、その役割・制約です。各項目は研究ログの記録に基づきます。価格や在庫は掲載していません。

Livox Mid-360S

このプロジェクトで使用

Livox

役割
主センサー。6軸IMU内蔵の3D LiDARで、周囲の3次元形状の取得と自己位置推定の両方を担う。
制約・注意点
Mid-360として手配したが、届いた実機はMid-360Sだった(通信のディスカバリ応答で判明)。型番に合わない設定ではドライバがエラーを出さずに停止する。

Logitech C920

このプロジェクトで使用

Logitech

役割
補助センサー(USBカメラ)。視覚特徴を使った地図生成のループクロージャや、障害物までの距離推定に使う。
制約・注意点
有効にするとCPU使用率が約75%まで上がり、自己位置推定(FAST-LIO)の更新頻度が10Hzから0.5Hzに低下した(実測)。

Raspberry Pi 5

このプロジェクトで使用

Raspberry Pi

役割
車載のメインコンピュータ。自己位置推定・安全監督・センサー取得などエッジ側の処理を行う。
制約・注意点
走行検証中に原因不明の再起動が2回起きた。以後、アンダーボルテージ(電圧不足)フラグの確認を自律走行検証前の条件にしている。

ESP32

このプロジェクトで使用

Espressif Systems

役割
エンコーダの読み取りとモーターのPWM制御を専任で行うマイコン。
制約・注意点
GPIO34〜39は入力専用で内部プルアップがなく、INPUT_PULLUPを指定しても無視される。エンコーダ線をGPIO18/19へ配線し直した。搭載ボードの型番は記録していない。

Cytron MDD10A

このプロジェクトで使用

Cytron Technologies

役割
2チャンネルのモータードライバ。上位からの速度指令をPWM信号に変換して左右のモーターを駆動する。
制約・注意点
左右のモーターが鏡写しに取り付けられているため、右側だけDIR論理をソフトウェアで反転している。

エンコーダ付きギヤモーター(12V・100RPM、ホイール径65mm)×2

このプロジェクトで使用
役割
2輪差動駆動の左右の駆動輪。旋回・安定性のためにキャスターを1つ加えている。
制約・注意点
公称分解能をそのまま使わず、10回転の手回しでパルス数を実測して設定している。メーカー・型番は記録していない。

電動工具用18Vバッテリーパック

このプロジェクトで使用
役割
車体の主電源。DC-DCコンバータで12V(モーター系統)と5V(Raspberry Pi 5系統)に降圧して使う。
選んだ理由
専用品を新たに用意せず汎用規格のものを使い、予備の入手と充電の運用を簡単にするため。
制約・注意点
ESP32のADCで電圧を監視するには分圧回路と実測校正が必須。分圧回路が未配線のまま走らせた際は、ノイズを電圧と誤読して非常停止が発動した。ブランドは記録していない。

アルミフレーム3段構造(約300×200×200mm)

このプロジェクトで使用
役割
車体。各段に桐板の棚板を渡し、駆動系・制御用コンピュータ・センサー類を段ごとに分けている。
選んだ理由
物理的に分離することで配線と放熱の見通しを良くするため。

実機

Livox Mid-360(LiDAR+IMU)。自己位置推定と障害物検知の主センサー。
Livox Mid-360(LiDAR+IMU)。自己位置推定と障害物検知の主センサー。
状態可視化ダッシュボード。障害物ガードの検知距離(0.97m)と、SLAMによる俯瞰図・走行軌跡をリアルタイム表示。
状態可視化ダッシュボード。障害物ガードの検知距離(0.97m)と、SLAMによる俯瞰図・走行軌跡をリアルタイム表示。

ロードマップ

01

Stage 0-1

基盤構築

車体・モータードライバ・エンコーダの疎通を確認し、手動走行と オドメトリ推定までを実現。以降の全工程が乗る土台を固めた。

02

Stage 2-3.5

センサー統合とSLAM

LiDARとカメラを統合し、2D SLAMによる地図生成、続いて 3D LiDAR-Inertial Odometryによる高精度な自己位置推定を実現した。

03

Stage 4

自律走行の実現

Nav2によるゴール到達を実装し、指定地点への自律移動を確認。 手動操作から自律動作への切り替えを安全に行えるようにした。

04

Stage 4.5

分散処理基盤への移行

センサー取得と安全監督をエッジ機に残し、地図生成とナビゲーションを PC側で行う構成へ移行。無線帯域の制約下で実時間性を確保した。

05

Stage 4.7-継続

安全機構の強化と実機検証

障害物ガード・状態可視化ダッシュボード・物理e-stopを整備し、 実機での走行検証と改善を反復している。

研究ログ

7 記事
2026年7月16日

ハードウェア構成の仕組み

アルミフレームの車体、差動駆動の駆動系、電動工具用バッテリーを使った電源系統、LiDAR/カメラのセンサー構成を記す。

2026年7月25日

ESP32ファームウェアと通信プロトコルの仕組み

上位コンピュータとモーター制御用マイコンをつなぐシリアルプロトコルと、通信途絶時の自律的なフェイルセーフを記す。

2026年8月19日

分散処理アーキテクチャの仕組み

重い処理をPCへ、駆動と安全監督をエッジ機に残す分散構成と、無線帯域の制約下でセンサーデータを運ぶための間引き設計を記す。

2026年7月31日

自己位置推定とセンサーフュージョンの仕組み

LiDARの有無でFAST-LIOとEKFを切り替える自己位置推定の設計と、実走行で実測したドリフト精度を記す。

2026年8月6日

地図生成と自律ナビゲーションの仕組み

3D LiDARによるオドメトリを土台に2D地図を生成し、Nav2でゴール地点まで自律移動する仕組みと、実装過程で発見した重大バグを記す。

2026年8月13日

安全な速度制御の仕組み

自律計画と手動操作の指令を安全に調停するtwist_muxパイプラインと、前進成分だけを制限する障害物ガードの非対称速度クランプを記す。

2026年8月25日

状態可視化ダッシュボードの実装

追加のROSパッケージに依存せず、標準ライブラリだけでエッジ機上に構築した読み取り専用の状態表示Webダッシュボードの設計を記す。