
TinyNav : A lightweight, hackable system to guide your robots anywhere. Maintained by Uniflex AI.
| Unitree GO2 | LeKiwi |
|---|---|
| Navigation with 3D Gaussian Splatting |
|---|
| Vision Only Mapping |
|---|
We’ve launched our bounty program! Check the list to see how you can contribute and the reward values for each task.
we’re excited to add Looper as a first-class supported camera, alongside RealSense.
Looper is special because it provides built-in depth and visual–inertial odometry (VIO), enabling many new possibilities for perception and navigation.
<img alt="looper" src="https://github.com/UniflexAI/tinynav/raw/main/docs/looper.jpg" width="50%" height="50%">
IMU–Visual Fusion in Perception Node
Integrates IMU–visual fusion to significantly improve pitch-angle accuracy.
This enhancement boosts overall robustness and enables reliable navigation across more robot platforms, especially those sensitive to pitch drift.
Resilient Mapping Pipeline
Upgraded map-building logic to gracefully handle message loss, improving stability in real-world communication conditions.
Paired with a redesigned visualization module, developers can now observe the map-building process incrementally, making debugging and tuning far more intuitive.
Unified Model Training for Perception + Planning
We have begun training a single neural model that jointly supports both perception and planning tasks, paving the way for tighter integration and future performance gains. (TinyBEV)
Enhanced C++ CI & Code Quality
The CI pipeline now includes: * clang-tidy static analysis * ASAN (Address Sanitizer) detection
These additions ensure higher reliability, cleaner code, and safer memory usage across the C++ stack.
Dozens of internal fixes and refinements were merged this cycle, improving system stability, consistency, and developer experience.
3D Gaussian Splatting (3DGS) Map Representation
Provides high-quality visualization and an intuitive map editor, making it easy to inspect map details and place target POIs with precision.
ESDF-based Obstacle Avoidance
Enables more human-like navigation. Robots not only avoid obstacles but also keep a safe distance, improving path quality.
Localization Benchmark
Adds a benchmark for map-based localization, allowing clear and quantitative evaluation of improvements across versions.
CUDA Graph Optimization
Reduces inference overhead and achieves >20Hz on Jetson Nano, lowering latency for real-time closed-loop navigation.
Simplified First-Time Setup
The postStartCommand command in the dev container now auto-generates platform-specific models, reducing errors and making setup more user-friendly.
Expanded CI Testing
Broader continuous integration coverage ensures higher build stability and code quality.
Map Storage with KV Database
Maps are now stored using shelve, resulting in shorter code and better performance.
We aim to make the system:
The repository is organized as follows:
tinynav/core/perception_node.py – Processes sensor data for localization and perception.map_node.py – Builds and maintains the environment map.planning_node.py – Computes paths and trajectories using map and perception data.control_node.py – Sends control commands to actuate the robot.Supporting modules:
driver_node.py, math_utils.py, models_trt.py, stereo_engine.py.tinynav/cpp/
C++ backend components and bindings for performance-critical operations.
tinynav/models/
Pretrained models and conversion scripts for perception and feature extraction.
scripts/
Shell scripts for launching demos, managing Docker containers, and recording datasets.
Before you begin, make sure you have the following installed:
Platform-specific requirements: - For x86_64 (PC): NVIDIA Container Toolkit (for GPU support) - For Jetson Orin: JetPack SDK version 6.2 or higher
Check the environment
bash
git clone https://github.com/UniflexAI/tinynav.git
cd tinynav
bash scripts/check_env.sh
Follow the instructions to fix any environment issues until you see:
bash
✅ Docker is installed.
✅ Docker daemon is running and accessible.
✅ NVIDIA runtime is available in Docker.
✅ Git LFS is installed.
✅ devcontainer.json patched for your x86 platform.
Open the project in VS Code
tinynav folder. Reopen the folder inside the container.
Run the example
Once inside the container, start the demo:
bash
bash /tinynav/scripts/run_rosbag_examples.sh
You should see an RViz window displaying the live planning process:

run_rosbag_examples.sh DoesThe script automates the entire demo workflow:
Plays dataset
Streams a recorded dataset from this ROS bag.
Runs TinyNav pipeline
perception_node.py → Performs localization and builds the local map. planning_node.py → Computes the robot’s optimal path. ✨ With these steps, you’ll have the full TinyNav system up and running in minutes.
TinyNav supports Dev Containers for a consistent and reproducible development experience.
tinynav folder in Visual Studio Code.If you prefer the command line:
Some systems ship with an older npm. We recommend installing a newer Node.js/npm via nvm before installing the Dev Containers CLI:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
nvm install --lts
Then install and use the Dev Containers CLI:
# Install the Dev Containers CLI
npm install -g @devcontainers/cli
# Start the Dev Container
devcontainer up --workspace-folder .
# Open a shell inside the container
devcontainer exec --workspace-folder . bash
After entering the development container, set up the Python environment:
uv venv --system-site-packages
uv sync
This will create a virtual environment and install all required dependencies.
Depending on your robot platform or map representation, install the corresponding extras:
# Unitree GO2 robot support
uv sync --extra unitree
# LeKiwi robot support
uv sync --extra lekiwi
# 3D Gaussian Splatting (3DGS) map support
uv sync --extra 3dgs
You can combine multiple extras in one command:
uv sync --extra unitree --extra 3dgs
------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
Python 11 328 154 1959
C++ 3 49 32 292
Markdown 2 76 6 167
Bourne Shell 8 9 8 109
Dockerfile 1 12 10 46
TOML 1 6 0 33
JSON 1 4 0 25
CMake 1 4 0 16
XML 1 0 0 13
-------------------------------------------------------------------------------
SUM: 29 488 210 2660
-------------------------------------------------------------------------------
We are a small, dedicated team with experience working on various robots and headsets.
Thanks goes to these wonderful people (emoji key):
$ claude mcp add tinynav \
-- python -m otcore.mcp_server <graph>