Skip to content

A fully templated C++ implementation of general-use algorithms for robotic perception and visual servoing.

Notifications You must be signed in to change notification settings

wissem01chiha/robotics-perception

Repository files navigation

Robotic Perception Library

A fully templated C++ implementation of general-use algorithms for robotic perception and visual servoing.

C++ License Linux Build


Goals

RPL project has the following goals:

  • Provide optimized and flexible modules for collision prediction and detection for collaborative robotic applications.
  • Feature extraction from camera images and/or sensors data types.
  • Environment reconstruction and processing, trajectory planning in unconstrained worlds.
  • Robust control strategies based on visual input.
  • A set of fuzzy relations between solid objects, and develops, and a set of human-like control algorithms.

This is a template for modern C++ projects. What you get is:

  • Library, executable and test code separated in distinct folders
  • Use of modern CMake for building and compiling
  • External libraries installed and managed by
    • CPM Package Manager OR
    • Conan Package Manager OR
    • VCPKG Package Manager
  • Unit testing using Catch2 v2
  • General purpose libraries: JSON, spdlog, cxxopts and fmt
  • Continuous integration testing with Github Actions and pre-commit
  • Code documentation with Doxygen and Github Pages
  • Tooling: Clang-Format, Cmake-Format, Clang-tidy, Sanitizers

Software Requirements

  • CMake 3.21+
  • GNU Makefile
  • Doxygen
  • Conan or VCPKG
  • MSVC 2017 (or higher), G++9 (or higher), Clang++9 (or higher)
  • Optional: Code Coverage (only on GNU|Clang): gcovr
  • Optional: Makefile, Doxygen, Conan, VCPKG

Building

First, clone this repo and do the preliminary work:

git clone --recursive https://github.com/franneck94/CppProjectTemplate
mkdir build
  • App Executable
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
cmake --build . --config Release --target main
cd app
./main
  • Unit testing
cmake -H. -Bbuild -DCMAKE_BUILD_TYPE="Debug"
cmake --build build --config Debug
cd build
ctest .
  • Documentation
cd build
cmake -DCMAKE_BUILD_TYPE=Debug ..
cmake --build . --config Debug --target docs
  • Code Coverage (Unix only)
cmake -H. -Bbuild -DCMAKE_BUILD_TYPE=Debug -DENABLE_COVERAGE=On
cmake --build build --config Debug --target coverage -j4
cd build
ctest .

For more info about CMake see here.

Testing

Datasets

  • Visual Servoing Dataset, E. G. Ribeiro, R. Q. Mendes and V. Grassi Jr

References

  • Real-Time Deep Learning Approach to Visual Servo Control and Grasp Detection for Autonomous Robotic Manipulation, E. G. Ribeiro, R. Q. Mendes, V. Grassi Jr, Elsevier's Robotics and Autonomous Systems, 2021 Robotics and Autonomous Systems, Elsevier, 2021. DOI: 10.1016/j.robot.2021.103757

  • Training deep neuralnetworks for visual servoing, Q. Bateux, E. Marchand, J. Leitner, F. Chaumette, P. Corke, ICRA 2018

  • Classical and Deep Learning based Visual Servoing Systems: a Survey on State of the Art, Z.Machkour, D.Ortiz-Arroyo, P.Durdevic, 2021

  • Introductory Techniques for 3-D Computer Vision, Emanuele Trucco, Alessandro Verri, 1998

  • Three-dimensional computer vision a geometric viewpoint, Olivier Faugeras, 1993

-Robot Vision,Berthold K.P. Horn, 1987

Contributing

please see the CONTRIBUTING guide for more informations

Releases

No releases published

Packages

No packages published