CoreRobotics
CoreRobotics: An object-oriented C++ library with cross-language wrappers for cross-platform robot control - Published in JOSS (2018)
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
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
Metadata Files
README.md
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
- [Required] CMake build utility https://cmake.org/
- [Required] Eigen (vector/matrix math header only) http://eigen.tuxfamily.org/
- [Required] Boost libraries (header only) http://www.boost.org/
- [Optional] Google test https://github.com/google/googletest)
- [Optional] Open scene graph (OSG) http://www.openscenegraph.org/
- [Optional] Doxygen http://www.doxygen.nl/
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
- Clone the CoreRobotics repository (first
cdinto the parent directory you want to put CoreRobotics, here we use the root$ cd ~/ $ git clone https://gitlab.com/powan/CoreRobotics.git - Set up the cmake build folder
$ mkdir ~/CoreRobotics/build $ cd ~/CoreRobotics/build - Run cmake
$ cmake -D[option]=true -G "<compiler>" ..
with options:allto set up all targets,fullto build deprecated static library (all "CR" prefix classes),libto compile library,teststo build the tests,examplesto build the examples,pythonto set python version/set wrapper target lib,matlabto 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
- 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 - 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
- Repositories: 1
- Profile: https://github.com/CoreRobotics
JOSS Publication
CoreRobotics: An object-oriented C++ library with cross-language wrappers for cross-platform robot control
Authors
University of Washington
University of Washington
Tags
robotics control realtimeCodeMeta (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
Top Committers
| Name | 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)
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)
