/MathematicalRobotics

Primary LanguagePythonMIT LicenseMIT

MathematicalRobotics

What is this?

The development of robotics is always closely related to mathematics. But sometime pure mathematical expressions are boring and difficult to understand, so I hope to show the magic of mathematics through some interesting robotics demonstrations.

The goals of our project.

We want to select some widely used and practical algorithms. for each algorithm, we aim to

  • Provide a readable python implementation.
  • Show a detailed mathematical proof.
  • To show the math behind it, minimal use of third-party libraries.

Install

  1. Install libsuitesparse-dev, if you want to use the sparse solver.
sudo apt-get install -y libsuitesparse-dev
  1. Install mathR (this repository)
git clone https://github.com/scomup/MathematicalRobotics.git
cd MathematicalRobotics
pip3 install -e .

Or Install mathR directly from the git URL.

pip install -e git+https://github.com/scomup/MathematicalRobotics.git#egg=mathR

Demo Lists

guass_newton_method

We have developed a Gauss-Newton method library implemented in pure Python.

We also provide some demos on Lie-Group based points matching using our library.

Lie group Document:

gauss newton for 2d points matching.

python3 -m mathR.guass_newton_method.demo_2d

demo2d

gauss newton for 3d points matching.

python3 -m mathR.guass_newton_method.demo_3d

demo3d

gauss newton for linear regression.

python3 -m mathR.guass_newton_method.demo_line

demo_line

Graph Optimization

We have developed a graph optimization library implemented in pure Python. In comparison to well-known graph optimization libraries like g2o, gtsam, ceres, etc., our implementation is highly readable and ideal for studying purposes.

Graph Optimization Document

2d pose graph problem

python3 -m mathR.graph_optimization.demo_g2o_se2

dataset: sphere2500.g2o 1 demo_manhattanOlson3500

3d pose graph problem

python3 -m mathR.graph_optimization.demo_g2o_se3

dataset: manhattanOlson3500.g2o 1 demo_manhattanOlson3500

bundle adjustment

python3 -m mathR.slam.demo_bundle_adjustment

dataset: Venice: problem-427-310384-pre 2

demo_bundle_adjustment

geometry

point to line ICP

python3 -m mathR.robot_geometry.demo_p2line_matching

demop2l

point to plane ICP

python3 -m mathR.robot_geometry.demo_p2plane_matching

demop2p

plane cross a cube

python3 -m mathR.robot_geometry.demo_plane_cross_cube

demopcc

Footnotes

  1. Datasets are available in the open source package of vertigo. 2

  2. The datasets used in the demo are available in the project Bundle Adjustment in the Large.