CoreRobotics

CoreRobotics: An object-oriented C++ library with cross-language wrappers for cross-platform robot control - Published in JOSS (2018)

https://github.com/corerobotics/corerobotics

Science Score: 95.0%

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

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 4 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: joss.theoj.org
  • Committers with academic emails
    2 of 5 committers (40.0%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software
Last synced: 6 months ago · JSON representation

Repository

Basic Info
  • Host: GitHub
  • Owner: CoreRobotics
  • License: other
  • Language: C++
  • Default Branch: master
  • Size: 13 MB
Statistics
  • Stars: 13
  • Watchers: 2
  • Forks: 1
  • Open Issues: 0
  • Releases: 1
Created over 8 years ago · Last pushed over 6 years ago
Metadata Files
Readme Contributing License Codemeta

README.md

pipeline status DOI codecov

CoreRobotics Project

Copyright (c) 2017

University of Washington

College of Engineering

  • C++ platforms: Windows 8.1/10, Mac OS X 10.14, and Ubuntu.
  • Python platforms: Mac, Ubuntu
  • Matlab platforms: mac, ubuntu

Description:

This git project hosts code for the CoreRobotics open source robotic control library. The CoreRobotics libraries were developed in an effort to provide generalized implementations of algorithms facilitating rapid development of real-time robot manipulator control. This is useful for roboticists and researchers who need full access to the control loop for high-performance applications, and can't afford the overhead associated with larger libraries such as the Robot Operating System (ROS). CoreRobotics utilizes an object-oriented approach in C++ to implement fast cross-platform thread management and timing, core math solvers, manipulator control, and trajectory shaping, and modeling for state estimation.

An example application that makes use of the library runs a single-board computer (e.g.: a raspberry PI or similar computer) to control the motion of a small four-jointed robot arm. A controller that solves for the joint angles to achieve a desired position of the robot tool uses the CoreRobotics InverseKinematics class. To achieve smooth motions between robot tool waypoints, the controller uses the CoreRobotics TrajectoryGenerator class. The Robot class presents a convenient way to represent the robot and update the robot kinematics quickly when new sensor data becomes available.

CoreRobotics is distrubted under the BSD-3-Clause license. This allows unlimited redistribution as long as the copyright notices and disclaimers of warranty are maintained. The third clause indicates permission is required to the use of names of contributors for endorsement in any derived work.

Structure:

  • /bin executable artifacts (examples and tests).
  • /doc contains the doxygen settings for generating html documentation. Please install doxygen and run the doxyfile to generate. The main documentation page will be doc/html/index.html
  • /examples constains example use cases. Binaries are compiled to /bin.
  • /lib library artifacts (created on compile).
  • /matlab swig bindings
  • /python swig bindings
  • /scripts helpful bash routines
  • /src library modules source and headers. Binaries are compiled to /lib.
  • /tests unit tests (GTest). Binaries are compiled to /bin. Tests for each class are broken out into test_ and should cover the class.
  • examples/ use of the library modules. Binaries are compiled to bin.

Dependencies

On Mac with homebrew: $ brew install cmake eigen boost open-scene-graph doxygen $ git clone https://github.com/google/googletest ~/googletest $ cd ~/googletest $ mkdir build && cd build $ cmake .. $ make && make install

On Linux with apt-get: $ apt-get install cmake libeigen3-dev libboost-all-dev openscenegraph doxygen $ sudo apt-get install libgtest-dev $ cd /usr/src/gtest $ mkdir build && cd build $ cmake .. $ make $ cp *.a /usr/lib

Compiling

  1. Clone the CoreRobotics repository (first cd into the parent directory you want to put CoreRobotics, here we use the root $ cd ~/ $ git clone https://gitlab.com/powan/CoreRobotics.git
  2. Set up the cmake build folder $ mkdir ~/CoreRobotics/build $ cd ~/CoreRobotics/build
  3. Run cmake $ cmake -D[option]=true -G "<compiler>" ..
    with options: all to set up all targets, full to build deprecated static library (all "CR" prefix classes), lib to compile library, tests to build the tests, examples to build the examples, python to set python version/set wrapper target lib, matlab to set wrapper target lib.

Use cmake --help for a list of available compilers. Note that if you have not installed Eigen and Boost using one of the methods outlined in the External Dependencies section above (i.e. the packages aren't found by CMake), you must manually specify the path to boost and eigen headers using cmake flags, e.g.: cmake -G "<compiler>" -DEIGEN3_INCLUDE_DIR=<path to eigen3> -DBoost_INCLUDE_DIR=<path to boost> ../ We provide a convenience repository for the needed 3rd party dependencies at https://gitlab.com/powan/CRexternal

  1. Build. On mac/Linux $ make && make install [Known issue on ubuntu docker image] You may need to run the following command so the docker image can find the share libraries $ ldconfig /usr/local/lib
  2. Run the tests $ cr-tests

Use

To use in your own project, here's an example CMakeLists.txt for "target" and "main.cpp": SET(CMAKE_CXX_STANDARD 11) SET(CMAKE_CXX_STANDARD REQUIRED ON) find_package(CoreRobotics REQUIRED) include_directories(${CR_INCLUDE_DIRS}) link_directories(${CR_LIBRARY_DIRS}) add_executable("target" main.cpp) target_link_libraries("target" ${CR_LIBRARIES})

Documentation

Documentation for latest version is at http://www.corerobotics.org/docs/. To generate this documentation yourself, doxygen needs to be installed (see above dependencies). Assuming CoreRobotics is in your home directory, use the following commands to generate the docs cd ~/CoreRobotics/doc doxygen This command will generate a subfolder /html. Open html/index.html in your web browser.

Support

We use the Service Desk feature in Gitlab to offer support. If you are a user but not contributing to the library, please email your issues or questions to: incoming+powan/CoreRobotics@incoming.gitlab.com. You'll receive an email notification that the issue went through, and we'll get to work on addressing it! If you are a contributor, please submit your issues through the issue tracker feature in Gitlab.

Owner

  • Login: CoreRobotics
  • Kind: user

JOSS Publication

CoreRobotics: An object-oriented C++ library with cross-language wrappers for cross-platform robot control
Published
February 06, 2018
Volume 3, Issue 22, Page 489
Authors
Parker Owan ORCID
University of Washington
Cameron Devine
University of Washington
W. Tony Piaskowy
University of Washington
Editor
Daniel S. Katz ORCID
Tags
robotics control realtime

CodeMeta (codemeta.json)

{
  "@context": "https://raw.githubusercontent.com/codemeta/codemeta/master/codemeta.jsonld",
  "@type": "Code",
  "author": [],
  "identifier": "",
  "codeRepository": "https://gitlab.com/powan/CoreRobotics",
  "datePublished": "2017-11-21",
  "dateModified": "2017-11-21",
  "dateCreated": "2017-11-21",
  "description": "Open source software for real time robot control.",
  "keywords": "robotics, control, realtime",
  "license": "BSD",
  "title": "CoreRobotics",
  "version": "v0.9.1"
}

GitHub Events

Total
  • Watch event: 2
  • Fork event: 1
Last Year
  • Watch event: 2
  • Fork event: 1

Committers

Last synced: 7 months ago

All Time
  • Total Commits: 448
  • Total Committers: 5
  • Avg Commits per committer: 89.6
  • Development Distribution Score (DDS): 0.239
Past Year
  • Commits: 0
  • Committers: 0
  • Avg Commits per committer: 0.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Parker Owan o****n@u****u 341
Cameron Devine c****n@g****m 90
Kevin Bray k****y@u****u 8
Tony Piaskowy a****2@g****m 7
barcstudent1329863 b****3@g****m 2
Committer Domains (Top 20 + Academic)
uw.edu: 2

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 8
  • Total pull requests: 2
  • Average time to close issues: about 1 month
  • Average time to close pull requests: about 1 hour
  • Total issue authors: 1
  • Total pull request authors: 1
  • Average comments per issue: 4.38
  • Average comments per pull request: 0.0
  • Merged pull requests: 2
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • bmagyar (8)
Pull Request Authors
  • CoreRobotics (2)
Top Labels
Issue Labels
Pull Request Labels