All Projects → xipengwang → Aprilsam

xipengwang / Aprilsam

Licence: lgpl-2.1
SLAM optimization algorithm

Programming Languages

c
50402 projects - #5 most used programming language

Labels

Projects that are alternatives of or similar to Aprilsam

Assistive Gym
Assistive Gym, a physics-based simulation framework for physical human-robot interaction and robotic assistance.
Stars: ✭ 150 (-11.76%)
Mutual labels:  robotics
Rt gene
RT-GENE: Real-Time Eye Gaze and Blink Estimation in Natural Environments
Stars: ✭ 157 (-7.65%)
Mutual labels:  robotics
Myrobotlab
Open Source Java Framework for Robotics and Creative Machine Control
Stars: ✭ 163 (-4.12%)
Mutual labels:  robotics
Libcanard
A compact implementation of the UAVCAN/CAN protocol in C for high-integrity real-time embedded systems
Stars: ✭ 151 (-11.18%)
Mutual labels:  robotics
Motbeyondpixels
Monocular multi-object tracking using simple and complementary 3D and 2D cues (ICRA 2018)
Stars: ✭ 155 (-8.82%)
Mutual labels:  robotics
Unsuperviseddeephomographyral2018
Unsupervised Deep Homography: A Fast and Robust Homography Estimation Model
Stars: ✭ 161 (-5.29%)
Mutual labels:  robotics
Urdf Viz
visualize URDF/XACRO file, URDF Viewer works on Windows/MacOS/Linux
Stars: ✭ 149 (-12.35%)
Mutual labels:  robotics
Py trees
Python implementation of behaviour trees.
Stars: ✭ 168 (-1.18%)
Mutual labels:  robotics
Robot
Simple library for controlling a raspberry pi based robot
Stars: ✭ 156 (-8.24%)
Mutual labels:  robotics
Mjrl
Reinforcement learning algorithms for MuJoCo tasks
Stars: ✭ 162 (-4.71%)
Mutual labels:  robotics
Difftaichi
10 differentiable physical simulators built with Taichi differentiable programming (DiffTaichi, ICLR 2020)
Stars: ✭ 2,024 (+1090.59%)
Mutual labels:  robotics
Path optimizer
Real-time path planning for vehicles.
Stars: ✭ 156 (-8.24%)
Mutual labels:  robotics
Gpmp2
Gaussian Process Motion Planner 2
Stars: ✭ 161 (-5.29%)
Mutual labels:  robotics
Robotcar Dataset Sdk
Software Development Kit for the Oxford Robotcar Dataset
Stars: ✭ 151 (-11.18%)
Mutual labels:  robotics
Rl Baselines3 Zoo
A collection of pre-trained RL agents using Stable Baselines3, training and hyperparameter optimization included.
Stars: ✭ 161 (-5.29%)
Mutual labels:  robotics
Autonomousdrivingcookbook
Scenarios, tutorials and demos for Autonomous Driving
Stars: ✭ 1,939 (+1040.59%)
Mutual labels:  robotics
Pythonrobotics
Python sample codes for robotics algorithms.
Stars: ✭ 13,934 (+8096.47%)
Mutual labels:  robotics
Modernroboticscpp
Modern Robotics: Mechanics, Planning, and Control C++ Library --- The primary purpose of the provided software is to be easy to read and educational, reinforcing the concepts in the book. The code is optimized neither for efficiency nor robustness. http://modernrobotics.org/
Stars: ✭ 170 (+0%)
Mutual labels:  robotics
Flame
FLaME: Fast Lightweight Mesh Estimation
Stars: ✭ 164 (-3.53%)
Mutual labels:  robotics
Probabilistic Robotics
《概率机器人》书和课后习题
Stars: ✭ 163 (-4.12%)
Mutual labels:  robotics

AprilSAM: Real-time Smoothing and Mapping

Copyright APRIL Lab.

https://april.eecs.umich.edu/

AprilSAM: Real-time Smoothing and Mapping

Video

INSTALL

The default installation will place headers in /usr/local/include and shared library in /usr/local/lib. It also installs a pkg-config script into /usr/local/lib/pkgconfig.

$ make
$ sudo make install

USAGE

A basic AprilSAM application can be seen in example/aprilsam_tutorial.c.

Create a graph:

april_graph_t *graph = april_graph_create();

Initialize optimize parameters:

struct april_graph_cholesky_param *chol_param = calloc(1,sizeof(april_graph_cholesky_param_t));
april_graph_cholesky_param_init(chol_param);
chol_param->show_timing = 0; //
chol_param->delta_xy = 0.1;
chol_param->delta_theta = 0.1;
chol_param->nthreshold = 100;

Add xyt node:

double ninit[3]  = { 0,0,0 };
double nstate[3] = { 0,0,0 };
double ntruth[3] = { 0,0,0 };
april_graph_node_t *node = april_graph_node_xyt_create(nstate, ninit, ntruth);
node->UID = zarray_size(graph->nodes);
zarray_add(graph->nodes, &node);

Add xyt factor:

april_graph_node_t *na, *nb*;
zarray_get(graph->nodes, aidx, &na);
zarray_get(graph->nodes, bidx, &na);
matd_t *W = matd_create(3,3);
MATD_EL(W, 0, 0) = 1.0 / pow(0.1, 2);
MATD_EL(W, 1, 1) = 1.0 / pow(0.1, 2);
MATD_EL(W, 2, 2) = 1.0 / pow(to_radians(1), 2);
april_graph_factor_t *factor = april_graph_factor_xyt_create(na->UID, nb->UID, z, NULL, W);
zarray_add(graph->factors, &factor);
matd_destroy(W);

Cholesky optimization:

void april_graph_cholesky(graph, chol_param);

AprilSAM increnmetal optimization:

void april_graph_cholesky_inc(graph, chol_param);

Graph Chi^2 error: (f(x)-z)^T \Sigma^-1 (f(x)-z)

double april_graph_chi2(graph);

An example of saving and loading graph file can be seen in example/aprilsam_graph_save_simple.c

Save a graph:

void april_graph_save(april_graph_t *graph, const char *path)

Load a graph:

april_graph_t* april_graph_create_from_file(const char *path)

An example of saving and retrieving graph/node/factor attributes can be seen in example/aprilsam_graph_save_with_attributes.c

Add attributes:

void april_graph_attr_put(april_graph_t *graph, const stype_t *type, const char *key, void *data)
void april_graph_node_attr_put(april_graph_node_t *node, const stype_t *type, const char *key, void *data)
void april_graph_factor_attr_put(april_graph_factor_t *factor, const stype_t *type, const char *key, void *data)

Get attributes:

void* april_graph_attr_get(april_graph_t * graph, const char * key)
void* april_graph_node_attr_get(april_graph_t * graph, const char * key)
void* april_graph_factor_attr_get(april_graph_t * graph, const char * key)

An example of evaluting AprilSAM on Manhattan3500 dataset can be seen in example/aprilsam_demo.c

Test aprilsam optimization (Load an AprilSAM graph file):

./aprilsam_demo

Test aprilsam optimization (Load a text file):

./aprilsam_demo --datapath ../data/M3500.txt

Test batch update only step by step optimization:

./aprilsam_demo --datapath ../data/M3500.txt --batch_update_only
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].