Skip to content

Repository files navigation

xmNavigation
xmNavigation · ∇

Motion algorithms for mobile robots — planning, control, state estimation and mapping.
The ∇ centerpiece of the XMotion family.


xmNavigation is the motion-algorithms core of the XMotion product family: trajectory and path planning, feedback and optimal control, state estimation, and mapping. It consolidates code that was previously spread across several repositories (notably librav and imtoolkit) and, most recently, lived in libxmotion. At the moment it is used mainly for study, research and experimentation — not yet production-hardened.

Algorithm-centric.xmNavigation is a pure algorithms library: its runtime dependency set is xmBase (foundation/common) and math libraries — no hardware dependencies. For development only, the visualization-gated modules and demos use xmViewer (the family's viewer component); deployment builds carry none of it. Composing algorithms with drivers into runnable robot applications happens in external application repos. See the umbrella's transition ADR.

Repository structure

The source tree is organized around the five domain areas of a navigation stack, plus two supporting tiers:

ModuleDescription
src/estimationstate estimation (MEKF attitude/IMU filters)
src/mappingworld representation (occupancy/PGM maps, point clouds)
src/decisionprediction & decision-making (markov models, reachability)
src/planningmotion planning (geometry, space decomposition, sampling, lattice)
src/controlcontrol laws & models (PID, FSM, dynamics models, kinematics)
src/typesshared navigation-stack vocabulary (the inter-area contract types)
src/visualizationdrawing for all of the above — the only module linking a renderer
src/simulationdeterministic sim loop for algorithm development (headless + visual)

Supporting folders: cmake (build configuration), data (test fixtures: maps, lookup tables), docs (documentation), python (analysis scripts), third_party (vendored dependencies — all permissively licensed).

Build and run

Compiler requirements

  • C++17

Install dependencies

$ sudo apt-get install -y libgl1-mesa-dev \
libglfw3-dev libcairo2-dev libtbb-dev libboost-all-dev \
libeigen3-dev libopencv-dev libyaml-cpp-dev \
libncurses-dev libpcl-dev libglm-dev

Compile

$ mkdir build && cd build
$ cmake ..
$ make -j

Note: if you hit build issues, refer to the CI workflow under .github/workflows/ for the up-to-date steps.

Logging configuration

Logging goes through the xmBase telemetry API (XM_* macros). Without a telemetry SDK bound at runtime, events at Warn severity and above go to stderr; the console binding's minimum severity can be seeded with the XM_LOG_LEVEL environment variable.

License

Apache-2.0 — see LICENSE and NOTICE. First-party code only; bundled third-party components retain their own licenses.

About

A lightweight mobile robot motion planning and control library

Resources

Stars

10 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages