robot_remote_control

A library for framework independent remote control of semi-autonomous robots. The library is in active development and might change a lot.

https://github.com/dfki-ric/robot_remote_control

Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (14.2%) to scientific vocabulary

Keywords

remote-control robotics
Last synced: 6 months ago · JSON representation ·

Repository

A library for framework independent remote control of semi-autonomous robots. The library is in active development and might change a lot.

Basic Info
  • Host: GitHub
  • Owner: dfki-ric
  • License: bsd-3-clause
  • Language: C++
  • Default Branch: master
  • Homepage:
  • Size: 907 KB
Statistics
  • Stars: 9
  • Watchers: 9
  • Forks: 10
  • Open Issues: 1
  • Releases: 0
Topics
remote-control robotics
Created over 6 years ago · Last pushed 6 months ago
Metadata Files
Readme License Citation

README.md

Main (build and test)

Robot Remote Control

This is a library for framework independent remote control of semi-autonomous robots.

This library was initiated and is currently developed at the Robotics Innovation Center of the German Research Center for Artificial Intelligence (DFKI) in Bremen.

Motivation

Robots or semi-autonomous vehicles often use their own Framework, with it's own proprietary communication. While these are often well suited for in-system communication, they often cause trouble when those systems should be controlled by an external connection.

Those connections may also have additional requirements, like low bandwidth, high latency, etc., or custom communication hardware, which does not have an ethernet stack. This library defines an interface to those robots and supports externally programmed Transports that can handle the requirements above.

Citing

An evaluation of the library has beed published at the i-SAIRAS conference in 2020, you can find the Paper here.

If you want to cite this library you can use this bibtex entry:

bibtex @inproceedings{danter2020rrc, title = {Lightweight and Framework-Independent Communication Library to Support Cross-Plattform Robotic Applications and High-Latency Connections}, booktitle = {International Symposium on Systems, Artificial Intelligence, Robotics, and Automation in Space (i-SAIRAS), 15th, October 19-23, Online-Conference}, author = {Leon Cedric Danter and Steffen Planthaber and Alexander Dettmann and Wiebke Brinkmann and Frank Kirchner}, year = {2020}, url = {https://www.hou.usra.edu/meetings/isairas2020fullpapers/pdf/5063.pdf} }

License

BSD Clause 3
- Copyright DFKI GmbH

Installation

Dependencies

The library is using the high-level networking library ZeroMQ (ZMQ) and Google's language- and platform-neutral proto3 for de-/serialization. Therefor you need to manually install the following OS dependencies: protobuf and zeromq

sudo apt install libprotobuf-dev protobuf-compiler libzmq3-dev libreadline-dev

Building

The library is compiled using cmake. To compile it manually execute the following lines from the repositories root directory:

mkdir build
cd build
cmake ..
make

Optionally you can add the flags -DBUILDEXAMPLES=ON and -DBUILDTESTS=ON to build the examples and test directory respectively.

Building on systems without protobuf3

In order to install protobuf3 from source you need additional dependencies:

apt-get install autoconf automake libtool curl make g++ unzip lsb-release

You can use the compileprotobuffrom_source.bash script to build protobuf from source. Optionally you can path the install destination as follows:

build_protobuf "$INSTALL_PATH"

This will install protobuf 3 in the specified INSTALL_PATH (default is /usr/local)

In case you have a system protobuf installed, defien the protobuf locations by yourself:

cmake .. -DBUILD_EXAMPLES=true -DPROTOBUF_PROTOC_EXECUTABLE=/bin/protoc -DPROTOBUF_IMPORT_DIRS=/include -DPROTOBUF_INCLUDE_DIR=/include -DPROTOBUF_LIBRARY=/lib/libprotobuf.so.28

Directory Structure

This directory structure follows some simple rules, to allow for generic build processes and simplify reuse of this project.

Folder Structure

| directory | purpose | | ----------------- | ------------------------------------------------------ | | src/ | Contains all header (.hpp) and source (.cpp) files | | build/ * | The target directory for the build process, temporary content | | test/ | contains the boost_test based unit tests | | examples/ | contains demo classes to showcase usage and extensibility |

Gettings started

Please have a look into the provided Main examples

  • examples/ControlledRobotMain.cpp (Robot that takes the position command and sets its position to it)
  • examples/RobotControllerMain.cpp (controller that sets the desired robot position)

You can build the Doxygen documentation using $> doxygen Doxyfile, it will be written to the build/doc folder.

There are two main libraries generated when compiling this repository:

RobotController

The RobotController class is a framework independent cpp class which is able to control any Robot/Vehicle that has a ControlledRobot library wrapped into its control framework.

ControlledRobot

This library is to be used on the robot, you can map the commands received from the RobotController Library to commands of your Robot to listen to the commands. Also you can add Telemery to this library, which are then send to the RobotController.

Transports

Transports are seperated into two directions: commands and telemetry. While commands from RobotController to ControlledRobot are getting acknowledged on retrieval, the retrieval of telemetry is not confirmed.

These Transports are given to the RobotController and ControlledRobot in their contructor and only implement an send() and receive() function. So it is easy to implement other means of connections between those by implementing the Transport.hpp interface.

Testing

The repository includes a test directory with several boost test cases. You can build this directory and the test_suite executable as follows:

mkdir build
cd build
cmake -D -DBUILD_TESTS=ON ..
make

If you always want to build the test directory as well add the following line to your CMakeLists.txt

set(BUILD_TESTS ON)

In order to run the tests you can either run all by executing (in /build/test) ./test_suite or choose a specific test with the -t flag ./test_suite -t checking_current_pose

Bug Reports

To search for bugs or report them, please use GitHubs Issue-Tracker

Acknowledgements

This work was mainly developned as part of several projects:

  • ROBDEKON was funded by the Federal Ministry of Economics and Technology in accordance with the parliamentary resolution of the German Parliament (grant no.13N14675).
  • Mare-IT was funded by the German Space Agency (DLR Agentur) with federal funds of the Federal Ministry of Economics and Technology in accordance with the parliamentary resolution of the German Parliament (grant no. 01|S17029A).
  • PRO-ACT was funded under the European Commission Horizon 2020 Space Strategic Research Clusters (Operational Grants number 821903)

Owner

  • Name: DFKI GmbH, Robotics Innovation Center
  • Login: dfki-ric
  • Kind: organization
  • Location: Bremen

Research group at the German Research Center for Artificial Intelligence GmbH.

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: "Planthaber"
  given-names: "Steffen"
  orcid: "https://orcid.org/0000-0002-9432-465X"
- family-names: "Danter"
  given-names: "Leon"
  #orcid: "https://orcid.org/0000-0000-0000-0000"
title: "Robot Remote Control"
#version: 2.0.4
#doi: 10.5281/zenodo.1234
#date-released: 2017-12-18
url: "https://www.hou.usra.edu/meetings/isairas2020fullpapers/pdf/5063.pdf"
repository-code: https://github.com/dfki-ric/robot_remote_control
  
preferred-citation:
  type: conference-paper
  title: Lightweight and Framework-Independent Communication Library to Support Cross-Plattform Robotic Applications and High-Latency Connections
  collection-title: International Symposium on Systems, Artificial Intelligence, Robotics, and Automation in Space (i-SAIRAS), 15th, October 19-23, Online-Conference
  year: 2020
  repository-code: https://github.com/dfki-ric/robot_remote_control
  url: "https://www.hou.usra.edu/meetings/isairas2020fullpapers/pdf/5063.pdf"
  authors:
  - family-names: "Danter"
    given-names: "Leon"
  - family-names: "Planthaber"
    given-names: "Steffen"
    orcid: "https://orcid.org/0000-0002-9432-465X"
  - family-names: "Dettmann"
    given-names: "Alexander"
  - family-names: "Brinkmann"
    given-names: "Wiebke"
  - family-names: "Kirchner"
    given-names: "Frank"

GitHub Events

Total
  • Issues event: 3
  • Watch event: 1
  • Delete event: 4
  • Issue comment event: 11
  • Push event: 36
  • Pull request review comment event: 5
  • Pull request review event: 8
  • Pull request event: 24
  • Fork event: 2
  • Create event: 12
Last Year
  • Issues event: 3
  • Watch event: 1
  • Delete event: 4
  • Issue comment event: 11
  • Push event: 36
  • Pull request review comment event: 5
  • Pull request review event: 8
  • Pull request event: 24
  • Fork event: 2
  • Create event: 12

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 1
  • Total pull requests: 12
  • Average time to close issues: 6 days
  • Average time to close pull requests: 10 days
  • Total issue authors: 1
  • Total pull request authors: 4
  • Average comments per issue: 4.0
  • Average comments per pull request: 0.25
  • Merged pull requests: 7
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 1
  • Pull requests: 12
  • Average time to close issues: 6 days
  • Average time to close pull requests: 10 days
  • Issue authors: 1
  • Pull request authors: 4
  • Average comments per issue: 4.0
  • Average comments per pull request: 0.25
  • Merged pull requests: 7
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • moooeeeep (2)
  • fennel-labs (1)
  • chhtz (1)
Pull Request Authors
  • planthaber (13)
  • 0Nel (3)
  • RavisankarSelvaraju (1)
  • ayden175 (1)
  • yogeshkarna (1)
  • brean (1)
Top Labels
Issue Labels
Pull Request Labels