กลับไปหน้ารวมไฟล์
robot-for-supercool-indoor-navigation-cc949b-en.md

Our Story:

The project is about making the robot move in a pre-defined path with precision, without making use of GPS or WiFi or Bluetooth for positioning, not even map or building layout plan. And draw its actual path (to the scale), in real-time. The bluetooth can be used as a substitute of wire, for transmitting real-time location information.

The Background Story:

We were looking for a robust solution for indoor navigation of our Arduino based robot. While choosing the right motion sensing solution for this application, we also considered Oblu (an opensource IMU). Its low cost and opensource nature made it a probable candidate. The tricky part here was that oblu's opensource program is suitable for foot-mounted indoor Pedestrian Dead Reckoning (PDR ) or Pedestrian Navigation, in simple words. Oblu's PDR performance in indoor as a foot-mounted IMU is quite impressive. A big plus point was free Android app (Xoblu) for its real-time position tracking. However, we were not sure how to make use of its existing pedestrian navigation algorithm which is based on human walking model.

Key phase of a stride when sole touches ground and is at complete standstill.

Oblu's internal computations are based on human walking. Oblu gives out displacement between two successive steps and change in heading. When the foot comes in touch with the ground, the speed of the sole is zero, i.e. the sole is at standstill. <Refer above video.> This way Oblu detects 'steps' and corrects some internal errors. And this frequent correction of errors, results in great tracking performance. So here lies the catch. What if our robot also walks in the same fashion - move, stop, move, stop..

We opted for Oblu and in no time we could assemble our robot and the tracking system. Rest of the story is in the following video...

The robot moves in the pre-programmed path and tracked simultaneously

How does it work:

The robot moves in a pre-programmed path and transmits (over bluetooth) its actual movement information to a phone for real-time tracking.

Arduino is pre-programmed with path and oblu is used for sensing robot's motion. oblu transmits movement information to Arduino at regular interval. Based on that, Arduino controls wheels' movements to let robot follow the predefined path.

Functional block diagram of the assembly

The robot's path is programmed as a set of straight line segments. Each line segment is defined by its length and orientation with respect to the previous one. The robot's motion is kept discreet, i.e. it moves in straight line, but in smaller segments (lets call 'strides' for simplicity). At the end of every stride, oblu transmits stride length and extent of deviation (change in orientation) from straight line, to Arduino. Arduino corrects the alignment of robot at every step on receiving such information, if it finds deviation from the pre-defined straight line.

As per program, the robot is always supposed to move in a straight line. However, it may deviate from straight line and may walk at a certain angle or skewed path because of non-idealities like uneven surface, mass imbalance in robot assembly, architectural or electrical imbalance in dc motors or the random orientation of front free running wheel. Take one step.. correct your heading... move forward. The robot also moves backwards if it travels more than the programmed length of that particular line segment..

The next stride length depends upon the remaining distance to be covered of that particular straight line segment. The robot takes large strides when the distance to be traveled is larger and takes smaller strides close to destination (i.e. end of every straight line segment).

IMU Oblu transmits data to Arduino and phone (over bluetooth) simultaneously. Xoblu (the Android app) performs some simple computation to construct the path based on the movement information received from the robot, which is used for real-time tracking on phone. (Path construction using Xoblu is illustrated below.)

Path construction on phone, using Xoblu

In summary, Oblu senses motion and communicates movement information to Arduino and phone at regular intervals. Based on the programmed path and the motion information (sent by oblu), Arduino controls the wheels' movements. The robot's movement is NOT remotely controlled except for start/stop commands.

Technical Deep-Dive

This project is a masterclass in Inertial Navigation Forensics and Autonomous Path-Orchestration. It achieves high-precision indoor localization without external infrastructure by leveraging the Oblu IMU's Pedestrian Dead-Reckoning (PDR) capabilities.

  • IMU Dead-Reckoning Forensics:
    • The Zero-Velocity Update (ZUPT) Analytics: The core of the system's precision lies in the ZUPT algorithm. By programming the robot to move in discreet "Strides" (move-stop-move sequences), a "Stationary-State" is established at every step. During this millisecond-level standstill, the IMU performs a bias-correction diagnostic, resetting its velocity integrators to zero and effectively "Purging" the drift accumulated during movement.
    • Heading-Drift Harmonics: The Oblu sensor performs internal 6-axis fusion (Accelerometer + Gyroscope) to maintain a stable orientation vector. The system translates IMU displacement data into 2D Cartesian coordinates (X, Y) relative to the starting point, allowing for real-time path-reconstruction.
  • Sensor-Fusion Orchestration:
    • Loop-Closure Diagnostics: The Arduino Mega acts as the arbitration node, receiving stride-length and heading-deviation metadata from the Oblu via the Xoblu Protocol. If the sensor detects a drift from the pre-programmed path, the Mega executes a differential-drive correction (v_L ≠ v_R) to realign the chassis with the intended vector.

Path modeling:

The robot could be best controlled if it walks in straight line segments only. Therefore, the path must be first modeled as a set of straight line segments. Below pictures contain couple of example paths and their representations in terms of displacement and orientation. This is how the path is programmed in Arduino.

Likewise any path which is a set of straight line segments, can be defined and programmed in Arduino.

Engineering & Implementation

  • Kinetic Bus Diagnostics:
    • H-Bridge Power Integrity: Driving DC motors induces significant back-EMF and spectral noise on the logic rails. 1000µF capacitors are integrated as low-ESR filters to stabilize the 5V bus, preventing "Voltage-Brownout" during peak-torque demand.
    • Path-Modeling Heuristics: The navigation logic is structured as a series of `{Length, Orientation}` arrays, as shown in the path modeling images above. This allows the robot to execute complex maneuvers by decomposing shapes into deterministic linear segments and rotational pivots.
  • Visual Telemetry HMI:
    • Bluetooth Data-Stream Diagnostics: The system transmits processed navigation frames to the Xoblu Android app. This enables real-time visual forensics, where the robot's physical movement is mirrored as a high-fidelity digital trace on the mobile device, facilitating "BVLOS" (Beyond Visual Line of Sight) monitoring.

Circuit Assembly:

Refer H/W section for electrical connections between Arduino, oblu, motor driver and battery pack.

  • Communication Protocol :

Step 1: Xoblu sends START command to oblu

Step 2: oblu acknowledges receiving command by sending appropriate ACK to Xoblu

Step 3: oblu sends DATA packet containing displacement and orientation infromation for each stride, at every step, to Xoblu. (step = whenever detects zero motion or standstill is detected).

Step 4: Xoblu acknowledges receiving last DATA packet by sending appropriate ACK to oblu. (Cycle of steps 3 and 4 is repeated until Xoblu sends STOP. On receiving STOP command, oblu executes Step 5)

Step 5: STOP - (i) Stop processing in oblu (ii) Stop all outputs in oblu

Please refer oblu's Application Note for details of START, ACK, DATA and STOP

How does Oblu IMU work (optional) :

Presenting some references on Oblu's overview and basic principal of operation of a foot-mounted PDR sensors:

--> The available source code of oblu is targeted towards foot-mounted navigation. And it is best optimized for that purpose. Below video covers its basic principal of operation:

Pedestrian Dead Reckoning (PDR) with foot-mounted motion sensors

--> Here are couple of simple articles on foot mounted PDR sensors:

1. Track my steps

2. Continue tracking my steps

--> You may refer this document for details on pedestrian dead reckoning using foot-sensors.

--> Following video for overview of Oblu:

Oblu's overview

Conclusion

This project represents the pinnacle of Infrastructure-Free Positioning. By mastering ZUPT Forensics and IMU Diagnostics, it delivers a professional navigation platform that proves the efficacy of human-modeled motion in high-precision robotic applications.

----------------

Please do share your feedback, suggestions and leave comments.

Best Wishes!

----------------

ข้อมูล Frontmatter ดั้งเดิม

apps:
  - "Xoblu Android App (Visual Telemetry HMI)"
  - "Arduino IDE"
author: "subhojyoti"
category: "Installations"
components:
  - "1x Smart Motor Robot Car Battery Box Chassis Kit DIY Speed Encoder for Arduino"
  - "1x Soldering iron (generic)"
  - "2x Capacitor 1000 µF"
  - "1x Arduino Mega 2560"
  - "1x oblu - an opensource IMU for indoor pedestrian navigation"
  - "1x Male/Female Jumper Wires"
  - "1x Dual H-Bridge motor drivers L293D"
  - "1x Solderless Breadboard Half Size"
  - "1x AA 2800 Ni-MH Rechargeable"
description: "A professional-grade indoor navigation platform featuring high-accuracy IMU dead-reckoning, Xoblu-sensor fusion diagnostics, and Zero-Velocity Update (ZUPT) forensics."
difficulty: "Intermediate"
documentationLinks: []
downloadableFiles:
  - "https://github.com/vijkumsha/oblu_Robot"
encryptedPayload: "U2FsdGVkX18VMyGZrYuKsTHfKYjxZrykf4rbml9sDnpw8u1nVRgs3fOSB9a2tRGT7UbIqt3Og+EcOm3uzXMfoPLtZRtPyFj45iiXNjfgv7I="
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/robot-for-supercool-indoor-navigation-cc949b_cover.gif"
lang: "en"
likes: 41
passwordHash: "8916cf5b293b8067b50913e11b52d581975d00127db2c027740a5accb43906ce"
price: 1499
seoDescription: "High-accuracy indoor navigation Robot with real-time tracking on phone. No GPS, WiFi, or Map required."
tags:
  - "indoor-navigation-forensics"
  - "imu-dead-reckoning"
  - "sensor-fusion-diagnostics"
  - "robotics-orchestration"
  - "zupt-analytics"
  - "arduino-mega"
title: "Aero-Nav: IMU Dead-Reckoning & ZUPT-Fusion Forensics"
tools:
  - "Soldering Iron (for low-impedance bus interconnects)"
videoLinks:
  - "https://www.youtube.com/embed/Qi6bLV_Hnf0"
  - "https://www.youtube.com/embed/c1bYfUYlVSo"
  - "https://www.youtube.com/embed/s7cpwuVO58U"
  - "https://www.youtube.com/embed/SeIxKxKSN3w"
views: 48200