diff --git a/ReadMe.md b/ReadMe.md new file mode 100644 index 0000000000000000000000000000000000000000..a9a5fd8c700952bc9aefe1a72696f0664525ae3f --- /dev/null +++ b/ReadMe.md @@ -0,0 +1,108 @@ +Dynamixel {#mainpage} +========= + +## Description + +This library provide a server to handle all the devices connected to a Dynamixel Bus and also low level read and write functions to access each one of this devices. + +The server allows to: + +- Scan the bus for devices: it checks all the possible addresses (from 0 to 254) for all the possible frequencies. Once a device responds in a given frequency, all other frequencies are discarded. + +- Change the ID of a given device on the bus. By default all devices came with the same address (0) and it is necessary to change it in order to have multiple devices on the same bus. + +- Change the bus baudrate. Some device have a slow baudrate by default and to achive the peak performance it is necessary to change it. + +For each device, the following operations are provided: + +- Read and write to any 8 or 16 bit register. Allow access to all the device registers. + +- Synchronized write operations. Allow loading a given value to a given register to all the devices at the same time. The value is sent to the device using a REG_WRITE operation, but it does not take effect until the ACTION command is sent. + +- Broadcast a command to several devices. + +## Dependencies + +This package requires of the following system libraries and packages + +* [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++ and pthread libraries. + +Under linux all of these utilities are available in ready-to-use packages. + +Under MacOS most of the packages are available via [fink](http://www.finkproject.org/ "Fink's Homepage") + +This package also requires of the following IRI libraries: + +* [iriutils](https://gitlab.iri.upc.edu/labrobotica/algorithms/iriutils "iriutils gitlab page"), a set of basic tools. + +* [comm](https://gitlab.iri.upc.edu/labrobotica/drivers/comm "comm gitlab page"), a set of basic communication drivers. + +## Compilation and installation + +Download this repository and create a build folder inside: + +``` mkdir build ``` + +Inside the build folder execute the following commands: + +``` cmake .. ``` + +The default build mode is DEBUG. That is, objects and executables include debug information. + +The RELEASE build mode optimizes for speed. To build in this mode execute instead +``` cmake .. -DCMAKE_BUILD_TYPE=RELEASE ``` + +The release mode will be kept until next time cmake is executed. + +``` make ``` + +In case no errors are reported, the generated libraries (if any) will be located at the +_lib_ folder and the executables (if any) will be located at the _bin_ folder. + +In order to be able to use the library, it it necessary to copy it into the system. +To do that, execute + +``` make install ``` + +as root and the shared libraries will be copied to */usr/local/lib/iridrivers* directory +and the header files will be copied to */usr/local/include/iridrivers* directory. At +this point, the library may be used by any user. + +To remove the library from the system, exceute + +``` make uninstall ``` + +as root, and all the associated files will be removed from the system. + +To generate the documentation execute the following command: + +``` make doc ``` + +## How to use it + +To use this library in an other library or application, in the CMakeLists.txt file, first it is necessary to locate if the library has been installed or not using the following command + +``` FIND_PACKAGE(project_name) ``` + +In the case that the package is present, it is necessary to add the header files directory to the include directory path by using + +``` INCLUDE_DIRECTORIES(${project_name_INCLUDE_DIR}) ``` + +and it is also necessary to link with the desired libraries by using the following command + +``` TARGET_LINK_LIBRARIES(<executable name> ${project_name_LIBRARY}) ``` + +## Disclaimer + +Copyright (C) 2009-2018 Institut de Robòtica i Informà tica Industrial, CSIC-UPC. +Mantainer author_name (author_email) + +This package is distributed in the hope that it will be useful, but without any warranty. It is provided "as is" without warranty of any kind, either expressed or implied, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose. The entire risk as to the quality and performance of the program is with you. should the program prove defective, the GMR group does not assume the cost of any necessary servicing, repair or correction. + +In no event unless required by applicable law the author will be liable to you for damages, including any general, special, incidental or consequential damages arising out of the use or inability to use the program (including but not limited to loss of data or data being rendered inaccurate or losses sustained by you or third parties or a failure of the program to operate with any other programs), even if the author has been advised of the possibility of such damages. + +You should have received a copy of the GNU Lesser General Public License +along with this program. If not, see <http://www.gnu.org/licenses/> + diff --git a/ReadMe.txt b/ReadMe.txt deleted file mode 100644 index 0efa41f124089e7351ef129e8974d3fecf9ee571..0000000000000000000000000000000000000000 --- a/ReadMe.txt +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (C) 2009-2010 Institut de Robòtica i Informà tica Industrial, CSIC-UPC. -Author shernand (shernand@iri.upc.edu) -All rights reserved. - -This file is part of Generic dynamixel driver library -Generic dynamixel driver library is free software: you can redistribute it and/or modify -it under the terms of the GNU Lesser General Public License as published by -the Free Software Foundation, either version 3 of the License, or -at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public License -along with this program. If not, see <http://www.gnu.org/licenses/> - - diff --git a/doc/doxygen.conf b/doc/doxygen.conf index 347af2ef86bf4786d49b13d48c12146b0d001b01..ba510ce08e1b9d384c42521222a0224b97699521 100644 --- a/doc/doxygen.conf +++ b/doc/doxygen.conf @@ -83,7 +83,7 @@ WARN_LOGFILE = # configuration options related to the input files #--------------------------------------------------------------------------- INPUT = ../src \ - ../doc/main.dox + ../ReadMe.md INPUT_ENCODING = UTF-8 FILE_PATTERNS = *.c \ *.h \ diff --git a/doc/main.dox b/doc/main.dox deleted file mode 100644 index 652f3d75dc5d585a5c4666592c11a525072af8db..0000000000000000000000000000000000000000 --- a/doc/main.dox +++ /dev/null @@ -1,130 +0,0 @@ -/*! \mainpage Generic dynamixel driver - - \section Introduction - - This library provide a server to handle all the devices connected to a Dynamixel Bus and also low level read and write functions to access each one of this devices. - - The server allows to: - - - Scan the bus for devices: it checks all the possible addresses (from 0 to 254) for all the possible frequencies. Once a device responds in a given frequency, all other frequencies are discarded. - - - Change the ID of a given device on the bus. By default all devices came with the same address (0) and it is necessary to change it in order to have multiple devices on the same bus. - - - Change the bus baudrate. Some device have a slow baudrate by default and to achive the peak performance it is necessary to change it. - - For each device, the following operations are provided: - - - Read and write to any 8 or 16 bit register. Allow access to all the device registers. - - - Synchronized write operations. Allow loading a given value to a given register to all the devices at the same time. The value is sent to the device using a REG_WRITE operation, but it does not take effect until the ACTION command is sent. - - - Broadcast a command to several devices. - - There exists a Graphical User Interface (GUI) application which allows easy access to all the features provided by this library. This application can be downloaded from <A href="http://wikiri.upc.es/index.php/Dynamixel_Manager">here</a> - - \subsection Pre-Requisites - - This package requires of the following libraries and packages - - <A href="http://www.cmake.org">cmake</A>, a cross-platform build system. - - <A href="http://www.doxygen.org">doxygen</a> and - <A href="http://www.graphviz.org">graphviz</a> to generate the documentation. - - stdc++, - - <A href="http://wikiri.upc.es/index.php/Utilities_library">utilities library</a>, a set of basic tools to develop software. - - <A href="http://wikiri.upc.es/index.php/Communications_library">communications library</a>, a set of comunication drivers used to access the dynamixel bus. - . - - Under MacOS most of the packages are available via <a href="http://www.finkproject.org/">fink</a>. <br> - - \subsection Compilation - - Just download this package, uncompress it, and execute - - cd build - - cmake .. - . - to generate the makefile and then - - make - . - to obtain the shared library (in this case called <em>iriutils.so</em>) and - also all the example programs. - - The <em>cmake</em> only need to be executed once (make will automatically call - <em>cmake</em> if you modify one of the <em>CMakeList.txt</em> files). - - To generate this documentation type - - make doc - . - - The files in the <em>build</em> directory are genetated by <em>cmake</em> - and <em>make</em> and can be safely removed. - After doing so you will need to call cmake manually again. - - \subsection Configuration - - The default build mode is DEBUG. That is, objects and executables - include debug information. - - The RELEASE build mode optimizes for speed. To build in this mode - execute - - cmake .. -DCMAKE_BUILD_TYPE=RELEASE - . - The release mode will be kept until next time cmake is executed. - - \subsection Installation - - In order to be able to use the library, it it necessary to copy it into the system. - To do that, execute - - - make install - . - - as root and the shared libraries will be copied to <em>/usr/local/lib/iriutils</em> directory - and the header files will be copied to <em>/usr/local/include/iriutils</em> dierctory. At - this point, the library may be used by any user. - - To remove the library from the system, exceute - - make uninstall - . - as root, and all the associated files will be removed from the system. - - \section Customization - - To build a new application using these library, first it is necessary to locate if the library - has been installed or not using the following command - - - FIND_PACKAGE(dynamixel) - - In the case that the package is present, it is necessary to add the header files directory to - the include directory path by using - - - INCLUDE_DIRECTORIES(${dynamixel_INCLUDE_DIR}) - - Finally, it is also nevessary to link with the desired libraries by using the following command - - - TARGET_LINK_LIBRARIES(<executable name> ${dynamixel_LIBRARY}) - . - - All these steps are automatically done when the new project is created following the instructions - in <A href="http://wikiri.upc.es/index.php/Create_a_new_development_project">here</a> - - \section License - - This package is licensed under a - <a href="http://www.gnu.org/licenses/lgpl.html"> - LGPL 3.0 License</a>. - - \section Disclaimer - - This is free software: you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation, either version 3 of the License, or - at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. - - */