《Graph Optimization Approach to Range-based Localization》; UWB localization

Overview

This is modified from localization . Thanks for his work for uwb localizaiton.

代码1:https://github.com/qxiaofan/awesome-uwb-localization

代码2:https://github.com/qxiaofan/awesome-uwb-driver

接下来简单介绍下上述程序如何运行?前提是参考下文,安装好相关依赖包。

mkdir catkin_ws1 #在某个目录下新建一个文件夹,当然名称可以自拟

cd catkin_ws1

mkdir src

之后,将上述的awesome-uwb-localization和awesome-uwb-driver工程下载到src目录下

之后在文件夹catkin_ws1下打开终端,输入:

catkin_make

编译成功后,通过命令:roslaunch localization_bag_play.launch 即可运行demo

localization

Localization ROS package for range sensors, i.e. ultra wide-band (UWB).

This repo also provides sensor fusion for multi-source, e.g. Optical Flow and Visual SLAM.

Preparation

System higher than Ubuntu 16.04 (with ROS).

Install dependencies:

sudo apt-get update

sudo apt install python-pip

sudo pip install --user numpy scipy matplotlib ipython jupyter pandas sympy nose

sudo easy_install -U statsmodels

sudo apt install libcholmod3.0.6 libcsparse3.1.4 libsuitesparse-dev python-cvxopt 

sudo apt install ros-kinetic-hector-trajectory-server

Install G2O from source. Download g2o to your non-ros source folder, make and install:

git clone https://github.com/RainerKuemmerle/g2o

Please checkout the following commit for compatibility.

cd g2o ; git checkout deafc01ee8315b9405351fb145238c5d62f82dc7
mkdir build ; cd build
cmake .. ; make -j4
sudo make install

Download uwb_driver to your ros workspace and install its dependencies:

git clone https://github.com/wang-chen/uwb_driver.git
sudo apt-get install ros-kinetic-serial

New support for UWB from bitcrazy:

please find its driver on:
https://github.com/wang-chen/lps-ros

To use UWB from bitcrazy, comment the following line in the CMakeLists.txt

add_definitions(-DTIME_DOMAIN)

Usage

1. The following ROS param should be set before the program is started

/uwb/nodesId: an array, the IDs of the UWB anchors (the last ID is the moving module to be localized)
/uwb/nodesPos: an array, the postions (x, y, z) of the UWB anchors (the last three elements, is the initial postion of the moving module to be localized)
/uwb/antennaOffset: the antenna offset on the moving module, there may be multiple antennas. DONOT SET IT IF THERE IS NO OFFSET  

One example can be found in the uwb_driver repo:

https://github.com/wang-chen/uwb_driver/blob/master/cfg/anchor.yaml

2. Program Parameters

It can be set by modifying the yaml files in the cfg folder.
Include the specific yaml file in your launch file. 
For example, the "uwb_only.yaml" sets parameters for uwb-only localization.

3. Topic subscriber

This localizaiton repo subsribes the specific sensor measurement topic.
Make sure they are published before the program is started.
The topic name can also be changed in the aformentioned yaml files.

If you are interested in this work, you may cite:

@article{fang2020graph,
  title={Graph Optimization Approach to Range-based Localization},
  author={Fang, Xu and Wang, Chen and Nguyen, Thien-Minh and Xie, Lihua},
  journal={IEEE Transactions on Systems, Man and Cybernetics: Systems},
  year={2020}
}

@inproceedings{fang2018model,
  title={Model-free approach for sensor network localization with noisy distance measurement},
  author={Fang, Xu and Wang, Chen and Nguyen, Thien-Minh and Xie, Lihua},
  booktitle={2018 15th International Conference on Control, Automation, Robotics and Vision (ICARCV)},
  pages={1973--1978},
  year={2018},
  organization={IEEE}
}

@inproceedings{wang2017ultra,
  title={Ultra-Wideband Aided Fast Localization and Mapping System},
  author={Wang, Chen and Zhang, Handuo and Nguyen, Thien-Minh and Xie, Lihua},
  booktitle={IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
  pages={1602--1609},
  year={2017},
  organization={IEEE}
}
You might also like...
The dgSPARSE Library (Deep Graph Sparse Library) is a high performance library for sparse kernel acceleration on GPUs based on CUDA.

dgSPARSE Library Introdution The dgSPARSE Library (Deep Graph Sparse Library) is a high performance library for sparse kernel acceleration on GPUs bas

High dynamic range (HDR) image comparison tool for graphics people. With an emphasis on OpenEXR images.
High dynamic range (HDR) image comparison tool for graphics people. With an emphasis on OpenEXR images.

tev — The EXR Viewer A high dynamic range (HDR) image comparison tool for graphics people. tev allows viewing images through various tonemapping opera

VLOAM-CMU-16833 - CMU 16-833
VLOAM-CMU-16833 - CMU 16-833 "Robot Localization and Mapping" Course Project

Introduction This repository is a reimplementation of the VLOAM algorithm [1]. The LOAM/Lidar Odometry part is adapted and refactored from ALOAM [2],

Cartographer is a system that provides real-time simultaneous localization and mapping (SLAM) in 2D and 3D across multiple platforms and sensor configurations.
Cartographer is a system that provides real-time simultaneous localization and mapping (SLAM) in 2D and 3D across multiple platforms and sensor configurations.

Cartographer Purpose Cartographer is a system that provides real-time simultaneous localization and mapping (SLAM) in 2D and 3D across multiple platfo

Proletariat Graph-Learning Constraint Solver

Introduction Vertexy is a conflict-driven learning constraint solver that is focused on solving problems within graphs. Its primary development goal i

Frog is an integration of memory-based natural language processing (NLP) modules developed for Dutch. All NLP modules are based on Timbl, the Tilburg memory-based learning software package.

Frog - A Tagger-Lemmatizer-Morphological-Analyzer-Dependency-Parser for Dutch Copyright 2006-2020 Ko van der Sloot, Maarten van Gompel, Antal van den

A GPU (CUDA) based Artificial Neural Network library
A GPU (CUDA) based Artificial Neural Network library

Updates - 05/10/2017: Added a new example The program "image_generator" is located in the "/src/examples" subdirectory and was submitted by Ben Bogart

C-based/Cached/Core Computer Vision Library, A Modern Computer Vision Library

Build Status Travis CI VM: Linux x64: Raspberry Pi 3: Jetson TX2: Backstory I set to build ccv with a minimalism inspiration. That was back in 2010, o

MaixPy3 is a Python3 toolkit based on cpython
MaixPy3 is a Python3 toolkit based on cpython

MaixPy3 is a Python3 toolkit based on cpython, which simplifies the development of applications on Linux AI edge devices through Python programming.

Comments
  • segment fault

    segment fault

    Hi,thanks for your great work, when I run roslaunch localization_bag_play.launch, got segment fault. I debug localiziation_node with CLion ,segment fault locate at g2o::ParameterSE3Offset* zero_offset = new g2o::ParameterSE3Offset in localization.cpp. My ros environment is Melodic

    opened by JasonSun623 0
Owner
3D视觉工坊
Computer vision algorithm engineer ,微信公众号「3D视觉工坊」博主
3D视觉工坊
nanoPGO: A header-only library for Pose-Graph-Optimization in SE(2).

nanoPGO nanoPGO: A header-only library for Pose-Graph-Optimization in SE(2). 1. Description This repo is an implementation of 2D Pose Graph Optimizati

道锋 3 Jul 7, 2022
The official implementation of our CVPR 2021 paper - Hybrid Rotation Averaging: A Fast and Robust Rotation Averaging Approach

Graph Optimizer This repo contains the official implementation of our CVPR 2021 paper - Hybrid Rotation Averaging: A Fast and Robust Rotation Averagin

Chenyu 109 Dec 23, 2022
This is the code of our paper An Efficient Training Approach for Very Large Scale Face Recognition or F²C for simplicity.

Fast Face Classification (F²C) This is the code of our paper An Efficient Training Approach for Very Large Scale Face Recognition or F²C for simplicit

null 33 Jun 27, 2021
Deploy SCRFD, an efficient high accuracy face detection approach, in your web browser with ncnn and webassembly

ncnn-webassembly-scrfd open https://nihui.github.io/ncnn-webassembly-scrfd and enjoy build and deploy Install emscripten

null 42 Nov 16, 2022
Transformer related optimization, including BERT, GPT

FasterTransformer This repository provides a script and recipe to run the highly optimized transformer-based encoder and decoder component, and it is

NVIDIA Corporation 1.7k Dec 26, 2022
Reviatalizing Optimization for 3D Human Pose and Shape Estimation: A Sparse Constrained Formulation

Reviatalizing Optimization for 3D Human Pose and Shape Estimation: A Sparse Constrained Formulation This is the implementation of the approach describ

Taosha Fan 47 Nov 15, 2022
OpenVINO™ optimization for PointPillars*

OpenVINO™ optimization for PointPillars* There are 2 demonstrations in the repo. Demo of PointPillars Optimization - It demonstrates how to implement

Intel Corporation 17 Nov 6, 2022
Nano - C++ library [machine learning & numerical optimization] - superseeded by libnano

Nano Nano provides numerical optimization and machine learning utilities. For example it can be used to train models such as multi-layer perceptrons (

Cosmin Atanasoaei 1 Apr 18, 2020
BayesOpt: A toolbox for bayesian optimization, experimental design and stochastic bandits.

BayesOpt: A Bayesian optimization library BayesOpt is an efficient implementation of the Bayesian optimization methodology for nonlinear optimization,

Ruben Martinez-Cantin 341 Nov 29, 2022
A LLVM-based static analyzer to produce PyTorch operator dependency graph.

What is this? This is a clone of the deprecated LLVM-based static analyzer from the PyTorch repo, which can be used to produce the PyTorch operator de

Jiakai Liu 5 Dec 15, 2021