• Stars
    star
    214
  • Rank 184,678 (Top 4 %)
  • Language
    C++
  • License
    BSD 3-Clause "New...
  • Created over 9 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Artificial Intelligence for Kinematics, Dynamics, and Optimization

AIKIDO - AI for KIDO Build Status codecov Codacy BadgeDOI

⚠️ Warning: AIKIDO is under heavy development. These instructions are primarily for reference by the developers.

AIKIDO is a C++ library, complete with Python bindings, for solving robotic motion planning and decision making problems. This library is tightly integrated with DART for kinematic/dynamics calculations and OMPL for motion planning. AIKIDO optionally integrates with ROS, through the suite of aikido_ros packages, for execution on real robots.

Building from Source

Dependencies

AIKIDO depends on ROS. You should install ROS by adding the ROS repository to your sources.list as follows. We encourage users to install noetic with at least the following packages:

$ sudo apt install ros-noetic-actionlib ros-noetic-geometry-msgs ros-noetic-interactive-markers ros-noetic-roscpp ros-noetic-std-msgs ros-noetic-tf ros-noetic-trajectory-msgs ros-noetic-visualization-msgs

AIKIDO also depends on CMake, Boost, DART (version 6.8.5 or above), OMPL, yaml-cpp, tinyxml2, pr-control-msgs, libmicrohttpd, and the Python development headers (python-dev on Debian systems). DART and AIKIDO both make heavy use of C++14 and require a modern compiler.

On Ubuntu Focal using CMake

You should install the ROS packages as described above to build all the ROS-dependent AIKIDO components (e.g., aikido-control-ros).

Install the other dependencies:

$ sudo add-apt-repository ppa:dartsim/ppa
$ sudo add-apt-repository ppa:personalrobotics/ppa
$ sudo apt-get update
$ sudo apt-get install cmake build-essential libboost-filesystem-dev libdart6-optimizer-nlopt-dev libdart6-utils-dev libdart6-utils-urdf-dev libmicrohttpd-dev libompl-dev libtinyxml2-dev libyaml-cpp-dev pr-control-msgs

Once the dependencies are installed, you can build and install AIKIDO using CMake:

$ mkdir build
$ cd build
$ cmake ..
$ make  # you may want to build AIKIDO using multi-core by executing `make -j4`
$ sudo make install

AIKIDO includes several optional components that depend on ROS. While we suggest building AIKIDO in a Catkin workspace (see below) to enable the ROS components, it is also possible to build those components in a standalone build. To do so, source the setup.bash file in your Catkin workspace before running the above commands, e.g.:

$ . /path/to/my/workspace/setup.bash

On Ubuntu Focal using Catkin

It is also possible to build AIKIDO as a third-party package inside a Catkin workspace. To do so, clone AIKIDO into your Catkin workspace and use the catkin build command like normal.

If you are using the older catkin_make command, then you must build your workspace with catkin_make_isolated. This may dramatically increase your build time, so we strongly recommend that you use catkin build, which is provided by the catkin_tools package, if possible.

On macOS using CMake

Please install Homebrew as described above, then you can easily install the dependencies as follows:

$ cd <aikido_directory>
$ brew bundle

Once the dependencies are installed, you can build and install AIKIDO using CMake:

$ cd <aikido_directory>
$ mkdir build
$ cd build
$ cmake ..
$ make  # you may want to build AIKIDO using multi-core by executing `make -j4`
$ sudo make install

Code Style

Please follow the AIKIDO style guidelines when making a contribution.

License

AIKIDO is licensed under a BSD license. See LICENSE for more information.

Authors

AIKIDO is developed by the Personal Robotics Lab in the Paul G. Allen School of Computer Science and Engineering at the University of Washington. The library was started by Michael Koval (@mkoval) and Pras Velagapudi (@psigen). It has received major contributions from Shushman Choudhury (@Shushman), Ethan Gordon (@egordon), Brian Hou (@brianhou), Aaron Johnson (@aaronjoh), Jennifer King (@jeking), Gilwoo Lee (@gilwoolee), Jeongseok Lee (@jslee02), and Clint Liddick (@ClintLiddick). We also would like to thank Michael Grey (@mxgrey) and Jeongseok Lee (@jslee02) for making changes to DART to better support AIKIDO.

More Repositories

1

OpenChisel

An open-source version of the Chisel chunked TSDF library.
C++
444
star
2

prpy

Python utilities used by the Personal Robotics Laboratory.
Python
58
star
3

apriltags

ROS wrapper for the Apriltags visual fiducial tracker
PostScript
39
star
4

or_ompl

OpenRAVE bindings for OMPL motion planning algorithms.
C++
26
star
5

kinfu_ros

kinfu_ros is a version of kinfu_remake for generic ROS depth cameras
C++
26
star
6

apriltags_rgbd_node

more accurate apriltag detection using the depth sensor
Python
25
star
7

appl

Mirror of the Approximate POMDP Planning (APPL) C++ toolkit for POMDP planning.
C++
20
star
8

or_urdf

OpenRAVE plugin for loading URDF and SRDF files.
C++
19
star
9

tsr

Python Library for using Task Space Regions
Python
17
star
10

or_cdchomp

OpenRAVE plugin that implements the CHOMP trajectory optimizer.
C++
15
star
11

dartpy

🎯 🐍 Python bindings for the Dynamic Animation and Robotics Toolkit
C++
15
star
12

chimera

🐍 A CLI tool for generating Boost.Python/pybind11 bindings from C/C++
C++
13
star
13

LRA-star

Lazy Receding Horizon A*
C++
13
star
14

collaborative_manipulation_corpus

A Corpus of Natural Language Instructions for Collaborative Manipulation
Python
12
star
15

CCIL

Code release and project site for "CCIL: Continuity-based Data Augmentation for Corrective Imitation Learning"
Python
12
star
16

k2_bridge

Server application for Kinect for Windows v2
C#
10
star
17

openvr_ros_bridge

Publish from openvr/windows to ROS over rosbridge
Terra
10
star
18

boost_numpy_eigen

🐍 Python bindings for conversion between numpy and Eigen objects
C++
10
star
19

lego

LEGO : Leveraging Experience with Graph Oracles
Jupyter Notebook
9
star
20

gazetracking

Eye gaze tracking using Pupil Labs head-mounted tracker.
CMake
8
star
21

libada

C++ library for simulating and running ADA based on DART and AIKIDO
C++
8
star
22

pr_assets

OpenRAVE data used by the Personal Robotics Lab at CMU.
Python
7
star
23

linemod

C++
6
star
24

lemur

Lazily Evaluated Marginal Utility Roadmaps
C++
6
star
25

pr_behavior_tree

A simple python behavior tree library based on coroutines
Python
6
star
26

or_parabolicsmoother

An OpenRAVE Plugin for Parabolic Smoothing
C++
6
star
27

herb_description

URDF and SRDF descriptions of HERB.
Python
5
star
28

chisel_msgs

Breaking out chisel ROS messages into their own package to be used remotely
CMake
5
star
29

or_rviz

OpenRAVE viewer plugin that publishes the environment to RViz as InteractiveMarkers.
C++
5
star
30

pr-rosinstalls

wstool .rosinstall files for various projects or setups
4
star
31

gls

Generalized Lazy Search
C++
4
star
32

herbpy

Python library for interacting with HERB.
Python
4
star
33

comps

Fork of the Constrained Manipulation Planning Suite (CoMPS) by Dmitry Berenson
C++
4
star
34

moped

C
4
star
35

ada_feeding

Robot-assisted feeding demos and projects for the ADA robot
Python
4
star
36

batching_pomp

Research code repository that implements anytime geometric motion planning on large dense roadmaps with densification strategies and searching via the POMP algorithm.
C++
4
star
37

web-interface-examples

Examples of connecting ROS to web technologies
Python
3
star
38

pr_ros_controllers

ros_control controller plugins developed by the Personal Robotics Lab at CMU
C++
3
star
39

TouchFilter2D

Experiments with touch in 2D using openframeworks
C++
3
star
40

joint_state_recorder

Record ROS JointState messages and index them by time.
C++
3
star
41

rewd_controllers

master
C++
3
star
42

docker-public-images

Public Docker images used in PRL codebase
Makefile
3
star
43

stargazer

ROS driver for the Hagisonic StarGazer
Python
3
star
44

or_fcl

OpenRAVE bindings for the Flexible Collision Checking Library (FCL).
C++
3
star
45

wampy

Python library for interacting with Barrett WAM arm in OpenRAVE.
Python
3
star
46

offscreen_render

A utility for rendering OpenRAVE kinbodies offscreen to get properties like depth, occlusion, color, etc.
C++
3
star
47

bayesian_policy_optimization

2
star
48

libhuman

C++
2
star
49

or_trajopt

OpenRAVE plugin to expose TrajOpt code as an OpenRAVE planner
Python
2
star
50

PRLPlot

A collection of simple opinionated plotting tools for generating high-quality plots for scientific papers.
Python
2
star
51

ada_assistance_policy

Python
2
star
52

benchmarks

Benchmarks to measure OpenRAVE's performance.
C++
2
star
53

pubs

BibTeX entries of publications
TeX
2
star
54

owd

OpenWAM ROS driver for controlling the Barrett WAM and BarrettHand.
C++
2
star
55

softkinetic_driver

A driver for the depthsense325 adapted specifically for ADA. Based on a driver from IPA.
C++
2
star
56

ada_ros2

ROS2 Hardware Interface and Description for the ADA Robot
Python
2
star
57

pointcloud_filter

Filters the point cloud data from the kinect sensor
C++
1
star
58

uvc_engine_pupil

C++
1
star
59

food_detector

Python
1
star
60

k2_client

ROS node for a Kinect 2 via a TCP server.
C++
1
star
61

btclient

Barrett WAM Client Library and Examples
C
1
star
62

ada_teleoperation

Python
1
star
63

simtrack_msgs

Messages for the simtrack tracking package.
CMake
1
star
64

ada_description

URDF and SRDF descriptions of ADA
Shell
1
star
65

face_detection

Repository for detecting facial features and head pose
C++
1
star
66

homebrew-tap

🍺 Homebrew tap for Personal Robotics Laboratory software
Ruby
1
star
67

ada_mouth

CMake
1
star
68

pytorch_pix2food

Generative adversarial network that predicts the position and shape of continuous food after pushing action.
Jupyter Notebook
1
star
69

or_plugin

Utility library for creating OpenRAVE plugins.
C++
1
star
70

ada

Software for ADA, the Assistive Dextrous Arm developed by the Personal Robotics Lab at CMU.
Python
1
star
71

ros_control_client

Python and C++ libraries for commanding ros_control
Python
1
star
72

conban_spanet

Linear contextual bandit based on SPANet
Python
1
star
73

feeding_web_interface

Web interface for the robot-assisted feeding system
JavaScript
1
star
74

ork_renderer

C++
1
star
75

ada_meal_scenario

A set of scripts for a meal serving scenario using Ada.
Python
1
star
76

forque_sensor_hardware

Reads and manages the Force/Torque sensor of the Forque
C++
1
star
77

openrave_catkin

Utilities for building OpenRAVE plugins in a Catkin workspace.
CMake
1
star
78

mouse_as_joystick

Wrapper to read from a mouse (e.g. bluetooth mouse) and publish ros messages
Python
1
star
79

or_octomap

or_octomap is a collision checker and sensor system plugin for OpenRAVE, intended to allow OpenRAVE meshes to be collision checked against octrees.
C++
1
star