This is the main C++ driver for the [Darwin OP robot](http://emanual.robotis.com/docs/en/platform/op/getting_started/). It also provides libraries to compute the forward and inverse kinematics of both arms and legs. It uses a serial interface implementing the Dynamixel protocol to communicate with the subcontroller of the Darwin OP robot, which is the one who does all the work. This driver is only compatible with a [custom firmware](https://gitlab.iri.upc.edu/humanoides/darwin/darwin_stm32_fw) developed at IRI, but is it not compatible with the default firmware.
* [cmake](https://www.cmake.org "CMake's Homepage"), a cross-platform build system.
* [doxygen](http://www.doxygen.org "Doxygen's Homepage") and [graphviz](http://www.graphviz.org "Graphviz's Homepage") to generate the documentation.
*stdc++andpthreadlibraries.
* [Eigen](http://eigen.tuxfamily.org/index.php?title=Main_Page), to handle matrix operations for the leg kinemtics library.
* [KDL](http://wiki.ros.org/orocos_kinematics_dynamics), to handle kinematics chains for the arm kinemtics library.
It is recommended that the last two dependencies (Eigen and KDL) be installed as part of the ROS (Robotics Operating System) installation. Check [this](http://wiki.ros.org/kinetic/Installation/Ubuntu) for instructions on how to setup ROS on you system. The only tested version of ROS is Kinetic with Ubuntu 16.04.
This package also requires of the following IRI libraries:
* [iriutils](https://gitlab.iri.upc.edu/labrobotica/algorithms/iriutils), a library with basic tools developed a IRI.
* [comm](https://gitlab.iri.upc.edu/labrobotica/drivers/comm), a library with drivers for basic communication interfaces developed at IRI.
* [dynamixel](https://gitlab.iri.upc.edu/labrobotica/drivers/dynamixel) (multi-instance branch), a library which implements the dynamixel protocol developed at IRI.
Although it is not necessary to build this driver, the [Darwin OP firmware](https://gitlab.iri.upc.edu/humanoides/darwin/darwin_stm32_fw) is also necessary to use it.
## Compilation and installation
Download this repository and create a build folder inside:
```mkdirbuild```
Inside the build folder execute the following commands: