From 068689e53c7cf79eae2f120f215a5bde2de47bf7 Mon Sep 17 00:00:00 2001 From: Dorian Goepp Date: Tue, 17 Nov 2015 17:38:11 +0100 Subject: [PATCH 01/68] add more details --- README.md | 41 --------------------------- README.rst | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+), 41 deletions(-) delete mode 100644 README.md create mode 100644 README.rst diff --git a/README.md b/README.md deleted file mode 100644 index 5b721046..00000000 --- a/README.md +++ /dev/null @@ -1,41 +0,0 @@ -libdynamixel -============ - -libdynamixel is a C++ interface to the dynamixel actuators. Currently, we have library code and an utility that uses it for a few tasks like changing the IDs, the baudrate and reading angles. - -The work is in progress, the documentation too, please be clement. - -Compilation and installation -============================ -The build system for this library is Waf. Don't run away yet. It has the big advantage of requiring no more than Python installed on your computer. If you run a GNU/Linux OS or Mac OS, you should already have it. Here is how we compile and install it: - -1. configuration - run `./waf configure` and add `--prefix PATH/TO/INSTALL` if you want to install it to a specific location -2. compilation - is as easy as `./waf` -3. installation - is simply done with `./waf install`, with the required rights (might need sudo if you install globally) -4. setup the proper authorisation - please ensure that you have the proper rights to access the serial interfaces. On GNU/Linux, you might have to add your user to the `dialout` group and log out. - -udev rule for USB2AX adapter -============================ -If you want your USB2AX serial interface to appear in `/dev` as `usb2axN` (where N is a kernel-attributed integer), you can install the udev rule. It is as simple as moving the `usb2ax.rules` file in this repository to the folder for the udev rules. For ubuntu, it is `/etc/udev/rules.d`. - -Using the utility -================= -Since we are right now writing a brand new utility, the user interface is not settled yet and some commands are not implemented. You can still play with the binary `dynamixel2` (the name will change) with the `--help [command]` option to learn how to use it. - -> **Caution:** the `get-speed` command gives you the reference speed used in the control loop (if any) and not the current rotational speed of the actuator. - -Projects using this library -=========================== - -Internal projects ------------------ -- omnigrasper_bo_recovery -- [dynamixel_control_hw](https://github.com/resibots/dynamixel_control_hw/) - -Other projects --------------- -We would be pleased to hear from you if you use this library in one of your projects. diff --git a/README.rst b/README.rst new file mode 100644 index 00000000..2a35924c --- /dev/null +++ b/README.rst @@ -0,0 +1,81 @@ +libdynamixel +============ +libdynamixel is a C++ interface to the `Dynamixel `_ actuators. It aims at being fast and working with most Dynamixels. This includes the Dynamixel Pro actuators. + +Currently, we have library code and a utility that uses it to offer a few functionalities like changing the IDs, the control mode (wheel or joint) and the baudrate. + +Features +======== +- Dynamixel series AX, MX, EX, XL and Pro are supported +- support for all instructions and messages of both version 1 and 2 of the Dynamixel communication protocol +- full C++ api + +Building +======== +Dependencies : + +- python2.x +- C++ +- Boost C++ + +.. highlight:: shell + +The build system for this library is Waf. Don't run away yet. It has the big advantage of requiring no more than Python installed on your computer. If you run a GNU/Linux OS or Mac OS, you should already have it. Here is how we compile and install it: + +1. configuration + run ``./waf configure`` and add ``--prefix PATH/TO/INSTALL`` if you want to install it to a specific location +2. compilation + is as easy as ``./waf`` +3. installation + is simply done with ``./waf install``, with the required rights (might need sudo if you install globally) +4. setup the proper authorisation + please ensure that you have the proper rights to access the serial interfaces. On GNU/Linux, you might have to add your user to the `dialout` group and log out. + +You get the ``dynamixel`` toolset and the demo programms compiled in the ``build/default/src`` folder. + +For now, the demo programs are not at a working stage and should not be used. Conversely, ``dynamixel`` is a working program that we use regularly. + +udev rule for USB2AX adapter +============================ +For Gnu/Linux only. + +If you want your USB2AX serial interface to appear in ``/dev`` as ``usb2axN`` (where N is a kernel-attributed integer), you can install the udev rule. It is as simple as moving the ``usb2ax.rules`` file in this repository to the folder for the udev rules. For ubuntu, it is ``/etc/udev/rules.d``. + +Using the utility +================= +Since we are right now writing a brand new utility, the user interface is not settled yet and some commands are not implemented. You can still play with the binary `dynamixel2` (the name will change) with the `--help [command]` option to learn how to use it. + +> **Caution:** the `get-speed` command gives you the reference speed used in the control table (if any) and not the current rotational speed of the actuator. + +Further documentation +===================== +The documentation for libdynamixel is being written and should be published soon. + +Support +======= +This library is actively used and regularly developped. If you need some help, feel free to `fill an issue `_ on this repository. We'll do our best to be responsive. + +Projects using this library +=========================== + +Internal projects +----------------- +- `dynamixel_control_hw`_ +- omnigrasper_bo_recovery + +Other projects +-------------- +We would be pleased to hear from you if you use this library in one of your projects. + +Alternative software +==================== + +Inria FLOWERS team developped `pybot `_, a python library to control a Dynamixel-based robot. + +Let us know if you developped an other library for Dynamixels. + +License and authors +=================== +This work is distributed under the terms of the `CeCILL-C `_ license. © UPMC and INRIA. + +The authors for this library are Jean-Baptiste Mouret, Antoine Cully, Federico Allocati and Dorian Goepp. \ No newline at end of file From df3cb1889e5f5109fda232b2457eb6429d2ad2cf Mon Sep 17 00:00:00 2001 From: Dorian Goepp Date: Tue, 17 Nov 2015 17:38:48 +0100 Subject: [PATCH 02/68] Skeleton for the documentation and ignore generated files --- .gitignore | 6 +- doc/Makefile | 192 +++++++++++++++++++++++++++++++++ doc/conf.py | 294 ++++++++++++++++++++++++++++++++++++++++++++++++++ doc/index.rst | 22 ++++ doc/make.bat | 263 ++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 776 insertions(+), 1 deletion(-) create mode 100644 doc/Makefile create mode 100644 doc/conf.py create mode 100644 doc/index.rst create mode 100644 doc/make.bat diff --git a/.gitignore b/.gitignore index df8e3ea7..4988452d 100644 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,8 @@ build/ *.pyc # Clang-format style files -.clang-format \ No newline at end of file +.clang-format + +# Generated content of the documentation +_build/ + diff --git a/doc/Makefile b/doc/Makefile new file mode 100644 index 00000000..00442584 --- /dev/null +++ b/doc/Makefile @@ -0,0 +1,192 @@ +# Makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +PAPER = +BUILDDIR = _build + +# User-friendly check for sphinx-build +ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) +$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) +endif + +# Internal variables. +PAPEROPT_a4 = -D latex_paper_size=a4 +PAPEROPT_letter = -D latex_paper_size=letter +ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . +# the i18n builder cannot share the environment and doctrees with the others +I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . + +.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest coverage gettext + +help: + @echo "Please use \`make ' where is one of" + @echo " html to make standalone HTML files" + @echo " dirhtml to make HTML files named index.html in directories" + @echo " singlehtml to make a single large HTML file" + @echo " pickle to make pickle files" + @echo " json to make JSON files" + @echo " htmlhelp to make HTML files and a HTML help project" + @echo " qthelp to make HTML files and a qthelp project" + @echo " applehelp to make an Apple Help Book" + @echo " devhelp to make HTML files and a Devhelp project" + @echo " epub to make an epub" + @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" + @echo " latexpdf to make LaTeX files and run them through pdflatex" + @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" + @echo " text to make text files" + @echo " man to make manual pages" + @echo " texinfo to make Texinfo files" + @echo " info to make Texinfo files and run them through makeinfo" + @echo " gettext to make PO message catalogs" + @echo " changes to make an overview of all changed/added/deprecated items" + @echo " xml to make Docutils-native XML files" + @echo " pseudoxml to make pseudoxml-XML files for display purposes" + @echo " linkcheck to check all external links for integrity" + @echo " doctest to run all doctests embedded in the documentation (if enabled)" + @echo " coverage to run coverage check of the documentation (if enabled)" + +clean: + rm -rf $(BUILDDIR)/* + +html: + $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." + +dirhtml: + $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." + +singlehtml: + $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml + @echo + @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." + +pickle: + $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle + @echo + @echo "Build finished; now you can process the pickle files." + +json: + $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json + @echo + @echo "Build finished; now you can process the JSON files." + +htmlhelp: + $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp + @echo + @echo "Build finished; now you can run HTML Help Workshop with the" \ + ".hhp project file in $(BUILDDIR)/htmlhelp." + +qthelp: + $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp + @echo + @echo "Build finished; now you can run "qcollectiongenerator" with the" \ + ".qhcp project file in $(BUILDDIR)/qthelp, like this:" + @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/libdynamixel.qhcp" + @echo "To view the help file:" + @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/libdynamixel.qhc" + +applehelp: + $(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp + @echo + @echo "Build finished. The help book is in $(BUILDDIR)/applehelp." + @echo "N.B. You won't be able to view it unless you put it in" \ + "~/Library/Documentation/Help or install it in your application" \ + "bundle." + +devhelp: + $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp + @echo + @echo "Build finished." + @echo "To view the help file:" + @echo "# mkdir -p $$HOME/.local/share/devhelp/libdynamixel" + @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/libdynamixel" + @echo "# devhelp" + +epub: + $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub + @echo + @echo "Build finished. The epub file is in $(BUILDDIR)/epub." + +latex: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo + @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." + @echo "Run \`make' in that directory to run these through (pdf)latex" \ + "(use \`make latexpdf' here to do that automatically)." + +latexpdf: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo "Running LaTeX files through pdflatex..." + $(MAKE) -C $(BUILDDIR)/latex all-pdf + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." + +latexpdfja: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo "Running LaTeX files through platex and dvipdfmx..." + $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." + +text: + $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text + @echo + @echo "Build finished. The text files are in $(BUILDDIR)/text." + +man: + $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man + @echo + @echo "Build finished. The manual pages are in $(BUILDDIR)/man." + +texinfo: + $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo + @echo + @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." + @echo "Run \`make' in that directory to run these through makeinfo" \ + "(use \`make info' here to do that automatically)." + +info: + $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo + @echo "Running Texinfo files through makeinfo..." + make -C $(BUILDDIR)/texinfo info + @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." + +gettext: + $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale + @echo + @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." + +changes: + $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes + @echo + @echo "The overview file is in $(BUILDDIR)/changes." + +linkcheck: + $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck + @echo + @echo "Link check complete; look for any errors in the above output " \ + "or in $(BUILDDIR)/linkcheck/output.txt." + +doctest: + $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest + @echo "Testing of doctests in the sources finished, look at the " \ + "results in $(BUILDDIR)/doctest/output.txt." + +coverage: + $(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(BUILDDIR)/coverage + @echo "Testing of coverage in the sources finished, look at the " \ + "results in $(BUILDDIR)/coverage/python.txt." + +xml: + $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml + @echo + @echo "Build finished. The XML files are in $(BUILDDIR)/xml." + +pseudoxml: + $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml + @echo + @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." diff --git a/doc/conf.py b/doc/conf.py new file mode 100644 index 00000000..7dadce8d --- /dev/null +++ b/doc/conf.py @@ -0,0 +1,294 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# libdynamixel documentation build configuration file, created by +# sphinx-quickstart on Tue Nov 17 15:51:26 2015. +# +# This file is execfile()d with the current directory set to its +# containing dir. +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +import sys +import os +import shlex + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +#sys.path.insert(0, os.path.abspath('.')) + +# -- General configuration ------------------------------------------------ + +# If your documentation needs a minimal Sphinx version, state it here. +#needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + 'sphinx.ext.intersphinx', + 'sphinx.ext.todo', + 'sphinx.ext.mathjax', + 'sphinx.ext.ifconfig', +] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# source_suffix = ['.rst', '.md'] +source_suffix = '.rst' + +# The encoding of source files. +#source_encoding = 'utf-8-sig' + +# The master toctree document. +master_doc = 'index' + +# General information about the project. +project = 'libdynamixel' +copyright = '2015, Jean-Baptiste Mouret, Antoine Cully, Dorian Goepp' +author = 'Jean-Baptiste Mouret, Antoine Cully, Dorian Goepp' + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. +# +# The short X.Y version. +version = '1.0' +# The full version, including alpha/beta/rc tags. +release = '1.0' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +language = None + +# There are two options for replacing |today|: either, you set today to some +# non-false value, then it is used: +#today = '' +# Else, today_fmt is used as the format for a strftime call. +#today_fmt = '%B %d, %Y' + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +exclude_patterns = ['_build'] + +# The reST default role (used for this markup: `text`) to use for all +# documents. +#default_role = None + +# If true, '()' will be appended to :func: etc. cross-reference text. +#add_function_parentheses = True + +# If true, the current module name will be prepended to all description +# unit titles (such as .. function::). +#add_module_names = True + +# If true, sectionauthor and moduleauthor directives will be shown in the +# output. They are ignored by default. +#show_authors = False + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + +# A list of ignored prefixes for module index sorting. +#modindex_common_prefix = [] + +# If true, keep warnings as "system message" paragraphs in the built documents. +#keep_warnings = False + +# If true, `todo` and `todoList` produce output, else they produce nothing. +todo_include_todos = True + + +# -- Options for HTML output ---------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +html_theme = 'alabaster' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +#html_theme_options = {} + +# Add any paths that contain custom themes here, relative to this directory. +#html_theme_path = [] + +# The name for this set of Sphinx documents. If None, it defaults to +# " v documentation". +#html_title = None + +# A shorter title for the navigation bar. Default is the same as html_title. +#html_short_title = None + +# The name of an image file (relative to this directory) to place at the top +# of the sidebar. +#html_logo = None + +# The name of an image file (within the static path) to use as favicon of the +# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 +# pixels large. +#html_favicon = None + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +# Add any extra paths that contain custom files (such as robots.txt or +# .htaccess) here, relative to this directory. These files are copied +# directly to the root of the documentation. +#html_extra_path = [] + +# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, +# using the given strftime format. +#html_last_updated_fmt = '%b %d, %Y' + +# If true, SmartyPants will be used to convert quotes and dashes to +# typographically correct entities. +#html_use_smartypants = True + +# Custom sidebar templates, maps document names to template names. +#html_sidebars = {} + +# Additional templates that should be rendered to pages, maps page names to +# template names. +#html_additional_pages = {} + +# If false, no module index is generated. +#html_domain_indices = True + +# If false, no index is generated. +#html_use_index = True + +# If true, the index is split into individual pages for each letter. +#html_split_index = False + +# If true, links to the reST sources are added to the pages. +#html_show_sourcelink = True + +# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. +#html_show_sphinx = True + +# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. +#html_show_copyright = True + +# If true, an OpenSearch description file will be output, and all pages will +# contain a tag referring to it. The value of this option must be the +# base URL from which the finished HTML is served. +#html_use_opensearch = '' + +# This is the file name suffix for HTML files (e.g. ".xhtml"). +#html_file_suffix = None + +# Language to be used for generating the HTML full-text search index. +# Sphinx supports the following languages: +# 'da', 'de', 'en', 'es', 'fi', 'fr', 'h', 'it', 'ja' +# 'nl', 'no', 'pt', 'ro', 'r', 'sv', 'tr' +#html_search_language = 'en' + +# A dictionary with options for the search language support, empty by default. +# Now only 'ja' uses this config value +#html_search_options = {'type': 'default'} + +# The name of a javascript file (relative to the configuration directory) that +# implements a search results scorer. If empty, the default will be used. +#html_search_scorer = 'scorer.js' + +# Output file base name for HTML help builder. +htmlhelp_basename = 'libdynamixeldoc' + +# -- Options for LaTeX output --------------------------------------------- + +latex_elements = { +# The paper size ('letterpaper' or 'a4paper'). +#'papersize': 'letterpaper', + +# The font size ('10pt', '11pt' or '12pt'). +#'pointsize': '10pt', + +# Additional stuff for the LaTeX preamble. +#'preamble': '', + +# Latex figure (float) alignment +#'figure_align': 'htbp', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + (master_doc, 'libdynamixel.tex', 'libdynamixel Documentation', + 'Jean-Baptiste Mouret, Antoine Cully, Dorian Goepp', 'manual'), +] + +# The name of an image file (relative to this directory) to place at the top of +# the title page. +#latex_logo = None + +# For "manual" documents, if this is true, then toplevel headings are parts, +# not chapters. +#latex_use_parts = False + +# If true, show page references after internal links. +#latex_show_pagerefs = False + +# If true, show URL addresses after external links. +#latex_show_urls = False + +# Documents to append as an appendix to all manuals. +#latex_appendices = [] + +# If false, no module index is generated. +#latex_domain_indices = True + + +# -- Options for manual page output --------------------------------------- + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + (master_doc, 'libdynamixel', 'libdynamixel Documentation', + [author], 1) +] + +# If true, show URL addresses after external links. +#man_show_urls = False + + +# -- Options for Texinfo output ------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + (master_doc, 'libdynamixel', 'libdynamixel Documentation', + author, 'libdynamixel', 'One line description of project.', + 'Miscellaneous'), +] + +# Documents to append as an appendix to all manuals. +#texinfo_appendices = [] + +# If false, no module index is generated. +#texinfo_domain_indices = True + +# How to display URL addresses: 'footnote', 'no', or 'inline'. +#texinfo_show_urls = 'footnote' + +# If true, do not generate a @detailmenu in the "Top" node's menu. +#texinfo_no_detailmenu = False + + +# Example configuration for intersphinx: refer to the Python standard library. +intersphinx_mapping = {'https://docs.python.org/': None} diff --git a/doc/index.rst b/doc/index.rst new file mode 100644 index 00000000..624f2611 --- /dev/null +++ b/doc/index.rst @@ -0,0 +1,22 @@ +.. libdynamixel documentation master file, created by + sphinx-quickstart on Tue Nov 17 15:51:26 2015. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to libdynamixel's documentation! +======================================== + +Contents: + +.. toctree:: + :maxdepth: 2 + + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` + diff --git a/doc/make.bat b/doc/make.bat new file mode 100644 index 00000000..4001e24b --- /dev/null +++ b/doc/make.bat @@ -0,0 +1,263 @@ +@ECHO OFF + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set BUILDDIR=_build +set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% . +set I18NSPHINXOPTS=%SPHINXOPTS% . +if NOT "%PAPER%" == "" ( + set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% + set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS% +) + +if "%1" == "" goto help + +if "%1" == "help" ( + :help + echo.Please use `make ^` where ^ is one of + echo. html to make standalone HTML files + echo. dirhtml to make HTML files named index.html in directories + echo. singlehtml to make a single large HTML file + echo. pickle to make pickle files + echo. json to make JSON files + echo. htmlhelp to make HTML files and a HTML help project + echo. qthelp to make HTML files and a qthelp project + echo. devhelp to make HTML files and a Devhelp project + echo. epub to make an epub + echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter + echo. text to make text files + echo. man to make manual pages + echo. texinfo to make Texinfo files + echo. gettext to make PO message catalogs + echo. changes to make an overview over all changed/added/deprecated items + echo. xml to make Docutils-native XML files + echo. pseudoxml to make pseudoxml-XML files for display purposes + echo. linkcheck to check all external links for integrity + echo. doctest to run all doctests embedded in the documentation if enabled + echo. coverage to run coverage check of the documentation if enabled + goto end +) + +if "%1" == "clean" ( + for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i + del /q /s %BUILDDIR%\* + goto end +) + + +REM Check if sphinx-build is available and fallback to Python version if any +%SPHINXBUILD% 2> nul +if errorlevel 9009 goto sphinx_python +goto sphinx_ok + +:sphinx_python + +set SPHINXBUILD=python -m sphinx.__init__ +%SPHINXBUILD% 2> nul +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.http://sphinx-doc.org/ + exit /b 1 +) + +:sphinx_ok + + +if "%1" == "html" ( + %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The HTML pages are in %BUILDDIR%/html. + goto end +) + +if "%1" == "dirhtml" ( + %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. + goto end +) + +if "%1" == "singlehtml" ( + %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml. + goto end +) + +if "%1" == "pickle" ( + %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can process the pickle files. + goto end +) + +if "%1" == "json" ( + %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can process the JSON files. + goto end +) + +if "%1" == "htmlhelp" ( + %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can run HTML Help Workshop with the ^ +.hhp project file in %BUILDDIR%/htmlhelp. + goto end +) + +if "%1" == "qthelp" ( + %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can run "qcollectiongenerator" with the ^ +.qhcp project file in %BUILDDIR%/qthelp, like this: + echo.^> qcollectiongenerator %BUILDDIR%\qthelp\libdynamixel.qhcp + echo.To view the help file: + echo.^> assistant -collectionFile %BUILDDIR%\qthelp\libdynamixel.ghc + goto end +) + +if "%1" == "devhelp" ( + %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. + goto end +) + +if "%1" == "epub" ( + %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The epub file is in %BUILDDIR%/epub. + goto end +) + +if "%1" == "latex" ( + %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. + goto end +) + +if "%1" == "latexpdf" ( + %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex + cd %BUILDDIR%/latex + make all-pdf + cd %~dp0 + echo. + echo.Build finished; the PDF files are in %BUILDDIR%/latex. + goto end +) + +if "%1" == "latexpdfja" ( + %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex + cd %BUILDDIR%/latex + make all-pdf-ja + cd %~dp0 + echo. + echo.Build finished; the PDF files are in %BUILDDIR%/latex. + goto end +) + +if "%1" == "text" ( + %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The text files are in %BUILDDIR%/text. + goto end +) + +if "%1" == "man" ( + %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The manual pages are in %BUILDDIR%/man. + goto end +) + +if "%1" == "texinfo" ( + %SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo. + goto end +) + +if "%1" == "gettext" ( + %SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The message catalogs are in %BUILDDIR%/locale. + goto end +) + +if "%1" == "changes" ( + %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes + if errorlevel 1 exit /b 1 + echo. + echo.The overview file is in %BUILDDIR%/changes. + goto end +) + +if "%1" == "linkcheck" ( + %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck + if errorlevel 1 exit /b 1 + echo. + echo.Link check complete; look for any errors in the above output ^ +or in %BUILDDIR%/linkcheck/output.txt. + goto end +) + +if "%1" == "doctest" ( + %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest + if errorlevel 1 exit /b 1 + echo. + echo.Testing of doctests in the sources finished, look at the ^ +results in %BUILDDIR%/doctest/output.txt. + goto end +) + +if "%1" == "coverage" ( + %SPHINXBUILD% -b coverage %ALLSPHINXOPTS% %BUILDDIR%/coverage + if errorlevel 1 exit /b 1 + echo. + echo.Testing of coverage in the sources finished, look at the ^ +results in %BUILDDIR%/coverage/python.txt. + goto end +) + +if "%1" == "xml" ( + %SPHINXBUILD% -b xml %ALLSPHINXOPTS% %BUILDDIR%/xml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The XML files are in %BUILDDIR%/xml. + goto end +) + +if "%1" == "pseudoxml" ( + %SPHINXBUILD% -b pseudoxml %ALLSPHINXOPTS% %BUILDDIR%/pseudoxml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The pseudo-XML files are in %BUILDDIR%/pseudoxml. + goto end +) + +:end From c4f272d77dc0cf7d4033e62ae5890322c160a216 Mon Sep 17 00:00:00 2001 From: Dorian Goepp Date: Tue, 17 Nov 2015 18:39:27 +0100 Subject: [PATCH 03/68] germ of tutorials --- doc/index.rst | 64 ++++++++++++++++++++++++++++----- doc/tutorials/index.rst | 7 ++++ doc/tutorials/motor_control.rst | 51 ++++++++++++++++++++++++++ 3 files changed, 114 insertions(+), 8 deletions(-) create mode 100644 doc/tutorials/index.rst create mode 100644 doc/tutorials/motor_control.rst diff --git a/doc/index.rst b/doc/index.rst index 624f2611..409a5a03 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -1,17 +1,65 @@ -.. libdynamixel documentation master file, created by - sphinx-quickstart on Tue Nov 17 15:51:26 2015. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. - Welcome to libdynamixel's documentation! ======================================== -Contents: +libdynamixel is a C++ interface to the `dynamixel `_ actuators. Currently, we have library code and a utility that uses it to offer a few functionalities like changing the IDs, the control mode (wheel or joint) and the baudrate. -.. toctree:: - :maxdepth: 2 +This library is used as the main building block for a ROS node that can be found in the `dynamixel_control `_ repository. It is also used for an `hexapod controller `_ we use for our experiments as part of the `ResiBots project `_. + +Features +-------- +- both Dynamixels of the AX and MX series are supported (despite the names in the source code) +- support for all instructions and messages of the version 1.0 of the Dynamixel communication protocol +- full C++ api + +.. _building: + +Building +-------- +Dependencies : + +- python2.x +- g++ +- Boost C++ + +The build system for libdynamixel is Waf, which only dependency is python. + +.. highlight:: shell + +Then, configure and build the programm:: + + python2.x waf configure + python2.x waf + +where `x` is to be replaced by the actual version number of your python. That's it ! You get the :program:`dynamixel` toolset and the demo programms compiled in the ``build/default/src`` folder. +For now, the demo programs are not at a working stage and should not be used. Conversely, :program:`dynamixel` is a working program that we use regularly, even though its command line interface needs some polishing. + +Support +------- +This library is actively used and regularly developped. If you need some help, feel free to `fill an issue `_ on this repository. We'll do our best to be responsive. + +Alternative software +-------------------- + +Inria FLOWERS team developped `pybot `_, a python library to control a Dynamixel-based robot. + +Please let us know if you developped an other library for Dynamixels. + +License and authors +------------------- +The libdynamixel software is distributed under the terms of the `CeCILL-C `_ license. © UPMC and INRIA. + +This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/4.0/. + +This documentation was authored by Dorian Goepp, **and ...** + +Contents +========================================== + +.. toctree:: + :maxdepth: 2 + tutorials/index Indices and tables ================== diff --git a/doc/tutorials/index.rst b/doc/tutorials/index.rst new file mode 100644 index 00000000..3dea2a42 --- /dev/null +++ b/doc/tutorials/index.rst @@ -0,0 +1,7 @@ +Tutorials +========= + +.. toctree:: + :maxdepth: 2 + + motor_control diff --git a/doc/tutorials/motor_control.rst b/doc/tutorials/motor_control.rst new file mode 100644 index 00000000..b1dd9de2 --- /dev/null +++ b/doc/tutorials/motor_control.rst @@ -0,0 +1,51 @@ +Control one actuator's position or speed +---------------------------------------- + +.. highlight:: c++ + +Let's assume that you installed the dependencies of libdynamixel and that scceded in compiling the ``dynamixel`` tool and the demos. If not, please refer to the related instructions in the :ref:`building` instructions. + +Instranciate the object managing the interface ``Usb2Dynamixel``:: + + std::string port = "/dev/ttyUSB0"; + int baudrate = B1000000; + Usb2Dynamixel controller; + controller.open_serial(port, baudrate); + +It requires the port name which is the absolute path to the linux device interfacing with the Dynamixel bus. + +.. note:: + + Depending on the interface device you use, the device name would ressemble more ``ttyACMx`` or ``ttyUSBx`` with x being an integer + +.. warning:: + + To be able to access this interface, you usually need special rights. On ubuntu, you either have to belong to the *dialout* group or to run the generated programs as superuser. + +TODO: change the "xxx" with actual content. + +The B1000000 constant is defined by the system and is the default baud rate for a newly acquired actuator. See xxx for the other possible values. + +Possible values are: + +- B0 +- B50 +- B75 +- B110 +- B134 +- B150 +- B200 +- B300 +- B600 +- B1200 +- B1800 +- B2400 +- B4800 +- B9600 +- B19200 +- B38400 +- B57600 +- B76800 +- B115200 + +B1000000 corresponds to :math:`10^6` bauds. It is not a standard value but is accepted on linux. This is also the default baud rate for a newly bought actuator. \ No newline at end of file From be4bc62aed461ed5c4a51255f0900741e7520aa4 Mon Sep 17 00:00:00 2001 From: Dorian Goepp Date: Tue, 17 Nov 2015 18:47:26 +0100 Subject: [PATCH 04/68] move information about baud rates to the reference --- doc/index.rst | 1 + doc/reference/baudrates.rst | 28 ++++++++++++++++++++++++++++ doc/reference/index.rst | 7 +++++++ doc/tutorials/motor_control.rst | 28 +--------------------------- 4 files changed, 37 insertions(+), 27 deletions(-) create mode 100644 doc/reference/baudrates.rst create mode 100644 doc/reference/index.rst diff --git a/doc/index.rst b/doc/index.rst index 409a5a03..f15aeefc 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -60,6 +60,7 @@ Contents :maxdepth: 2 tutorials/index + reference/index Indices and tables ================== diff --git a/doc/reference/baudrates.rst b/doc/reference/baudrates.rst new file mode 100644 index 00000000..4ff5cfee --- /dev/null +++ b/doc/reference/baudrates.rst @@ -0,0 +1,28 @@ +Baud rates to use on the actuator's baudrates +--------------------------------------------- + +TODO: Where it is defined and where to use the baud rate + +The standard values are: + +- B0 +- B50 +- B75 +- B110 +- B134 +- B150 +- B200 +- B300 +- B600 +- B1200 +- B1800 +- B2400 +- B4800 +- B9600 +- B19200 +- B38400 +- B57600 +- B76800 +- B115200 + +B1000000 corresponds to :math:`10^6` bauds. It is not a standard POSIX value but is accepted on linux and Mac OS X. This is also the default baud rate for a newly bought actuator. \ No newline at end of file diff --git a/doc/reference/index.rst b/doc/reference/index.rst new file mode 100644 index 00000000..79d87ee9 --- /dev/null +++ b/doc/reference/index.rst @@ -0,0 +1,7 @@ +Reference +========= + +.. toctree:: + :maxdepth: 2 + + baudrates \ No newline at end of file diff --git a/doc/tutorials/motor_control.rst b/doc/tutorials/motor_control.rst index b1dd9de2..d7cd88ad 100644 --- a/doc/tutorials/motor_control.rst +++ b/doc/tutorials/motor_control.rst @@ -22,30 +22,4 @@ It requires the port name which is the absolute path to the linux device interfa To be able to access this interface, you usually need special rights. On ubuntu, you either have to belong to the *dialout* group or to run the generated programs as superuser. -TODO: change the "xxx" with actual content. - -The B1000000 constant is defined by the system and is the default baud rate for a newly acquired actuator. See xxx for the other possible values. - -Possible values are: - -- B0 -- B50 -- B75 -- B110 -- B134 -- B150 -- B200 -- B300 -- B600 -- B1200 -- B1800 -- B2400 -- B4800 -- B9600 -- B19200 -- B38400 -- B57600 -- B76800 -- B115200 - -B1000000 corresponds to :math:`10^6` bauds. It is not a standard value but is accepted on linux. This is also the default baud rate for a newly bought actuator. \ No newline at end of file +The B1000000 constant is defined by the system and is the default baud rate for a newly acquired actuator. See :doc:`/reference/baudrates` for the other possible values. \ No newline at end of file From d40a3ba344a107cb7742c6103a75b3fe2c876cc2 Mon Sep 17 00:00:00 2001 From: Dorian Goepp Date: Tue, 17 Nov 2015 18:49:31 +0100 Subject: [PATCH 05/68] flatter structure --- doc/tutorials/motor_control.rst | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/doc/tutorials/motor_control.rst b/doc/tutorials/motor_control.rst index d7cd88ad..c004f45b 100644 --- a/doc/tutorials/motor_control.rst +++ b/doc/tutorials/motor_control.rst @@ -14,12 +14,11 @@ Instranciate the object managing the interface ``Usb2Dynamixel``:: It requires the port name which is the absolute path to the linux device interfacing with the Dynamixel bus. -.. note:: - - Depending on the interface device you use, the device name would ressemble more ``ttyACMx`` or ``ttyUSBx`` with x being an integer +Depending on the interface device you use, the device name would ressemble more ``ttyACMx`` or ``ttyUSBx`` with x being an integer .. warning:: To be able to access this interface, you usually need special rights. On ubuntu, you either have to belong to the *dialout* group or to run the generated programs as superuser. -The B1000000 constant is defined by the system and is the default baud rate for a newly acquired actuator. See :doc:`/reference/baudrates` for the other possible values. \ No newline at end of file +The B1000000 constant is defined by the system and is the default baud rate for a newly acquired actuator. See :doc:`/reference/baudrates` for the other possible values. + From 1532b4daf16b8229213cc6b36051d96d6c446936 Mon Sep 17 00:00:00 2001 From: Dorian Goepp Date: Mon, 6 Mar 2017 14:24:22 +0100 Subject: [PATCH 06/68] update skeleton for the documetation --- README.rst | 26 +++---- doc/conf.py | 43 +++++++++--- doc/index.rst | 78 ++++++++------------- doc/pics/resibots_logo_black_200px.png | Bin 0 -> 10268 bytes doc/reference/baudrates.rst | 2 +- doc/tutorials/download_and_compilation.rst | 37 ++++++++++ doc/tutorials/index.rst | 2 + doc/tutorials/quick_start.rst | 43 ++++++++++++ 8 files changed, 157 insertions(+), 74 deletions(-) create mode 100644 doc/pics/resibots_logo_black_200px.png create mode 100644 doc/tutorials/download_and_compilation.rst create mode 100644 doc/tutorials/quick_start.rst diff --git a/README.rst b/README.rst index 2a35924c..38e2a1f1 100644 --- a/README.rst +++ b/README.rst @@ -6,30 +6,30 @@ Currently, we have library code and a utility that uses it to offer a few functi Features ======== -- Dynamixel series AX, MX, EX, XL and Pro are supported -- support for all instructions and messages of both version 1 and 2 of the Dynamixel communication protocol -- full C++ api +* Dynamixel series AX, MX, EX, XL and Pro are supported +* support for all instructions and messages of both version 1 and 2 of the Dynamixel communication protocol +* full C++ api Building ======== Dependencies : -- python2.x -- C++ -- Boost C++ +* python2.x +* C++ +* Boost C++ .. highlight:: shell The build system for this library is Waf. Don't run away yet. It has the big advantage of requiring no more than Python installed on your computer. If you run a GNU/Linux OS or Mac OS, you should already have it. Here is how we compile and install it: 1. configuration - run ``./waf configure`` and add ``--prefix PATH/TO/INSTALL`` if you want to install it to a specific location + run ``./waf configure`` and add ``--prefix PATH/TO/INSTALL`` if you want to install it to a specific location 2. compilation - is as easy as ``./waf`` + is as easy as ``./waf`` 3. installation - is simply done with ``./waf install``, with the required rights (might need sudo if you install globally) + is simply done with ``./waf install``, with the required rights (might need sudo if you install globally) 4. setup the proper authorisation - please ensure that you have the proper rights to access the serial interfaces. On GNU/Linux, you might have to add your user to the `dialout` group and log out. + please ensure that you have the proper rights to access the serial interfaces. On GNU/Linux, you might have to add your user to the `dialout` group and log out. You get the ``dynamixel`` toolset and the demo programms compiled in the ``build/default/src`` folder. @@ -45,7 +45,7 @@ Using the utility ================= Since we are right now writing a brand new utility, the user interface is not settled yet and some commands are not implemented. You can still play with the binary `dynamixel2` (the name will change) with the `--help [command]` option to learn how to use it. -> **Caution:** the `get-speed` command gives you the reference speed used in the control table (if any) and not the current rotational speed of the actuator. +.. note:: the ``get-speed`` command gives you the reference speed used in the control table (if any) and not the current rotational speed of the actuator. Further documentation ===================== @@ -60,8 +60,8 @@ Projects using this library Internal projects ----------------- -- `dynamixel_control_hw`_ -- omnigrasper_bo_recovery +* `dynamixel_control_hw`_ +* omnigrasper_bo_recovery Other projects -------------- diff --git a/doc/conf.py b/doc/conf.py index 7dadce8d..f55d18be 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -34,7 +34,7 @@ 'sphinx.ext.intersphinx', 'sphinx.ext.todo', 'sphinx.ext.mathjax', - 'sphinx.ext.ifconfig', + 'sphinx.ext.ifconfig' ] # Add any paths that contain templates here, relative to this directory. @@ -52,18 +52,18 @@ master_doc = 'index' # General information about the project. -project = 'libdynamixel' -copyright = '2015, Jean-Baptiste Mouret, Antoine Cully, Dorian Goepp' -author = 'Jean-Baptiste Mouret, Antoine Cully, Dorian Goepp' +project = u'libdynamixel' +copyright = u'2015, Jean-Baptiste Mouret, Federico Allocati, Antoine Cully, Dorian Goepp' +author = u'Jean-Baptiste Mouret, Federico Allocati, Antoine Cully, Dorian Goepp' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. -version = '1.0' +version = '2.1' # The full version, including alpha/beta/rc tags. -release = '1.0' +release = '2.1' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. @@ -114,15 +114,31 @@ # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. -html_theme = 'alabaster' +#html_theme = 'alabaster' +html_theme = 'sphinx_resibots_theme' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} +html_theme_options = { + "logo_only": True, + "logo_url": "http://www.resibots.eu", + 'breadcrumb_root': 'Limbo', # set a custom name to the breacumb root + 'contact_url': 'mailto:jean-baptiste.mouret@inria.fr', # add a "Contact us link" at the bottom with URL + 'toc_befores': [("Project's website", "http://www.resibots.eu"), ("Limbo (BO library)", "http://www.resibots.eu/limbo/")], + "toc_afters": [('github', 'http://github.com/resibots' )], +} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] +# Detect if there is an environment variable locating the theeme and use it there is +if 'SPHINX_RESIBOTS_THEME' in os.environ: + default_theme_path = os.environ['SPHINX_RESIBOTS_THEME'] +else: + default_theme_path = '_theme' + +html_theme_path = [default_theme_path] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". @@ -134,6 +150,7 @@ # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None +html_logo = "pics/resibots_logo_black_200px.png" # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 @@ -229,7 +246,7 @@ # author, documentclass [howto, manual, or own class]). latex_documents = [ (master_doc, 'libdynamixel.tex', 'libdynamixel Documentation', - 'Jean-Baptiste Mouret, Antoine Cully, Dorian Goepp', 'manual'), + 'Jean-Baptiste Mouret, Federico Allocati, Antoine Cully, Dorian Goepp', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of @@ -258,7 +275,7 @@ # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [ - (master_doc, 'libdynamixel', 'libdynamixel Documentation', + (master_doc, u'libdynamixel', u'libdynamixel Documentation', [author], 1) ] @@ -272,7 +289,7 @@ # (source start file, target name, title, author, # dir menu entry, description, category) texinfo_documents = [ - (master_doc, 'libdynamixel', 'libdynamixel Documentation', + (master_doc, 'libdynamixel', u'libdynamixel Documentation', author, 'libdynamixel', 'One line description of project.', 'Miscellaneous'), ] @@ -291,4 +308,8 @@ # Example configuration for intersphinx: refer to the Python standard library. -intersphinx_mapping = {'https://docs.python.org/': None} +intersphinx_mapping = { + # 'python': ('https://docs.python.org/', None), + 'resibots': ('http://www.resibots.eu/', None), +} +intersphinx_timeout = 10 diff --git a/doc/index.rst b/doc/index.rst index f15aeefc..28cd0a37 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -1,71 +1,51 @@ -Welcome to libdynamixel's documentation! -======================================== +Libdynamixel's documentation +============================ -libdynamixel is a C++ interface to the `dynamixel `_ actuators. Currently, we have library code and a utility that uses it to offer a few functionalities like changing the IDs, the control mode (wheel or joint) and the baudrate. +libdynamixel +------------ +libdynamixel is a C++ library for the `Dynamixel `_ actuators. Its goals are to be fast and to work with most Dynamixels, including the Dynamixel Pro actuators. -This library is used as the main building block for a ROS node that can be found in the `dynamixel_control `_ repository. It is also used for an `hexapod controller `_ we use for our experiments as part of the `ResiBots project `_. +This library comes with a command line utility that can, among other things, be very convenient for the configuration of your actuators. Features -------- -- both Dynamixels of the AX and MX series are supported (despite the names in the source code) -- support for all instructions and messages of the version 1.0 of the Dynamixel communication protocol -- full C++ api -.. _building: +* supports Dynamixel series AX, MX, EX, XL and Pro +* supports all instructions and messages of both version 1 and 2 of the Dynamixel communication protocol +* full C++ api -Building --------- -Dependencies : - -- python2.x -- g++ -- Boost C++ - -The build system for libdynamixel is Waf, which only dependency is python. - -.. highlight:: shell - -Then, configure and build the programm:: - - python2.x waf configure - python2.x waf - -where `x` is to be replaced by the actual version number of your python. That's it ! You get the :program:`dynamixel` toolset and the demo programms compiled in the ``build/default/src`` folder. - -For now, the demo programs are not at a working stage and should not be used. Conversely, :program:`dynamixel` is a working program that we use regularly, even though its command line interface needs some polishing. - -Support -------- -This library is actively used and regularly developped. If you need some help, feel free to `fill an issue `_ on this repository. We'll do our best to be responsive. - -Alternative software --------------------- - -Inria FLOWERS team developped `pybot `_, a python library to control a Dynamixel-based robot. - -Please let us know if you developped an other library for Dynamixels. - -License and authors -------------------- -The libdynamixel software is distributed under the terms of the `CeCILL-C `_ license. © UPMC and INRIA. - -This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/4.0/. - -This documentation was authored by Dorian Goepp, **and ...** + * template-based API for fast and low-level access + * class-based unified API abstracting away the differences between the actuators (as long as they use the same Dynamixel protocol). Contents -========================================== +-------- + +.. toctree:: + :hidden: + :caption: Libdynamixel .. toctree:: :maxdepth: 2 + self tutorials/index reference/index Indices and tables -================== +------------------ * :ref:`genindex` * :ref:`modindex` * :ref:`search` +Support +------- + +If you need some help, feel free to `fill an issue `_ on this repository. We'll do our best to be responsive. + +License and authors +------------------- + +This work is distributed under the terms of the `CeCILL-C `_ license. © UPMC and INRIA. + +The authors for this library are Jean-Baptiste Mouret, Antoine Cully, Federico Allocati and Dorian Goepp. diff --git a/doc/pics/resibots_logo_black_200px.png b/doc/pics/resibots_logo_black_200px.png new file mode 100644 index 0000000000000000000000000000000000000000..55bea0b98e0205d4aa310aa1dae8d3dbbd3b023e GIT binary patch literal 10268 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 QeaQ#NORGp#NtlNG5AOhBD*ylh literal 0 HcmV?d00001 diff --git a/doc/reference/baudrates.rst b/doc/reference/baudrates.rst index 4ff5cfee..2c205c19 100644 --- a/doc/reference/baudrates.rst +++ b/doc/reference/baudrates.rst @@ -25,4 +25,4 @@ The standard values are: - B76800 - B115200 -B1000000 corresponds to :math:`10^6` bauds. It is not a standard POSIX value but is accepted on linux and Mac OS X. This is also the default baud rate for a newly bought actuator. \ No newline at end of file +B1000000 corresponds to :math:`10^6` bauds. It is not a standard POSIX value but is accepted on linux and Mac OS X. \ No newline at end of file diff --git a/doc/tutorials/download_and_compilation.rst b/doc/tutorials/download_and_compilation.rst new file mode 100644 index 00000000..27462823 --- /dev/null +++ b/doc/tutorials/download_and_compilation.rst @@ -0,0 +1,37 @@ +.. _download_and_compilation: + +Download and Compilation +======================== + +Building +-------- + +Dependencies : + +- python2.x +- C++ +- Boost C++ + +.. highlight:: shell + +The build system for this library is Waf. Don't run away yet. It has the big advantage of requiring no more than Python installed on your computer. If you run a GNU/Linux OS or Mac OS, you should already have it. Here is how we compile and install it: + +1. configuration + run ``./waf configure`` and add ``--prefix PATH/TO/INSTALL`` if you want to install it to a specific location + +2. compilation + is as easy as ``./waf`` + +3. installation + is simply done with ``./waf install``, with the required rights (might need sudo if you install globally) + +4. setup the proper authorisation + please ensure that you have the proper rights to access the serial interfaces. On GNU/Linux, you might have to add your user to the `dialout` group and log out. + +udev rule for USB2AX adapter +---------------------------- + +For Gnu/Linux only. + +If you want your USB2AX serial interface to appear in ``/dev`` as ``usb2axN`` (where N is a kernel-attributed integer), you can install the udev rule. It is as simple as moving the ``usb2ax.rules`` file in this repository to the folder for the udev rules. For ubuntu, it is ``/etc/udev/rules.d``. + diff --git a/doc/tutorials/index.rst b/doc/tutorials/index.rst index 3dea2a42..bc703c4a 100644 --- a/doc/tutorials/index.rst +++ b/doc/tutorials/index.rst @@ -4,4 +4,6 @@ Tutorials .. toctree:: :maxdepth: 2 + quick_start + download_and_compilation motor_control diff --git a/doc/tutorials/quick_start.rst b/doc/tutorials/quick_start.rst new file mode 100644 index 00000000..c756a950 --- /dev/null +++ b/doc/tutorials/quick_start.rst @@ -0,0 +1,43 @@ +Quick Start +=========== + +Building +-------- + +Dependencies : + +- python2.x +- C++ +- Boost C++ + +.. highlight:: shell + +The build system for this library is Waf. Don't run away yet. It has the big advantage of requiring no more than Python installed on your computer. If you run a GNU/Linux OS or Mac OS, you should already have it. Here is how we compile and install it: + +1. configuration + run ``./waf configure`` and add ``--prefix PATH/TO/INSTALL`` if you want to install it to a specific location +2. compilation + is as easy as ``./waf`` +3. installation + is simply done with ``./waf install``, with the required rights (might need sudo if you install globally) +4. setup the proper authorisation + please ensure that you have the proper rights to access the serial interfaces. On GNU/Linux, you might have to add your user to the `dialout` group and log out. + +For more options and troubleshooting, see the :ref:`Compilation tutorial `. + +Command line interface +---------------------- + +You get the ``dynamixel`` toolset and the demo programms compiled in the ``build/default/src`` folder. + +.. note:: the ``get-speed`` command gives you the reference speed used in the control table (if any) and not the current rotational speed of the actuator. + +Demo programms +-------------- + +You get the ``dynamixel`` toolset and the demo programms compiled in the ``build/default/src`` folder. + +For now, the demo programs are not at a working stage and should not be used. Conversely, ``dynamixel`` is a working program that we use regularly. + +Library +------- \ No newline at end of file From 97f998a720bce1b87dd09b9b26037fe0863f8bf7 Mon Sep 17 00:00:00 2001 From: Dorian Goepp Date: Mon, 6 Mar 2017 15:45:47 +0100 Subject: [PATCH 07/68] allow cross-links to limbo --- doc/conf.py | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/conf.py b/doc/conf.py index f55d18be..cd9afca5 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -311,5 +311,6 @@ intersphinx_mapping = { # 'python': ('https://docs.python.org/', None), 'resibots': ('http://www.resibots.eu/', None), + 'limbo': ('http://www.resibots.eu/limbo', None), } intersphinx_timeout = 10 From b3f990ca69db3db04c484d62323cdf2a03ca4737 Mon Sep 17 00:00:00 2001 From: Dorian Goepp Date: Mon, 6 Mar 2017 15:46:15 +0100 Subject: [PATCH 08/68] add link to repository --- doc/index.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/index.rst b/doc/index.rst index 28cd0a37..12e50baa 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -3,7 +3,7 @@ Libdynamixel's documentation libdynamixel ------------ -libdynamixel is a C++ library for the `Dynamixel `_ actuators. Its goals are to be fast and to work with most Dynamixels, including the Dynamixel Pro actuators. +`libdynamixel `__ is a C++ library for the `Dynamixel `__ actuators. Its goals are to be fast and to work with most Dynamixels, including the Dynamixel Pro actuators. This library comes with a command line utility that can, among other things, be very convenient for the configuration of your actuators. From 973e1d6c409fc2519882a03c799bd5dd5ade15f7 Mon Sep 17 00:00:00 2001 From: Dorian Goepp Date: Mon, 6 Mar 2017 15:46:22 +0100 Subject: [PATCH 09/68] fill download and compilation tutorial based on limbo's --- doc/tutorials/download_and_compilation.rst | 132 ++++++++++++++++++--- 1 file changed, 116 insertions(+), 16 deletions(-) diff --git a/doc/tutorials/download_and_compilation.rst b/doc/tutorials/download_and_compilation.rst index 27462823..8cdaf72f 100644 --- a/doc/tutorials/download_and_compilation.rst +++ b/doc/tutorials/download_and_compilation.rst @@ -3,35 +3,135 @@ Download and Compilation ======================== -Building +Download -------- -Dependencies : +To get **libdynamixel**, simply clone the source code from https://github.com/resibots/libdynamixel.git with git, or `download it as a zip `__. -- python2.x -- C++ -- Boost C++ +.. todo:: We whould handle versions here and propose to download version 2.1 that should be published at the same time as the documentation. + +Dependencies +~~~~~~~~~~~~ + +* python2.x +* C++ +* `Boost `_ , with the program_options librariy; `Boost` is mainly used for the command line interface. + +Compilation +----------- + +We use the `WAF `_ build system. Don't run away yet! It has the big advantage of requiring no more than Python installed on your computer. If you use GNU/Linux or Mac OS, you should already have it. + +To know why we use waf (and not CMAKE, SCONS, traditional makefiles, etc.), see the :ref:`Limbo FAQ `. + +Like most build systems, it has a configuration and build steps, described bellow. .. highlight:: shell -The build system for this library is Waf. Don't run away yet. It has the big advantage of requiring no more than Python installed on your computer. If you run a GNU/Linux OS or Mac OS, you should already have it. Here is how we compile and install it: +Configuration +~~~~~~~~~~~~~ + +.. caution:: + Make sure that the waf file has execution rights. + +The first step is to configure your waf environment. For this, assuming that you are in the root directory of libdynamixel, you have to run the command:: + + ./waf configure + +.. note:: + add ``--prefix PATH/TO/INSTALL`` if you want to install it to a specific location + +If everything is okay, you should expect an output like this:: + + Setting top to : /path/to/libdynamixel + Setting out to : /path/to/libdynamixel + Checking for 'g++' (C++ compiler) : not found + Checking for 'clang++' (C++ compiler) : /usr/bin/clang++ + Checking boost includes : 1_58 + Checking boost libs : ok + CXXFLAGS:['-D_REENTRANT', '-Wall', '-finline-functions', '-Wno-inline', + '', '-fPIC', '-O3', '-std=c++11', '-ftemplate-depth-128', + '-Wno-sign-compare'] + 'configure' finished successfully (0.221s) + +The actual ouput may differ, depending on your configuration and installed libraries. + +Waf should automatically detect the libraries if they where installed in the default folders, but if it doesn't, +you can use the following command-line options to indicate where they are: + +* ``--boost-includes /path/to/boost-includes`` [.h] +* ``--boost-libs /path/to/boost-libraries`` [.a, .so, .dynlib] + +Build +~~~~~ + +The second step is to run the build command:: + + ./waf build + +Depending on your compiler, there may be some warnings, but the output should end with the following line: + +.. code-block:: none + + 'build' finished successfully (time in sec) + +Installation +~~~~~~~~~~~~ + +It is possible, although not necessary, to have the library installed globally (or to the path given with ``--prefix``):: + + ./waf install + +When globally installed, this command should require super-user rights (e.g. ``sudo``). + +Configuration of the serial interfaces +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Please ensure that you have the proper rights to access the serial interfaces. On GNU/Linux, you might have to add your user to the ``dialout`` group and log out. + +Building the documentation +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. note:: + This section is only useful for developers who need to update the documentation. + +Install sphinx via pip: :: + + sudo pip install Sphinx + sudo pip install sphinxcontrib-bibtex + +.. warning:: + + On Mac OSX, do not use `brew install sphinx` because this is not the right sphinx + +Install the Resibots theme for Sphinx:: + + git clone https://github.com/resibots/sphinx_resibots_theme + export SPHINX_RESIBOTS_THEME="/home/me/path/to/sphinx_resibots_theme" + +Install `breathe `_ via pip:: + + sudo pip install breathe + +Install `doxygen `_ via your package manager (e.g. apt-get / brew):: -1. configuration - run ``./waf configure`` and add ``--prefix PATH/TO/INSTALL`` if you want to install it to a specific location + apt-get install doxygen -2. compilation - is as easy as ``./waf`` +In the `doc` directory:: -3. installation - is simply done with ``./waf install``, with the required rights (might need sudo if you install globally) + make html -4. setup the proper authorisation - please ensure that you have the proper rights to access the serial interfaces. On GNU/Linux, you might have to add your user to the `dialout` group and log out. +About sphinx and ReStructuredText: + - `There is a tutorial `_, + - `Primer for ReStructuredText `_, the markup language of Sphinx, + - `markup specific to Sphinx `_, + - `About C++ in Sphinx `_ + - `Breathe (bridge between sphinx and doxygen) `_ udev rule for USB2AX adapter ---------------------------- -For Gnu/Linux only. +.. note:: For Gnu/Linux only -If you want your USB2AX serial interface to appear in ``/dev`` as ``usb2axN`` (where N is a kernel-attributed integer), you can install the udev rule. It is as simple as moving the ``usb2ax.rules`` file in this repository to the folder for the udev rules. For ubuntu, it is ``/etc/udev/rules.d``. +To have the `USB2AX `__ serial interface appear as ``/dev/usb2axN`` (where N is a kernel-attributed integer), you can install the provided udev rule. It is as simple as moving the ``usb2ax.rules`` file from the root of the library to the for the udev rules folder. For ubuntu, it is ``/etc/udev/rules.d``. From fdf324f293fb468b0bcac5a1223f4e159257eac5 Mon Sep 17 00:00:00 2001 From: Dorian Goepp Date: Mon, 6 Mar 2017 17:42:39 +0100 Subject: [PATCH 10/68] minor addition --- doc/tutorials/download_and_compilation.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/tutorials/download_and_compilation.rst b/doc/tutorials/download_and_compilation.rst index 8cdaf72f..6d4ad125 100644 --- a/doc/tutorials/download_and_compilation.rst +++ b/doc/tutorials/download_and_compilation.rst @@ -133,5 +133,5 @@ udev rule for USB2AX adapter .. note:: For Gnu/Linux only -To have the `USB2AX `__ serial interface appear as ``/dev/usb2axN`` (where N is a kernel-attributed integer), you can install the provided udev rule. It is as simple as moving the ``usb2ax.rules`` file from the root of the library to the for the udev rules folder. For ubuntu, it is ``/etc/udev/rules.d``. +To have the `USB2AX `__ serial interface appear as :file:`/dev/usb2ax{N}` (where N is a kernel-attributed integer), you can install the provided udev rule. It is as simple as moving the :file:`usb2ax.rules` file from the root of the library to the for the udev rules folder. For ubuntu, it is :file:`/etc/udev/rules.d`. From b87859399202705b30fd3dd8b1b3deed13fbac8e Mon Sep 17 00:00:00 2001 From: Dorian Goepp Date: Mon, 6 Mar 2017 17:43:51 +0100 Subject: [PATCH 11/68] draft of explanation of the architecture --- doc/reference/concepts.rst | 62 ++++++++++++++++++++++++++++++++++++++ doc/reference/index.rst | 1 + 2 files changed, 63 insertions(+) create mode 100644 doc/reference/concepts.rst diff --git a/doc/reference/concepts.rst b/doc/reference/concepts.rst new file mode 100644 index 00000000..eb6cd043 --- /dev/null +++ b/doc/reference/concepts.rst @@ -0,0 +1,62 @@ +Concepts underlying the design of the library +============================================= + +In this document we will describe the way the communication with dynamixel actuators works and how it is done with this library. + +The two protocols +----------------- + +Robotis designed two version of its communication protocol. We have a class for each protocol containing: + +* type definitions for protocol-specific data +* codes for the instructions allowed in the protocol +* methods to pack to be sent and unpack the data that was received + +Unless said overwise, everything written bellow is common to versions 1 and 2 of the communication protocols. + +Serial interface +---------------- + +The client interacts with Dynamixels by sending instructions and receiving status reports. These are packed in data frames that are usually sent through a USB to serial interface (such as `USB2AX `__ and `USB2DYNAMIXEL `__). + +.. highlight:: C++ + +In this library, the interface is managed by an instance of :code:`controllers::Usb2Dynamixel` (compatible with USB2AX). + +Instructions and status report +------------------------------ + +A class is defined for each instruction and templated with the protocol. Here are the instructions currently supported: + +* :code:`Ping`: check that an actuator responds +* :code:`Read`: read some data in the RAM or ROM of the actuator +* :code:`Write`: write some data in the RAM or ROM of the actuator +* :code:`RegWrite`: register a write instruction to be performed later, on receival of the action instruction +* :code:`Action`: trigger the registered write instruction +* :code:`FactoryReset`: reset the ROM of the actuator to factory defaults +* :code:`SyncWrite`: simultaneously write data for selveral servos (one memory address, many servos, many data) +* :code:`Reboot` (only for protocol 2) + +Likewise, the :code:`StatusPacket` class is for the status report packet. A status packet can report errors in the communication or related to an actuators. For instance, a checksum error or an overheating error. Such packets are sent in response to all packets, unless sent to the broadcast ID. Some actuators also allow to configure after which instructions a status report is sent. + +Model traints +------------- + +A templated class :code:`ModelTraints`, is explicitely specialised for each supported actuator, holding model-specific information such as the control table (including address, size of each entry). This makes a unified yet extensible interface to all actuators. + +Aside from the control table, the :code:`ModelTraits` class also defines the protocol accepted by each servo. + +.. todo:: give a link to the list of supported actuators + +Base servo, Servo and actuator classes +-------------------------------------- + +A class is defined for each actuator. For instance, the MX 28 actuators have the class :code:`Mx28`. These are children class of :code:`Servo` and :code:`BaseServo`. The latter declares the methods to access and modify the fields of all possible control tables but the definition of these methods throws an "not implemented" exception. :code:`Servo` on the other hand defines the least common denimonator of methods. The remainder fields are defined in the actuator's class. + +Protocol-specific packets +------------------------- + +There are some operations that are comon to all actuators using a given protocol. This templated class is for these operations, such as converting the speed from unit-less integer to radians per second. + +Exception classes +----------------- \ No newline at end of file diff --git a/doc/reference/index.rst b/doc/reference/index.rst index 79d87ee9..c1f654c1 100644 --- a/doc/reference/index.rst +++ b/doc/reference/index.rst @@ -4,4 +4,5 @@ Reference .. toctree:: :maxdepth: 2 + concepts baudrates \ No newline at end of file From 7bb5d7f1ec84facb022828c285609e52ec7b0960 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mouret Date: Mon, 13 Mar 2017 10:34:54 +0100 Subject: [PATCH 12/68] add Doxygen in sphinx --- doc/Doxyfile | 2365 ++++++++++++++++++++++++++++++++++++++++++++++++++ doc/Makefile | 6 +- doc/conf.py | 6 +- 3 files changed, 2375 insertions(+), 2 deletions(-) create mode 100644 doc/Doxyfile diff --git a/doc/Doxyfile b/doc/Doxyfile new file mode 100644 index 00000000..5d1dc915 --- /dev/null +++ b/doc/Doxyfile @@ -0,0 +1,2365 @@ +# Doxyfile 1.8.9.1 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project. +# +# All text after a double hash (##) is considered a comment and is placed in +# front of the TAG it is preceding. +# +# All text after a single hash (#) is considered a comment and will be ignored. +# The format is: +# TAG = value [value, ...] +# For lists, items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (\" \"). + +ALIASES = "rst=\verbatim embed:rst" +ALIASES += "endrst=\endverbatim" + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file +# that follow. The default is UTF-8 which is also the encoding used for all text +# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv +# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv +# for the list of possible encodings. +# The default value is: UTF-8. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by +# double-quotes, unless you are using Doxywizard) that should identify the +# project for which the documentation is generated. This name is used in the +# title of most generated pages and in a few other places. +# The default value is: My Project. + +PROJECT_NAME = "libdynamixel" + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. This +# could be handy for archiving the generated documentation or if some version +# control system is used. + +PROJECT_NUMBER = 1.0 + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer a +# quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = + +# With the PROJECT_LOGO tag one can specify a logo or an icon that is included +# in the documentation. The maximum height of the logo should not exceed 55 +# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy +# the logo to the output directory. + +PROJECT_LOGO = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path +# into which the generated documentation will be written. If a relative path is +# entered, it will be relative to the location where doxygen was started. If +# left blank the current directory will be used. + +OUTPUT_DIRECTORY = doxygen_doc + +# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- +# directories (in 2 levels) under the output directory of each output format and +# will distribute the generated files over these directories. Enabling this +# option can be useful when feeding doxygen a huge amount of source files, where +# putting all generated files in the same directory would otherwise causes +# performance problems for the file system. +# The default value is: NO. + +CREATE_SUBDIRS = NO + +# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII +# characters to appear in the names of generated files. If set to NO, non-ASCII +# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode +# U+3044. +# The default value is: NO. + +ALLOW_UNICODE_NAMES = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, +# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), +# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, +# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), +# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, +# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, +# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, +# Ukrainian and Vietnamese. +# The default value is: English. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member +# descriptions after the members that are listed in the file and class +# documentation (similar to Javadoc). Set to NO to disable this. +# The default value is: YES. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief +# description of a member or function before the detailed description +# +# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. +# The default value is: YES. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator that is +# used to form the text in various listings. Each string in this list, if found +# as the leading text of the brief description, will be stripped from the text +# and the result, after processing the whole list, is used as the annotated +# text. Otherwise, the brief description is used as-is. If left blank, the +# following values are used ($name is automatically replaced with the name of +# the entity):The $name class, The $name widget, The $name file, is, provides, +# specifies, contains, represents, a, an and the. + +ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# doxygen will generate a detailed section even if there is only a brief +# description. +# The default value is: NO. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. +# The default value is: NO. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path +# before files name in the file list and in the header files. If set to NO the +# shortest path that makes the file name unique will be used +# The default value is: YES. + +FULL_PATH_NAMES = YES + +# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. +# Stripping is only done if one of the specified strings matches the left-hand +# part of the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the path to +# strip. +# +# Note that you can specify absolute paths here, but also relative paths, which +# will be relative from the directory where doxygen is started. +# This tag requires that the tag FULL_PATH_NAMES is set to YES. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the +# path mentioned in the documentation of a class, which tells the reader which +# header file to include in order to use a class. If left blank only the name of +# the header file containing the class definition is used. Otherwise one should +# specify the list of include paths that are normally passed to the compiler +# using the -I flag. + +STRIP_FROM_INC_PATH = ../src/ + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but +# less readable) file names. This can be useful is your file systems doesn't +# support long names like on DOS, Mac, or CD-ROM. +# The default value is: NO. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the +# first line (until the first dot) of a Javadoc-style comment as the brief +# description. If set to NO, the Javadoc-style will behave just like regular Qt- +# style comments (thus requiring an explicit @brief command for a brief +# description.) +# The default value is: NO. + +JAVADOC_AUTOBRIEF = NO + +# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first +# line (until the first dot) of a Qt-style comment as the brief description. If +# set to NO, the Qt-style will behave just like regular Qt-style comments (thus +# requiring an explicit \brief command for a brief description.) +# The default value is: NO. + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a +# multi-line C++ special comment block (i.e. a block of //! or /// comments) as +# a brief description. This used to be the default behavior. The new default is +# to treat a multi-line C++ comment block as a detailed description. Set this +# tag to YES if you prefer the old behavior instead. +# +# Note that setting this tag to YES also means that rational rose comments are +# not recognized any more. +# The default value is: NO. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the +# documentation from any documented member that it re-implements. +# The default value is: YES. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new +# page for each member. If set to NO, the documentation of a member will be part +# of the file/class/namespace that contains it. +# The default value is: NO. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen +# uses this value to replace tabs by spaces in code fragments. +# Minimum value: 1, maximum value: 16, default value: 4. + +TAB_SIZE = 4 + +# This tag can be used to specify a number of aliases that act as commands in +# the documentation. An alias has the form: +# name=value +# For example adding +# "sideeffect=@par Side Effects:\n" +# will allow you to put the command \sideeffect (or @sideeffect) in the +# documentation, which will result in a user-defined paragraph with heading +# "Side Effects:". You can put \n's in the value part of an alias to insert +# newlines. + +#ALIASES = + +# This tag can be used to specify a number of word-keyword mappings (TCL only). +# A mapping has the form "name=value". For example adding "class=itcl::class" +# will allow you to use the command class in the itcl::class meaning. + +TCL_SUBST = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. For +# instance, some of the names that are used will be different. The list of all +# members will be omitted, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or +# Python sources only. Doxygen will then generate output that is more tailored +# for that language. For instance, namespaces will be presented as packages, +# qualified scopes will look different, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources. Doxygen will then generate output that is tailored for Fortran. +# The default value is: NO. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for VHDL. +# The default value is: NO. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given +# extension. Doxygen has a built-in mapping, but you can override or extend it +# using this tag. The format is ext=language, where ext is a file extension, and +# language is one of the parsers supported by doxygen: IDL, Java, Javascript, +# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: +# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran: +# Fortran. In the later case the parser tries to guess whether the code is fixed +# or free formatted code, this is the default for Fortran type files), VHDL. For +# instance to make doxygen treat .inc files as Fortran files (default is PHP), +# and .f files as C (default is Fortran), use: inc=Fortran f=C. +# +# Note: For files without extension you can use no_extension as a placeholder. +# +# Note that for custom extensions you also need to set FILE_PATTERNS otherwise +# the files are not read by doxygen. + +EXTENSION_MAPPING = + +# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments +# according to the Markdown format, which allows for more readable +# documentation. See http://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by doxygen, so you can +# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in +# case of backward compatibilities issues. +# The default value is: YES. + +MARKDOWN_SUPPORT = YES + +# When enabled doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by putting a % sign in front of the word or +# globally by setting AUTOLINK_SUPPORT to NO. +# The default value is: YES. + +AUTOLINK_SUPPORT = YES + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should set this +# tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); +# versus func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. +# The default value is: NO. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. +# The default value is: NO. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: +# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen +# will parse them like normal C++ but will assume all classes use public instead +# of private inheritance when no explicit protection keyword is present. +# The default value is: NO. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate +# getter and setter methods for a property. Setting this option to YES will make +# doxygen to replace the get and set methods by a property in the documentation. +# This will only work if the methods are indeed getting or setting a simple +# type. If this is not the case, or you want to show the methods anyway, you +# should set this option to NO. +# The default value is: YES. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. +# The default value is: NO. + +DISTRIBUTE_GROUP_DOC = NO + +# Set the SUBGROUPING tag to YES to allow class member groups of the same type +# (for instance a group of public functions) to be put as a subgroup of that +# type (e.g. under the Public Functions section). Set it to NO to prevent +# subgrouping. Alternatively, this can be done per class using the +# \nosubgrouping command. +# The default value is: YES. + +SUBGROUPING = YES + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions +# are shown inside the group in which they are included (e.g. using \ingroup) +# instead of on a separate page (for HTML and Man pages) or section (for LaTeX +# and RTF). +# +# Note that this feature does not work in combination with +# SEPARATE_MEMBER_PAGES. +# The default value is: NO. + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions +# with only public data fields or simple typedef fields will be shown inline in +# the documentation of the scope in which they are defined (i.e. file, +# namespace, or group documentation), provided this scope is documented. If set +# to NO, structs, classes, and unions are shown on a separate page (for HTML and +# Man pages) or section (for LaTeX and RTF). +# The default value is: NO. + +INLINE_SIMPLE_STRUCTS = NO + +# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or +# enum is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically be +# useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. +# The default value is: NO. + +TYPEDEF_HIDES_STRUCT = NO + +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This +# cache is used to resolve symbols given their name and scope. Since this can be +# an expensive process and often the same symbol appears multiple times in the +# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small +# doxygen will become slower. If the cache is too large, memory is wasted. The +# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range +# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 +# symbols. At the end of a run doxygen will report the cache usage and suggest +# the optimal cache size from a speed point of view. +# Minimum value: 0, maximum value: 9, default value: 0. + +LOOKUP_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in +# documentation are documented, even if no documentation was available. Private +# class members and static file members will be hidden unless the +# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. +# Note: This will also disable the warnings about undocumented members that are +# normally produced when WARNINGS is set to YES. +# The default value is: NO. + +EXTRACT_ALL = YES + +# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will +# be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal +# scope will be included in the documentation. +# The default value is: NO. + +EXTRACT_PACKAGE = NO + +# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be +# included in the documentation. +# The default value is: NO. + +EXTRACT_STATIC = YES + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined +# locally in source files will be included in the documentation. If set to NO, +# only classes defined in header files are included. Does not have any effect +# for Java sources. +# The default value is: YES. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. If set to YES, local methods, +# which are defined in the implementation section but not in the interface are +# included in the documentation. If set to NO, only methods in the interface are +# included. +# The default value is: NO. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base name of +# the file that contains the anonymous namespace. By default anonymous namespace +# are hidden. +# The default value is: NO. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all +# undocumented members inside documented classes or files. If set to NO these +# members will be included in the various overviews, but no documentation +# section is generated. This option has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. If set +# to NO, these classes will be included in the various overviews. This option +# has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend +# (class|struct|union) declarations. If set to NO, these declarations will be +# included in the documentation. +# The default value is: NO. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any +# documentation blocks found inside the body of a function. If set to NO, these +# blocks will be appended to the function's detailed documentation block. +# The default value is: NO. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation that is typed after a +# \internal command is included. If the tag is set to NO then the documentation +# will be excluded. Set it to YES to include the internal documentation. +# The default value is: NO. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file +# names in lower-case letters. If set to YES, upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. +# The default value is: system dependent. + +CASE_SENSE_NAMES = NO + +# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with +# their full class and namespace scopes in the documentation. If set to YES, the +# scope will be hidden. +# The default value is: NO. + +HIDE_SCOPE_NAMES = NO + +# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will +# append additional text to a page's title, such as Class Reference. If set to +# YES the compound reference will be hidden. +# The default value is: NO. + +HIDE_COMPOUND_REFERENCE= NO + +# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of +# the files that are included by a file in the documentation of that file. +# The default value is: YES. + +SHOW_INCLUDE_FILES = YES + +# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each +# grouped member an include statement to the documentation, telling the reader +# which file to include in order to use the member. +# The default value is: NO. + +SHOW_GROUPED_MEMB_INC = NO + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include +# files with double quotes in the documentation rather than with sharp brackets. +# The default value is: NO. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the +# documentation for inline members. +# The default value is: YES. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the +# (detailed) documentation of file and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. +# The default value is: YES. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief +# descriptions of file, namespace and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. Note that +# this will also influence the order of the classes in the class list. +# The default value is: NO. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the +# (brief and detailed) documentation of class members so that constructors and +# destructors are listed first. If set to NO the constructors will appear in the +# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. +# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief +# member documentation. +# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting +# detailed member documentation. +# The default value is: NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy +# of group names into alphabetical order. If set to NO the group names will +# appear in their defined order. +# The default value is: NO. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by +# fully-qualified names, including namespaces. If set to NO, the class list will +# be sorted only by class name, not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the alphabetical +# list. +# The default value is: NO. + +SORT_BY_SCOPE_NAME = NO + +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper +# type resolution of all parameters of a function it will reject a match between +# the prototype and the implementation of a member function even if there is +# only one candidate or it is obvious which candidate to choose by doing a +# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still +# accept a match between prototype and implementation in such cases. +# The default value is: NO. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo +# list. This list is created by putting \todo commands in the documentation. +# The default value is: YES. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test +# list. This list is created by putting \test commands in the documentation. +# The default value is: YES. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug +# list. This list is created by putting \bug commands in the documentation. +# The default value is: YES. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) +# the deprecated list. This list is created by putting \deprecated commands in +# the documentation. +# The default value is: YES. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional documentation +# sections, marked by \if ... \endif and \cond +# ... \endcond blocks. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the +# initial value of a variable or macro / define can have for it to appear in the +# documentation. If the initializer consists of more lines than specified here +# it will be hidden. Use a value of 0 to hide initializers completely. The +# appearance of the value of individual variables and macros / defines can be +# controlled using \showinitializer or \hideinitializer command in the +# documentation regardless of this setting. +# Minimum value: 0, maximum value: 10000, default value: 30. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at +# the bottom of the documentation of classes and structs. If set to YES, the +# list will mention the files that were used to generate the documentation. +# The default value is: YES. + +SHOW_USED_FILES = YES + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This +# will remove the Files entry from the Quick Index and from the Folder Tree View +# (if specified). +# The default value is: YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces +# page. This will remove the Namespaces entry from the Quick Index and from the +# Folder Tree View (if specified). +# The default value is: YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command command input-file, where command is the value of the +# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided +# by doxygen. Whatever the program writes to standard output is used as the file +# version. For an example see the documentation. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. You can +# optionally specify a file name after the option, if omitted DoxygenLayout.xml +# will be used as the name of the layout file. +# +# Note that if you run doxygen from a directory containing a file called +# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE +# tag is left empty. + +LAYOUT_FILE = + +# The CITE_BIB_FILES tag can be used to specify one or more bib files containing +# the reference definitions. This must be a list of .bib files. The .bib +# extension is automatically appended if omitted. This requires the bibtex tool +# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. +# For LaTeX the style of the bibliography can be controlled using +# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the +# search path. See also \cite for info how to create references. + +CITE_BIB_FILES = + +#--------------------------------------------------------------------------- +# Configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated to +# standard output by doxygen. If QUIET is set to YES this implies that the +# messages are off. +# The default value is: NO. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES +# this implies that the warnings are on. +# +# Tip: Turn warnings on while writing the documentation. +# The default value is: YES. + +WARNINGS = YES + +# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate +# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: YES. + +WARN_IF_UNDOCUMENTED = YES + +# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some parameters +# in a documented function, or documenting parameters that don't exist or using +# markup commands wrongly. +# The default value is: YES. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that +# are documented, but have no documentation for their parameters or return +# value. If set to NO, doxygen will only warn about wrong or incomplete +# parameter documentation, but not about the absence of documentation. +# The default value is: NO. + +WARN_NO_PARAMDOC = NO + +# The WARN_FORMAT tag determines the format of the warning messages that doxygen +# can produce. The string should contain the $file, $line, and $text tags, which +# will be replaced by the file and line number from which the warning originated +# and the warning text. Optionally the format may contain $version, which will +# be replaced by the version of the file (if it could be obtained via +# FILE_VERSION_FILTER) +# The default value is: $file:$line: $text. + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning and error +# messages should be written. If left blank the output is written to standard +# error (stderr). + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# Configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag is used to specify the files and/or directories that contain +# documented source files. You may enter file names like myfile.cpp or +# directories like /usr/src/myproject. Separate the files or directories with +# spaces. +# Note: If this tag is empty the current directory is searched. + +INPUT = ../src/libdynamixel + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses +# libiconv (or the iconv built into libc) for the transcoding. See the libiconv +# documentation (see: http://www.gnu.org/software/libiconv) for the list of +# possible encodings. +# The default value is: UTF-8. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank the +# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii, +# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, +# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, +# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf, +# *.qsf, *.as and *.js. + +FILE_PATTERNS = + +# The RECURSIVE tag can be used to specify whether or not subdirectories should +# be searched for input files as well. +# The default value is: NO. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should be +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. +# +# Note that relative paths are relative to the directory from which doxygen is +# run. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. +# The default value is: NO. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories use the pattern */test/* + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or directories +# that contain example code fragments that are included (see the \include +# command). + +EXAMPLE_PATH = ../examples + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank all +# files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude commands +# irrespective of the value of the RECURSIVE tag. +# The default value is: NO. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or directories +# that contain images that are to be included in the documentation (see the +# \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command: +# +# +# +# where is the value of the INPUT_FILTER tag, and is the +# name of an input file. Doxygen will then use the output that the filter +# program writes to standard output. If FILTER_PATTERNS is specified, this tag +# will be ignored. +# +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: pattern=filter +# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how +# filters are used. If the FILTER_PATTERNS tag is empty or if none of the +# patterns match the file name, INPUT_FILTER is applied. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will also be used to filter the input files that are used for +# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). +# The default value is: NO. + +FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and +# it is also possible to disable source filtering for a specific pattern using +# *.ext= (so without naming a filter). +# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. + +FILTER_SOURCE_PATTERNS = + +# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (index.html). This can be useful if you have a project on for instance GitHub +# and want to reuse the introduction page also for the doxygen output. + +USE_MDFILE_AS_MAINPAGE = + +#--------------------------------------------------------------------------- +# Configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will be +# generated. Documented entities will be cross-referenced with these sources. +# +# Note: To get rid of all source code in the generated output, make sure that +# also VERBATIM_HEADERS is set to NO. +# The default value is: NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body of functions, +# classes and enums directly into the documentation. +# The default value is: NO. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any +# special comment blocks from generated source code fragments. Normal C, C++ and +# Fortran comments will always remain visible. +# The default value is: YES. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES then for each documented +# function all documented functions referencing it will be listed. +# The default value is: NO. + +REFERENCED_BY_RELATION = NO + +# If the REFERENCES_RELATION tag is set to YES then for each documented function +# all documented entities called/used by that function will be listed. +# The default value is: NO. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set +# to YES then the hyperlinks from functions in REFERENCES_RELATION and +# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will +# link to the documentation. +# The default value is: YES. + +REFERENCES_LINK_SOURCE = YES + +# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the +# source code will show a tooltip with additional information such as prototype, +# brief description and links to the definition and documentation. Since this +# will make the HTML file larger and loading of large files a bit slower, you +# can opt to disable this feature. +# The default value is: YES. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +SOURCE_TOOLTIPS = YES + +# If the USE_HTAGS tag is set to YES then the references to source code will +# point to the HTML generated by the htags(1) tool instead of doxygen built-in +# source browser. The htags tool is part of GNU's global source tagging system +# (see http://www.gnu.org/software/global/global.html). You will need version +# 4.8.6 or higher. +# +# To use it do the following: +# - Install the latest version of global +# - Enable SOURCE_BROWSER and USE_HTAGS in the config file +# - Make sure the INPUT points to the root of the source tree +# - Run doxygen as normal +# +# Doxygen will invoke htags (and that will in turn invoke gtags), so these +# tools must be available from the command line (i.e. in the search path). +# +# The result: instead of the source browser generated by doxygen, the links to +# source code will now point to the output of htags. +# The default value is: NO. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a +# verbatim copy of the header file for each class for which an include is +# specified. Set to NO to disable this. +# See also: Section \class. +# The default value is: YES. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# Configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all +# compounds will be generated. Enable this if the project contains a lot of +# classes, structs, unions or interfaces. +# The default value is: YES. + +ALPHABETICAL_INDEX = YES + +# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in +# which the alphabetical index list will be split. +# Minimum value: 1, maximum value: 20, default value: 5. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all classes will +# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag +# can be used to specify a prefix (or a list of prefixes) that should be ignored +# while generating the index headers. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output +# The default value is: YES. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each +# generated HTML page (for example: .htm, .php, .asp). +# The default value is: .html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a user-defined HTML header file for +# each generated HTML page. If the tag is left blank doxygen will generate a +# standard header. +# +# To get valid HTML the header file that includes any scripts and style sheets +# that doxygen needs, which is dependent on the configuration options used (e.g. +# the setting GENERATE_TREEVIEW). It is highly recommended to start with a +# default header using +# doxygen -w html new_header.html new_footer.html new_stylesheet.css +# YourConfigFile +# and then modify the file new_header.html. See also section "Doxygen usage" +# for information on how to generate the default header that doxygen normally +# uses. +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of doxygen. For a description +# of the possible markers and block names see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each +# generated HTML page. If the tag is left blank doxygen will generate a standard +# footer. See HTML_HEADER for more information on how to generate a default +# footer and what special commands can be used inside the footer. See also +# section "Doxygen usage" for information on how to generate the default footer +# that doxygen normally uses. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style +# sheet that is used by each HTML page. It can be used to fine-tune the look of +# the HTML output. If left blank doxygen will generate a default style sheet. +# See also section "Doxygen usage" for information on how to generate the style +# sheet that doxygen normally uses. +# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as +# it is more robust and this tag (HTML_STYLESHEET) will in the future become +# obsolete. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_STYLESHEET = + +# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# cascading style sheets that are included after the standard style sheets +# created by doxygen. Using this option one can overrule certain style aspects. +# This is preferred over using HTML_STYLESHEET since it does not replace the +# standard style sheet and is therefore more robust against future updates. +# Doxygen will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). For an example see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_STYLESHEET = + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that the +# files will be copied as-is; there are no commands or markers available. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen +# will adjust the colors in the style sheet and background images according to +# this color. Hue is specified as an angle on a colorwheel, see +# http://en.wikipedia.org/wiki/Hue for more information. For instance the value +# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 +# purple, and 360 is red again. +# Minimum value: 0, maximum value: 359, default value: 220. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors +# in the HTML output. For a value of 0 the output will use grayscales only. A +# value of 255 will produce the most vivid colors. +# Minimum value: 0, maximum value: 255, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the +# luminance component of the colors in the HTML output. Values below 100 +# gradually make the output lighter, whereas values above 100 make the output +# darker. The value divided by 100 is the actual gamma applied, so 80 represents +# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not +# change the gamma. +# Minimum value: 40, maximum value: 240, default value: 80. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting this +# to NO can help when comparing the output of multiple runs. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_TIMESTAMP = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_SECTIONS = NO + +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries +# shown in the various tree structured indices initially; the user can expand +# and collapse entries dynamically later on. Doxygen will expand the tree to +# such a level that at most the specified number of entries are visible (unless +# a fully collapsed tree already exceeds this amount). So setting the number of +# entries 1 will produce a full collapsed tree by default. 0 is a special value +# representing an infinite number of entries and will result in a full expanded +# tree by default. +# Minimum value: 0, maximum value: 9999, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_INDEX_NUM_ENTRIES = 100 + +# If the GENERATE_DOCSET tag is set to YES, additional index files will be +# generated that can be used as input for Apple's Xcode 3 integrated development +# environment (see: http://developer.apple.com/tools/xcode/), introduced with +# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a +# Makefile in the HTML output directory. Running make will produce the docset in +# that directory and running make install will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at +# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html +# for more information. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_DOCSET = NO + +# This tag determines the name of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# The default value is: Doxygen generated docs. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# This tag specifies a string that should uniquely identify the documentation +# set bundle. This should be a reverse domain-name style string, e.g. +# com.mycompany.MyDocSet. Doxygen will append .docset to the name. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. +# The default value is: org.doxygen.Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. +# The default value is: Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three +# additional HTML index files: index.hhp, index.hhc, and index.hhk. The +# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop +# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on +# Windows. +# +# The HTML Help Workshop contains a compiler that can convert all HTML output +# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML +# files are now used as the Windows 98 help format, and will replace the old +# Windows help format (.hlp) on all Windows platforms in the future. Compressed +# HTML files also contain an index, a table of contents, and you can search for +# words in the documentation. The HTML workshop also contains a viewer for +# compressed HTML files. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_HTMLHELP = NO + +# The CHM_FILE tag can be used to specify the file name of the resulting .chm +# file. You can add a path in front of the file if the result should not be +# written to the html output directory. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_FILE = + +# The HHC_LOCATION tag can be used to specify the location (absolute path +# including file name) of the HTML help compiler (hhc.exe). If non-empty, +# doxygen will try to run the HTML help compiler on the generated index.hhp. +# The file has to be specified with full path. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +HHC_LOCATION = + +# The GENERATE_CHI flag controls if a separate .chi index file is generated +# (YES) or that it should be included in the master .chm file (NO). +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +GENERATE_CHI = NO + +# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) +# and project file content. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_INDEX_ENCODING = + +# The BINARY_TOC flag controls whether a binary table of contents is generated +# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it +# enables the Previous and Next buttons. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members to +# the table of contents of the HTML help documentation and to the tree view. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that +# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help +# (.qch) of the generated HTML documentation. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify +# the file name of the resulting .qch file. The path specified is relative to +# the HTML output folder. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help +# Project output. For more information please see Qt Help Project / Namespace +# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt +# Help Project output. For more information please see Qt Help Project / Virtual +# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- +# folders). +# The default value is: doc. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_VIRTUAL_FOLDER = doc + +# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom +# filter to add. For more information please see Qt Help Project / Custom +# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see Qt Help Project / Custom +# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's filter section matches. Qt Help Project / Filter Attributes (see: +# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_SECT_FILTER_ATTRS = + +# The QHG_LOCATION tag can be used to specify the location of Qt's +# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the +# generated .qhp file. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be +# generated, together with the HTML files, they form an Eclipse help plugin. To +# install this plugin and make it available under the help contents menu in +# Eclipse, the contents of the directory containing the HTML and XML files needs +# to be copied into the plugins directory of eclipse. The name of the directory +# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. +# After copying Eclipse needs to be restarted before the help appears. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the Eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have this +# name. Each documentation set should have its own identifier. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# If you want full control over the layout of the generated HTML pages it might +# be necessary to disable the index and replace it with your own. The +# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top +# of each HTML page. A value of NO enables the index and the value YES disables +# it. Since the tabs in the index contain the same information as the navigation +# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +DISABLE_INDEX = NO + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. If the tag +# value is set to YES, a side panel will be generated containing a tree-like +# index structure (just like the one that is generated for HTML Help). For this +# to work a browser that supports JavaScript, DHTML, CSS and frames is required +# (i.e. any modern browser). Windows users are probably better off using the +# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can +# further fine-tune the look of the index. As an example, the default style +# sheet generated by doxygen has an example that shows how to put an image at +# the root of the tree instead of the PROJECT_NAME. Since the tree basically has +# the same information as the tab index, you could consider setting +# DISABLE_INDEX to YES when enabling this option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_TREEVIEW = NO + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that +# doxygen will group on one line in the generated HTML documentation. +# +# Note that a value of 0 will completely suppress the enum values from appearing +# in the overview section. +# Minimum value: 0, maximum value: 20, default value: 4. +# This tag requires that the tag GENERATE_HTML is set to YES. + +ENUM_VALUES_PER_LINE = 4 + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used +# to set the initial width (in pixels) of the frame in which the tree is shown. +# Minimum value: 0, maximum value: 1500, default value: 250. +# This tag requires that the tag GENERATE_HTML is set to YES. + +TREEVIEW_WIDTH = 250 + +# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to +# external symbols imported via tag files in a separate window. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +EXT_LINKS_IN_WINDOW = NO + +# Use this tag to change the font size of LaTeX formulas included as images in +# the HTML documentation. When you change the font size after a successful +# doxygen run you need to manually remove any form_*.png images from the HTML +# output directory to force them to be regenerated. +# Minimum value: 8, maximum value: 50, default value: 10. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_FONTSIZE = 10 + +# Use the FORMULA_TRANPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are not +# supported properly for IE 6.0, but are supported on all modern browsers. +# +# Note that when changing this option you need to delete any form_*.png files in +# the HTML output directory before the changes have effect. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_TRANSPARENT = YES + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see +# http://www.mathjax.org) which uses client side Javascript for the rendering +# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX +# installed or if you want to formulas look prettier in the HTML output. When +# enabled you may also need to install MathJax separately and configure the path +# to it using the MATHJAX_RELPATH option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +USE_MATHJAX = NO + +# When MathJax is enabled you can set the default output format to be used for +# the MathJax output. See the MathJax site (see: +# http://docs.mathjax.org/en/latest/output.html) for more details. +# Possible values are: HTML-CSS (which is slower, but has the best +# compatibility), NativeMML (i.e. MathML) and SVG. +# The default value is: HTML-CSS. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the HTML +# output directory using the MATHJAX_RELPATH option. The destination directory +# should contain the MathJax.js script. For instance, if the mathjax directory +# is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax +# Content Delivery Network so you can quickly see the result without installing +# MathJax. However, it is strongly recommended to install a local copy of +# MathJax from http://www.mathjax.org before deployment. +# The default value is: http://cdn.mathjax.org/mathjax/latest. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest + +# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax +# extension names that should be enabled during MathJax rendering. For example +# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_EXTENSIONS = + +# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces +# of code that will be used on startup of the MathJax code. See the MathJax site +# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an +# example see the documentation. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_CODEFILE = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box for +# the HTML output. The underlying search engine uses javascript and DHTML and +# should work on any modern browser. Note that when using HTML help +# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) +# there is already a search function so this one should typically be disabled. +# For large projects the javascript based search engine can be slow, then +# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to +# search using the keyboard; to jump to the search box use + S +# (what the is depends on the OS and browser, but it is typically +# , /

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%0AU{m8Z@Qa^}d>jE&Uj@2j8^K{@nrg`&C9L;*>b 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 EQShG1lBc1PX^KcF*R?8(19xZu%dd`hIxB1!^ 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 T-kG~700000NkvXXu0mjf?R5@4 literal 0 HcmV?d00001 From 192e0731b6d8a2353181de88e711a1c42ccbd884 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mouret Date: Mon, 13 Mar 2017 19:22:51 +0100 Subject: [PATCH 42/68] test picture again --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index c7fc4bde..197a6bc4 100644 --- a/README.rst +++ b/README.rst @@ -20,7 +20,7 @@ The full documentation (including tutorials, guides, and API) is available on th Projects using this library =========================== -.. image:: pics/three_robots.png +.. image:: http://github.com/resibots/libdynamixel/doc/pics/three_robots.png :alt: ResiBots Robots :align: center From 169e0f6c070321aefc16735a0c671ace0c00e9d8 Mon Sep 17 00:00:00 2001 From: Dorian Goepp Date: Thu, 16 Mar 2017 10:22:09 +0100 Subject: [PATCH 43/68] add link to Limbo --- doc/conf.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/conf.py b/doc/conf.py index 671aebb1..07731935 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -130,7 +130,10 @@ "logo_url": "http://www.resibots.eu", 'breadcrumb_root': 'libdynamixel', # set a custom name to the breacumb root 'contact_url': 'mailto:jean-baptiste.mouret@inria.fr', # add a "Contact us link" at the bottom with URL - 'toc_befores': [("Project's website", "http://www.resibots.eu"), ("libdynamixel (dynamixel library)", "http://www.resibots.eu/libdynamixel/")], + 'toc_befores': [ + ("Project's website", "http://www.resibots.eu"), + ("Limbo (BO library)", "http://www.resibots.eu/limbo/") + ], "toc_afters": [('github', 'http://github.com/resibots/libdynamixel' )], } From 0bf491902a9dcfb0571a27f5b8b2b2fd4cc573d0 Mon Sep 17 00:00:00 2001 From: Dorian Goepp Date: Thu, 16 Mar 2017 11:24:32 +0100 Subject: [PATCH 44/68] relative path for picture --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index 197a6bc4..37a17c09 100644 --- a/README.rst +++ b/README.rst @@ -20,7 +20,7 @@ The full documentation (including tutorials, guides, and API) is available on th Projects using this library =========================== -.. image:: http://github.com/resibots/libdynamixel/doc/pics/three_robots.png +.. image:: doc/pics/three_robots.png :alt: ResiBots Robots :align: center From 76c3a990be3f8b0f0e9449985a3de7985a994b21 Mon Sep 17 00:00:00 2001 From: Dorian Goepp Date: Thu, 16 Mar 2017 11:29:09 +0100 Subject: [PATCH 45/68] missing newlines --- README.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.rst b/README.rst index 37a17c09..6ed14fc1 100644 --- a/README.rst +++ b/README.rst @@ -8,6 +8,7 @@ We also provide a simple command-line tool that allows to change the IDs, the ba Main features =============== + * Support for Dynamixel series AX, MX, EX, XL and Pro * Support for all instructions and messages of both version 1 and 2 of the Dynamixel communication protocol (including torque control, speed control, etc.) * Full C++11 API @@ -26,6 +27,7 @@ Projects using this library This library is used in most of the robots designed in ERC project `ResiBots `_ (funded by the European Research Council), in particular : + * several 18-DOFs hexapod robots (based on MX-28 actuators); * a mobile manipulator based on Dynamixel Pro actuators and the Kuka Youbot (omnidirectionnal platform); * a wheel-legged hybrid robot (based on MX-128 actuators); From f61db69d1620db960b419b6efd56e46d707b46fd Mon Sep 17 00:00:00 2001 From: Dorian Goepp Date: Thu, 16 Mar 2017 11:32:53 +0100 Subject: [PATCH 46/68] move ROS interface --- README.rst | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/README.rst b/README.rst index 6ed14fc1..a2e009f4 100644 --- a/README.rst +++ b/README.rst @@ -12,6 +12,7 @@ Main features * Support for Dynamixel series AX, MX, EX, XL and Pro * Support for all instructions and messages of both version 1 and 2 of the Dynamixel communication protocol (including torque control, speed control, etc.) * Full C++11 API +* An optional ROS interface (hardware interface) is available in a separate repository (`dynamixel_control_hw `_). Documentation ============== @@ -48,10 +49,6 @@ This library has been used in many scientific publications, in particular: *Please let us know if you use this library in a scientific publication.* -ROS interface -================ -An optional ROS interface (hardware interface) is available in a separate repository (`dynamixel_control_hw `_). - Building ======== Dependencies : From 1074f8357b7b13759ae489bdf35e382c587a7f3c Mon Sep 17 00:00:00 2001 From: Dorian Goepp Date: Thu, 16 Mar 2017 11:33:16 +0100 Subject: [PATCH 47/68] remove udev rule --- README.rst | 7 ------- 1 file changed, 7 deletions(-) diff --git a/README.rst b/README.rst index a2e009f4..56cae23d 100644 --- a/README.rst +++ b/README.rst @@ -72,13 +72,6 @@ The build system for this library is Waf. Don't run away yet. It has the big adv You get the ``dynamixel`` toolset and the demo programms compiled in the ``build/default/src`` folder. - -udev rule for USB2AX adapter -============================ -For Gnu/Linux only. - -If you want your USB2AX serial interface to appear in ``/dev`` as ``usb2axN`` (where N is a kernel-attributed integer), you can install the udev rule. It is as simple as moving the ``usb2ax.rules`` file in this repository to the folder for the udev rules. For ubuntu, it is ``/etc/udev/rules.d``. - Support ======= This library is actively used and regularly developped. If you need some help, feel free to `fill an issue `_ on this repository. We'll do our best to be responsive. From 49529ed3c17869264a4a4b12c87c34bee0b8c2b1 Mon Sep 17 00:00:00 2001 From: Dorian Goepp Date: Thu, 16 Mar 2017 11:33:33 +0100 Subject: [PATCH 48/68] alternative software is a list --- README.rst | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/README.rst b/README.rst index 56cae23d..379fc56c 100644 --- a/README.rst +++ b/README.rst @@ -79,9 +79,8 @@ This library is actively used and regularly developped. If you need some help, f Alternative software ==================== -Inria FLOWERS team developped `pybot `_, a python library to control a Dynamixel-based robot. - -The official `Robotis SDK `_. +* Inria FLOWERS team developped `pybot `_, a python library to control a Dynamixel-based robot. +* The official `Robotis SDK `_. License and authors =================== From 0a7c9a9c38426fe4b0573bcd3328b7b3010496e4 Mon Sep 17 00:00:00 2001 From: Dorian Goepp Date: Thu, 16 Mar 2017 11:33:49 +0100 Subject: [PATCH 49/68] make documentation header into a link --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index 379fc56c..0d8f197c 100644 --- a/README.rst +++ b/README.rst @@ -14,7 +14,7 @@ Main features * Full C++11 API * An optional ROS interface (hardware interface) is available in a separate repository (`dynamixel_control_hw `_). -Documentation +`Documentation `_ ============== The full documentation (including tutorials, guides, and API) is available on the `ResiBots website `_ From 66bacce961c4aef8380be2db5a8fb84a03955474 Mon Sep 17 00:00:00 2001 From: Dorian Goepp Date: Thu, 16 Mar 2017 13:54:43 +0100 Subject: [PATCH 50/68] details in the code's doxygen comments --- src/dynamixel/controllers/usb2dynamixel.hpp | 8 ++++++-- src/dynamixel/instruction_packet.hpp | 9 ++++++--- src/dynamixel/status_packet.hpp | 8 +++++--- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/dynamixel/controllers/usb2dynamixel.hpp b/src/dynamixel/controllers/usb2dynamixel.hpp index 37461d90..9daa3f08 100644 --- a/src/dynamixel/controllers/usb2dynamixel.hpp +++ b/src/dynamixel/controllers/usb2dynamixel.hpp @@ -51,9 +51,10 @@ namespace dynamixel { @param name path to the UNIX serial port, usually ends like "ttyUSBx" or "ttyACMx" where x is an integer - @param baudrate represent the communication speed; it is defined as - an integer by the operating system. the standard values are: + @param baudrate represent the communication speed; it is defined + by the operating system. the standard values are: \verbatim embed:rst + * B0 * B50 * B75 @@ -73,6 +74,7 @@ namespace dynamixel { * B57600 * B76800 * B115200 + B1000000 corresponds to :math:`10^6` bauds. It is not a standard POSIX value but is accepted on GNU/Linux. \endverbatim @@ -111,6 +113,8 @@ namespace dynamixel { tcsetattr(_fd, TCSANOW, &tio_serial); } + /** Close the serial port + **/ void close_serial() { close(_fd); diff --git a/src/dynamixel/instruction_packet.hpp b/src/dynamixel/instruction_packet.hpp index 69cdf7b5..b2ac06d8 100644 --- a/src/dynamixel/instruction_packet.hpp +++ b/src/dynamixel/instruction_packet.hpp @@ -8,9 +8,12 @@ namespace dynamixel { /** - Abstract class for instructions - @see Protocol1: http://support.robotis.com/en/product/actuator/dynamixel/communication/dxl_packet.htm - @see Protocol2: http://support.robotis.com/en/product/actuator/dynamixel_pro/communication/instruction_status_packet.htm + Abstract class for instructions + + @see Robotis' documentation for + [protocol1](http://support.robotis.com/en/product/actuator/dynamixel/communication/dxl_packet.htm) + and [protocol2](http://support.robotis.com/en/product/actuator/dynamixel_pro/communication/instruction_status_packet.htm) + **/ template class InstructionPacket { diff --git a/src/dynamixel/status_packet.hpp b/src/dynamixel/status_packet.hpp index bf0975fe..f2e6751f 100644 --- a/src/dynamixel/status_packet.hpp +++ b/src/dynamixel/status_packet.hpp @@ -9,10 +9,12 @@ namespace dynamixel { /** - This class represents packets that are received on the bus. + This class represents packets that are received on the bus. + + @see Protocol1: http://support.robotis.com/en/product/actuator/dynamixel/communication/dxl_packet.htm#Status_Packet + + @see Protocol2: http://support.robotis.com/en/product/actuator/dynamixel_pro/communication/instruction_status_packet.htm - @see Protocol1: http://support.robotis.com/en/product/actuator/dynamixel/communication/dxl_packet.htm#Status_Packet - @see Protocol2: http://support.robotis.com/en/product/actuator/dynamixel_pro/communication/instruction_status_packet.htm **/ template class StatusPacket { From e99d4011944fed648e3179e5c6a084898fb76aca Mon Sep 17 00:00:00 2001 From: Dorian Goepp Date: Thu, 16 Mar 2017 13:55:54 +0100 Subject: [PATCH 51/68] syntactic improvements --- doc/low_level_api.rst | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/doc/low_level_api.rst b/doc/low_level_api.rst index 689ed8e7..7287bc77 100644 --- a/doc/low_level_api.rst +++ b/doc/low_level_api.rst @@ -15,17 +15,16 @@ Instructions Packets Abstract class (InstructionPacket) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -For details about instructions, see: -* protocol 1: http://support.robotis.com/en/product/actuator/dynamixel/communication/dxl_instruction.htm -* protocol 2: http://support.robotis.com/en/product/actuator/dynamixel_pro/communication/instruction_status_packet.htm +For details about instructions, see Robotis' documentation for `protocol 1 `__ and `protocol 2 `__. .. doxygenclass:: dynamixel::InstructionPacket - :members: - :undoc-members: + :members: + :undoc-members: Instructions ^^^^^^^^^^^^ + .. doxygengroup:: instructions :members: @@ -33,22 +32,24 @@ Status packets (StatusPacket) ----------------------------- .. doxygenclass:: dynamixel::StatusPacket - :members: - :undoc-members: + :members: + :undoc-members: Errors ------ Abstract class (Error) ^^^^^^^^^^^^^^^^^^^^^^^ + All errors derive from ``dynamixel::error::Error``: .. doxygenclass:: dynamixel::errors::Error - :members: - :undoc-members: + :members: + :undoc-members: Error classes ^^^^^^^^^^^^^^ + .. doxygengroup:: errors :members: From d53d8bd00859be252661febc62ce5da18cbfd59d Mon Sep 17 00:00:00 2001 From: Dorian Goepp Date: Thu, 16 Mar 2017 13:56:07 +0100 Subject: [PATCH 52/68] move API doc from low level to high level --- doc/high_level_api.rst | 7 +++++++ doc/low_level_api.rst | 9 --------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/doc/high_level_api.rst b/doc/high_level_api.rst index 6dcde434..c80a08c4 100644 --- a/doc/high_level_api.rst +++ b/doc/high_level_api.rst @@ -1,6 +1,13 @@ High level API =============== +Controllers +----------- + +.. doxygenclass:: dynamixel::controllers::Usb2Dynamixel + :members: + :undoc-members: + Auto-detection of servos ------------------------- There are two versions of the auto detection, one that returns a vector and one that returns a map. diff --git a/doc/low_level_api.rst b/doc/low_level_api.rst index 7287bc77..bdd28468 100644 --- a/doc/low_level_api.rst +++ b/doc/low_level_api.rst @@ -1,15 +1,6 @@ Low level API ============= - -Controllers ------------ -.. doxygenclass:: dynamixel::controllers::Usb2Dynamixel - :members: - :undoc-members: - - - Instructions Packets -------------------- From d1670445f035f7d3bba4828bd672cbbdf99107ba Mon Sep 17 00:00:00 2001 From: Dorian Goepp Date: Fri, 17 Mar 2017 10:29:56 +0100 Subject: [PATCH 53/68] correct class name --- doc/high_level_api.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/high_level_api.rst b/doc/high_level_api.rst index c80a08c4..3eab4fb6 100644 --- a/doc/high_level_api.rst +++ b/doc/high_level_api.rst @@ -16,10 +16,10 @@ There are two versions of the auto detection, one that returns a vector and one .. doxygenfunction:: dynamixel::auto_detect_map -Servo object (ServoBase) +Servo object (BaseServo) ------------------------ -The auto-detection will return ``ServoBase`` objects (that is, objects of sub-classes of ``ServoBase``) +The auto-detection will return ``BaseServo`` objects (that is, objects of sub-classes of ``BaseServo``) .. doxygenclass:: dynamixel::servos::BaseServo :members: From a0945393e9fa4756d7d254534c17ebfc6e3fc635 Mon Sep 17 00:00:00 2001 From: Dorian Goepp Date: Fri, 17 Mar 2017 10:30:25 +0100 Subject: [PATCH 54/68] fix exception class in doxygen --- src/dynamixel/auto_detect.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dynamixel/auto_detect.hpp b/src/dynamixel/auto_detect.hpp index 99cd0fd8..32954859 100644 --- a/src/dynamixel/auto_detect.hpp +++ b/src/dynamixel/auto_detect.hpp @@ -123,7 +123,7 @@ namespace dynamixel { @param controller object handling the USB to dynamixel interface, instance of the dynamixel::controllers::Usb2Dynamixel class @return vector of actuators - @throws dynamixel::errors::Errors if there is a problem during send + @throws dynamixel::errors::Error if there is a problem during send @throws dynamixel::errors::UnpackError if the size of received packet is not correct **/ From 8a882fde32bacec3de235dc8d42e0830e2c76336 Mon Sep 17 00:00:00 2001 From: Dorian Goepp Date: Fri, 28 Apr 2017 10:49:00 +0200 Subject: [PATCH 55/68] a todo --- doc/index.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/index.rst b/doc/index.rst index 7e69bd90..352396e7 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -7,6 +7,8 @@ libdynamixel This library comes with a command line utility that can, among other things, be very convenient for the configuration of your actuators. +.. todo:: link to command line utility + Features -------- From 9b80a3aa14675e9fa994033aaa4029a046d7135d Mon Sep 17 00:00:00 2001 From: Dorian Goepp Date: Fri, 28 Apr 2017 10:49:13 +0200 Subject: [PATCH 56/68] minor rephrase --- doc/index.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/index.rst b/doc/index.rst index 352396e7..b992bf9a 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -17,7 +17,7 @@ Features * full C++11 api * template-based API for fast and low-level access - * class-based unified API abstracting away the differences between the actuators (as long as they use the same Dynamixel protocol). + * class-based unified API that abstracts away the differences between the actuators (as long as they use the same Dynamixel protocol). Contents -------- From 24712eb1d850c1c6002a53583134b9b16e67b145 Mon Sep 17 00:00:00 2001 From: Dorian Goepp Date: Fri, 28 Apr 2017 11:04:51 +0200 Subject: [PATCH 57/68] links to USB2AX --- doc/high_level_api.rst | 3 +++ doc/reference/architecture.rst | 4 +++- doc/tutorials/download_and_compilation.rst | 4 +++- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/doc/high_level_api.rst b/doc/high_level_api.rst index 3eab4fb6..bb33d6e8 100644 --- a/doc/high_level_api.rst +++ b/doc/high_level_api.rst @@ -3,6 +3,9 @@ High level API Controllers ----------- +For now there is only one controller class called ``Usb2Dynamixel``. It handles the USB to serial interface, be it the official USB2Dynamixel or the `USB2AX`_. + +.. _USB2AX: http://www.xevelabs.com/doku.php?id=product:usb2ax:usb2ax .. doxygenclass:: dynamixel::controllers::Usb2Dynamixel :members: diff --git a/doc/reference/architecture.rst b/doc/reference/architecture.rst index fd5bf3a5..7ccd3dc1 100644 --- a/doc/reference/architecture.rst +++ b/doc/reference/architecture.rst @@ -19,7 +19,9 @@ The client interacts with Dynamixels by sending instructions and receiving statu Serial interface ---------------- -All communication with the dynamixel has to go through a serial interface. We support both `USB2AX `__ and `USB2DYNAMIXEL `__ in the class :cpp:class:`controllers::Usb2Dynamixel`. Other serial interfaces should also work. +All communication with the dynamixel has to go through a serial interface. We support both `USB2AX`_ and `USB2DYNAMIXEL `__ in the class :cpp:class:`controllers::Usb2Dynamixel`. Other serial interfaces should also work. + +.. _USB2AX: http://www.xevelabs.com/doku.php?id=product:usb2ax:usb2ax Instructions and status report ------------------------------ diff --git a/doc/tutorials/download_and_compilation.rst b/doc/tutorials/download_and_compilation.rst index 0a88a256..17ef02e7 100644 --- a/doc/tutorials/download_and_compilation.rst +++ b/doc/tutorials/download_and_compilation.rst @@ -133,4 +133,6 @@ udev rule for USB2AX adapter .. note:: For Gnu/Linux only -To have the `USB2AX `__ serial interface appear as :file:`/dev/usb2ax{N}` (where N is a kernel-attributed integer), you can install the provided udev rule. It is as simple as moving the :file:`usb2ax.rules` file from the root of the library to the for the udev rules folder. For ubuntu, it is :file:`/etc/udev/rules.d`. +To have the `USB2AX`_ serial interface appear as :file:`/dev/usb2ax{N}` (where N is a kernel-attributed integer), you can install the provided udev rule. It is as simple as moving the :file:`usb2ax.rules` file from the root of the library to the for the udev rules folder. For ubuntu, it is :file:`/etc/udev/rules.d`. + +.. _USB2AX: http://www.xevelabs.com/doku.php?id=product:usb2ax:usb2ax \ No newline at end of file From ab00256f09409a9254845ae525b7e85bbcfb940a Mon Sep 17 00:00:00 2001 From: Dorian Goepp Date: Fri, 28 Apr 2017 11:11:00 +0200 Subject: [PATCH 58/68] more on controllers --- doc/high_level_api.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/high_level_api.rst b/doc/high_level_api.rst index bb33d6e8..e795c8d3 100644 --- a/doc/high_level_api.rst +++ b/doc/high_level_api.rst @@ -3,7 +3,7 @@ High level API Controllers ----------- -For now there is only one controller class called ``Usb2Dynamixel``. It handles the USB to serial interface, be it the official USB2Dynamixel or the `USB2AX`_. +For now there is only one controller class called ``Usb2Dynamixel``. It handles the USB to serial interface, be it the official USB2Dynamixel or the `USB2AX`_. More contcretely, this is the class you use to send and recieve packets on the servos' bus. .. _USB2AX: http://www.xevelabs.com/doku.php?id=product:usb2ax:usb2ax From 52b059420cb2315a2ede53ac6d8f435c2caa3e4a Mon Sep 17 00:00:00 2001 From: Dorian Goepp Date: Fri, 28 Apr 2017 14:26:18 +0200 Subject: [PATCH 59/68] list all supported servis and their control table fields --- doc/reference/actuators.rst | 235 ++++++++++++++++++++++++++++++++++++ doc/reference/index.rst | 3 +- 2 files changed, 237 insertions(+), 1 deletion(-) create mode 100644 doc/reference/actuators.rst diff --git a/doc/reference/actuators.rst b/doc/reference/actuators.rst new file mode 100644 index 00000000..e8c47d3e --- /dev/null +++ b/doc/reference/actuators.rst @@ -0,0 +1,235 @@ +.. _supported_actuators_and_fields: + +Supported actuators and their control tables +============================================ + +Table of supported servos +------------------------- + +The links in this table point to the fields specific to each model. All these servo have in comon the fields in :ref:`next section ` + ++--------+------------------+------------------------------------------------------------------------------------------+ +| Series | Protocol version | Models | ++========+==================+==========================================================================================+ +| AX | 1 | :ref:`AX12, AX12w, AX18 ` | ++--------+------------------+------------------------------------------------------------------------------------------+ +| MX | 1 | :ref:`MX12, MX28 `, :ref:`MX64`, :ref:`MX106` | ++--------+------------------+------------------------------------------------------------------------------------------+ +| EX | 1 | :ref:`EX106` | ++--------+------------------+------------------------------------------------------------------------------------------+ +| XL | 2 | :ref:`XL320` | ++--------+------------------+------------------------------------------------------------------------------------------+ +| Pro L | 2 | :ref:`L-42-10-S300, L-54-30-S400, L-54-30-S500, L-54-50-S290, L-54-50-S500 ` | ++--------+------------------+------------------------------------------------------------------------------------------+ +| Pro M | 2 | :ref:`M-42-10-S260, M-54-40-S250, M-54-60-S250 ` | ++--------+------------------+------------------------------------------------------------------------------------------+ +| Pro H | 2 | :ref:`H-42-20-S300, H-54-100-S500, H-54-200-S500 ` | ++--------+------------------+------------------------------------------------------------------------------------------+ + +.. _common_fields: + +Field names common to all servos +-------------------------------- +For the meaning of the fields, please refer to Robotis' `official documentation `__. + +Read-only fields: + +* ``model_number`` +* ``firmware_version`` +* ``present_position`` +* ``present_speed`` +* ``present_voltage`` +* ``present_temperature`` +* ``registered`` +* ``moving`` + +Read-write fields: + +* ``id`` +* ``baudrate`` +* ``return_delay_time`` +* ``highest_temperature_limit`` +* ``highest_voltage_limit`` +* ``lowest_voltage_limit`` +* ``status_return_level`` +* ``alarm_shutdown`` +* ``torque_enable`` +* ``goal_position`` +* ``moving_speed`` + +.. _ax_series: + +AX series +--------- + +Supported models are + +* **AX12**, +* **AX12w** and +* **AX18**. + +Read-only field: + +* ``present_load`` + +Read-write fields: + +* ``cw_angle_limit`` +* ``ccw_angle_limit`` +* ``max_torque`` +* ``alarm_led`` +* ``led`` +* ``cw_compliance_margin`` +* ``ccw_compliance_margin`` +* ``cw_compliance_slope`` +* ``ccw_compliance_slope`` +* ``torque_limit`` +* ``lock`` +* ``punch`` + +.. _mx_series: + +MX series +--------- +Common to all MX servos, including **MX12** and **MX28**. + +Read-only field: + +* ``present_load`` + +Read-write fields: + +* ``cw_angle_limit`` +* ``ccw_angle_limit`` +* ``max_torque`` +* ``alarm_led`` +* ``multi_turn_offset`` +* ``resolution_divider`` +* ``led`` +* ``d_gain`` +* ``i_gain`` +* ``p_gain`` +* ``torque_limit`` +* ``lock`` +* ``punch`` +* ``goal_acceleration`` + +.. _MX64: + +MX64 +^^^^ +Read-only field: + +* ``current`` + +Read-write fields: + +* ``torque_control_mode_enabled`` +* ``goal_torque`` + +.. _MX106: + +MX106 +^^^^^ +Read-only field: + +* ``current`` + +Read-write fields: + +* ``torque_control_mode_enabled`` +* ``goal_torque`` +* ``drive_mode`` + +.. _EX106: + +EX106 +----- +Read-only fields: + +* ``present_load`` +* ``sensed_current`` + +Read-write fields: + +* ``cw_angle_limit`` +* ``ccw_angle_limit`` +* ``drive_mode`` +* ``max_torque`` +* ``alarm_led`` +* ``led`` +* ``cw_compliance_margin`` +* ``ccw_compliance_margin`` +* ``cw_compliance_slope`` +* ``ccw_compliance_slope`` +* ``torque_limit`` +* ``lock`` +* ``punch`` + +.. _XL320: + +XL320 +----- +Read-only fields: + +* ``hardware_error_status`` +* ``present_load`` + +Read-write fields: + +* ``cw_angle_limit`` +* ``ccw_angle_limit`` +* ``control_mode`` +* ``max_torque`` +* ``led`` +* ``d_gain`` +* ``i_gain`` +* ``p_gain`` +* ``goal_torque`` +* ``punch`` + +.. _pro_series: + +Pro series +---------- + +.. caution:: Altough the field names are the same for the L42 and other servos, their meanings still differ with the other Dynamixel Pros. Please check Robotis' official documentation. + +Supported models are + +* **Pro H-42-20-S300**, +* **Pro M-54-60-S250**, +* **Pro M-54-40-S250**, +* **Pro M-42-10-S260**, +* **Pro L-54-50-S500**, +* **Pro L-54-50-S290**, +* **Pro L-54-30-S500**, +* **Pro L-54-30-S400**, +* **Pro L-42-10-S300**, +* **Pro H-54-200-S500** and +* **Pro H-54-100-S500**. + +Read-only fields: + +* ``current`` +* ``hardware_error_status`` + +Read-write fields: + +* ``model_info`` +* ``operating_mode`` +* ``homing_offset`` +* ``moving_threshold`` +* ``acceleration_limit`` +* ``torque_limit`` +* ``speed_limit`` +* ``max_position_limit`` +* ``min_position_limit`` +* ``led_r`` +* ``led_g`` +* ``led_b`` +* ``velocity_i_gain`` +* ``velocity_p_gain`` +* ``position_p_gain`` +* ``goal_torque`` +* ``goal_acceleration`` \ No newline at end of file diff --git a/doc/reference/index.rst b/doc/reference/index.rst index 5689dbea..c8e0fcff 100644 --- a/doc/reference/index.rst +++ b/doc/reference/index.rst @@ -4,4 +4,5 @@ Reference .. toctree:: :maxdepth: 2 - architecture \ No newline at end of file + architecture + actuators \ No newline at end of file From 10d1fa5141ff40ea60683b1a727984a9250b216e Mon Sep 17 00:00:00 2001 From: Dorian Goepp Date: Fri, 28 Apr 2017 14:31:11 +0200 Subject: [PATCH 60/68] refine high level API doc --- doc/high_level_api.rst | 52 +++++++++++++++++++++++++++-- src/dynamixel/servos/base_servo.hpp | 42 ++++++++++++++++++++--- 2 files changed, 88 insertions(+), 6 deletions(-) diff --git a/doc/high_level_api.rst b/doc/high_level_api.rst index e795c8d3..7c929cb3 100644 --- a/doc/high_level_api.rst +++ b/doc/high_level_api.rst @@ -11,9 +11,14 @@ For now there is only one controller class called ``Usb2Dynamixel``. It handles :members: :undoc-members: + +.. _auto_detection: + Auto-detection of servos ------------------------- -There are two versions of the auto detection, one that returns a vector and one that returns a map. +Doing auto-detection will scan the bus for connected servos and build a collection of objects handling each servo that was found. There are two versions of the auto detection, one that returns a vector and one that returns a map. + +.. note:: Bear in mind that only servos using the same baudrate as set in the controller will be found. .. doxygenfunction:: dynamixel::auto_detect @@ -22,7 +27,50 @@ There are two versions of the auto detection, one that returns a vector and one Servo object (BaseServo) ------------------------ -The auto-detection will return ``BaseServo`` objects (that is, objects of sub-classes of ``BaseServo``) +The :ref:`auto-detection ` will return ``BaseServo`` objects (actually objects of sub-classes of ``BaseServo``). In addition to the methods bellow, this class also defines methods to :ref:`access and change ` all elements of the control table for the actuator. + +Class definition +^^^^^^^^^^^^^^^^ + +``BaseServo`` is defined as follows, with the addition of the methods described in :ref:`baseservo_define_methods`. .. doxygenclass:: dynamixel::servos::BaseServo :members: + +.. :undoc-members: + +.. _baseservo_define_methods: + +Methods for access to the control table +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +The following methods are defined for all fields found in at least a servo's control table. If one tries to access or change a field that does not exist in the control table of the servo at hand, an exception will be raised. The exception is of type :code:`errors::Error` and contains the message "*some_method* not implemented in model" where *some_method* is the name of a method. + +.. note:: see :ref:`supported_actuators_and_fields` for the fields available for each supported servo model and their names in Libdynamixel. + +.. cpp:function:: virtual InstructionPacket BaseServo::get_NAME() const + + Request the NAME field in the control table; the response from the servo must be parsed with :code:`parse_NAME`. + +.. cpp:function:: virtual long long int parse_NAME(const StatusPacket& st) const + + The response (stored in :code:`StatusPacket`) from :code:`get_NAME` is processed here and returned as an integer. + +.. cpp:function:: virtual InstructionPacket set_NAME(long long int value) const + + Set the value for field NAME of the control table; to set speed and position values in radians per second and radians, use :code:`set_goal_position_angle ` and similar methods (see previous section). + +.. cpp:function:: virtual InstructionPacket reg_NAME(long long int value) const + + Register the instruction to set the value of the field NAME of the control table; for speed and position values, use :code:`reg_goal_position_angle` and similar methods (see previous section). + + The walue is written when the servo receives an :cpp:class:`Action\` instruction, which can be broadcasted to all servos. + + Example:: + + serial_interface.send(servos.at(id)->reg_goal_position_angle(angle)); + + StatusPacket status; + serial_interface.recv(status); + + serial_interface.send( + dynamixel::instructions::Action(Protocol::broadcast_id)); \ No newline at end of file diff --git a/src/dynamixel/servos/base_servo.hpp b/src/dynamixel/servos/base_servo.hpp index 1fbd809c..340a27a2 100644 --- a/src/dynamixel/servos/base_servo.hpp +++ b/src/dynamixel/servos/base_servo.hpp @@ -38,7 +38,7 @@ namespace dynamixel { template class BaseServo { public: - /// type of the protocol (Protocol1 or Protocol2) + /// type of the protocol (Protocol1 or Protocol2) for this servo typedef Protocol protocol_t; /// ID of the servo @@ -47,7 +47,8 @@ namespace dynamixel { throw errors::Error("id not implemented in model"); } - /// ?? + /// DO NOT use this method. It shall be removed. To change an + /// actuator's ID, use set_id virtual void id(long long int id) { throw errors::Error("id not implemented in model"); @@ -59,6 +60,15 @@ namespace dynamixel { throw errors::Error("model_name not implemented in model"); } + /** @name Generic setters and getters + @{ + \fn virtual BaseServo::InstructionPacket get_NAME() const + \brief Get the value NAME from the control table + \return InstructionPacket to be sent to the actuator to ask for + the field value + @} + **/ + // All the memory addresses of all the models need to be declared here // Then, the concrete model classes override the ones that they have BASE_FIELD(model_number); @@ -132,46 +142,70 @@ namespace dynamixel { } // ================================================================= - // Position-specific + /** @name Position-specific methods + These methods allow to speak in radians with the actuators, + abstracting away the model-specific ticks to angle ratios. + **/ + ///@{ + /// Set the actuator's angle to a given angle in radian virtual InstructionPacket set_goal_position_angle(double rad) const { throw errors::Error("set_goal_position_angle not implemented in model"); } + /// Register the instruction to set the actuator's angle to a given + /// angle in radian virtual InstructionPacket reg_goal_position_angle(double rad) const { throw errors::Error("reg_goal_position_angle not implemented in model"); } + /// Use get_present_position instead! This method duplicates + /// get_present_position and shall be removed at some point. virtual InstructionPacket get_present_position_angle() const { throw errors::Error("get_present_position_angle not implemented in model"); } + /// Convert the received position from unitless value to radians and + /// return it virtual double parse_present_position_angle(const StatusPacket& st) const { throw errors::Error("parse_present_position_angle not implemented in model"); } + ///@} + // ================================================================= - // Speed-specific + /** @name Speed-specific methods + These methods allow to speak in radians/s with the actuators, + abstracting away the model-specific tick to speed conversion. + **/ + ///@{ + /// Set the actuator's speed to a given value in radians per second virtual InstructionPacket set_moving_speed_angle(double rad_per_s, cst::OperatingMode operating_mode = cst::joint) const { throw errors::Error("set_moving_speed_angle not implemented in model"); } + /// Register the instruction to set the actuator's speed to a given + /// value in radians per second virtual InstructionPacket reg_moving_speed_angle(double rad_per_s, cst::OperatingMode operating_mode = cst::joint) const { throw errors::Error("reg_moving_speed_angle not implemented in model"); } + /// Convert the received speed from unitless value to radians per + /// second and return it virtual double parse_joint_speed(const StatusPacket& st) const { throw errors::Error("parse_joint_speed not implemented in model"); } + ///@} + protected: BaseServo() {} }; From 05ca1d70410e643f8c206e23cc8ce260566b10aa Mon Sep 17 00:00:00 2001 From: Dorian Goepp Date: Fri, 28 Apr 2017 14:35:12 +0200 Subject: [PATCH 61/68] updated API --- src/tools/utility.hpp | 4 ++-- src/tutorials/high_level.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/tools/utility.hpp b/src/tools/utility.hpp index f164eb2a..dab0485c 100644 --- a/src/tools/utility.hpp +++ b/src/tools/utility.hpp @@ -402,7 +402,7 @@ namespace dynamixel { for (auto id : ids) { StatusPacket status; // request current position - _serial_interface.send(_servos.at(id)->get_present_position_angle()); + _serial_interface.send(_servos.at(id)->get_present_position()); _serial_interface.recv(status); // parse response to get the position @@ -440,7 +440,7 @@ namespace dynamixel { StatusPacket status; // request current position _serial_interface.send( - servo.second->get_present_position_angle()); + servo.second->get_present_position()); _serial_interface.recv(status); // parse response to get the position diff --git a/src/tutorials/high_level.cpp b/src/tutorials/high_level.cpp index fc1dfce7..13479f35 100644 --- a/src/tutorials/high_level.cpp +++ b/src/tutorials/high_level.cpp @@ -58,7 +58,7 @@ int main(int argc, char** argv) sleep(1); // Request the current position of the servo - controller.send(servo->get_present_position_angle()); + controller.send(servo->get_present_position()); controller.recv(st); // Parse the position from the packet received From cb18b588f4876155d52ca659e89cb9c552d6d071 Mon Sep 17 00:00:00 2001 From: Dorian Goepp Date: Fri, 28 Apr 2017 14:35:36 +0200 Subject: [PATCH 62/68] update print syntax --- wscript | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wscript b/wscript index 63092c52..9fad2a03 100644 --- a/wscript +++ b/wscript @@ -28,7 +28,7 @@ def configure(conf): conf.recurse('src/tools') # conf.recurse('src/tests') - print 'CXXFLAGS:' + str(conf.env['CXXFLAGS']) + print('CXXFLAGS:' + str(conf.env['CXXFLAGS'])) def build(bld): From 3e059a76277a278cf374eb08363e5cce77eab8b2 Mon Sep 17 00:00:00 2001 From: Dorian Goepp Date: Fri, 28 Apr 2017 15:14:06 +0200 Subject: [PATCH 63/68] link anchor for cross-referencing --- doc/high_level_api.rst | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/high_level_api.rst b/doc/high_level_api.rst index 7c929cb3..f4da8cb5 100644 --- a/doc/high_level_api.rst +++ b/doc/high_level_api.rst @@ -1,6 +1,8 @@ High level API =============== +.. _controllers: + Controllers ----------- For now there is only one controller class called ``Usb2Dynamixel``. It handles the USB to serial interface, be it the official USB2Dynamixel or the `USB2AX`_. More contcretely, this is the class you use to send and recieve packets on the servos' bus. @@ -43,7 +45,7 @@ Class definition Methods for access to the control table ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -The following methods are defined for all fields found in at least a servo's control table. If one tries to access or change a field that does not exist in the control table of the servo at hand, an exception will be raised. The exception is of type :code:`errors::Error` and contains the message "*some_method* not implemented in model" where *some_method* is the name of a method. +The following methods are defined for all fields found in at least a servo's control table. If one tries to access or change a field that does not exist in the control table of the servo at hand, an exception will be raised. The exception is of type :cpp:class:`dynamixel::errors::Error` and contains the message "*some_method* not implemented in model" where *some_method* is the name of a method. .. note:: see :ref:`supported_actuators_and_fields` for the fields available for each supported servo model and their names in Libdynamixel. From a6ee5fe47d4953fa04e5ba2384c4e343da093a97 Mon Sep 17 00:00:00 2001 From: Dorian Goepp Date: Fri, 28 Apr 2017 15:14:28 +0200 Subject: [PATCH 64/68] adding get_baudrate_id --- doc/high_level_api.rst | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/doc/high_level_api.rst b/doc/high_level_api.rst index f4da8cb5..3c06015e 100644 --- a/doc/high_level_api.rst +++ b/doc/high_level_api.rst @@ -75,4 +75,9 @@ The following methods are defined for all fields found in at least a servo's con serial_interface.recv(status); serial_interface.send( - dynamixel::instructions::Action(Protocol::broadcast_id)); \ No newline at end of file + dynamixel::instructions::Action(Protocol::broadcast_id)); + +Other utility functions +----------------------- + +.. doxygenfunction:: dynamixel::get_baudrate_id \ No newline at end of file From bf5e8ebe8773c408e7d36e8cf18ea16874c8ec74 Mon Sep 17 00:00:00 2001 From: Dorian Goepp Date: Fri, 28 Apr 2017 15:14:53 +0200 Subject: [PATCH 65/68] a note on the need of USB2Dynamixel --- doc/low_level_api.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/low_level_api.rst b/doc/low_level_api.rst index bdd28468..68e7d96f 100644 --- a/doc/low_level_api.rst +++ b/doc/low_level_api.rst @@ -4,6 +4,8 @@ Low level API Instructions Packets -------------------- +.. note:: For *instruction packets* to be sent and *status packet* to be received, one needs a :ref:`controller`, such as :cpp:class:`dynamixel::controllers::Usb2Dynamixel`. + Abstract class (InstructionPacket) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -22,6 +24,8 @@ Instructions Status packets (StatusPacket) ----------------------------- +.. note:: For *instruction packets* to be sent and *status packet* to be received, one needs a :ref:`controller`, such as :cpp:class:`dynamixel::controllers::Usb2Dynamixel`. + .. doxygenclass:: dynamixel::StatusPacket :members: :undoc-members: From 00f51ef8d3c93762db704a7747092c2f17837799 Mon Sep 17 00:00:00 2001 From: Dorian Goepp Date: Fri, 28 Apr 2017 15:42:53 +0200 Subject: [PATCH 66/68] doxygen comment for baudrate utility --- src/dynamixel/baudrate.hpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/dynamixel/baudrate.hpp b/src/dynamixel/baudrate.hpp index 18d4c7c0..f5d105f6 100644 --- a/src/dynamixel/baudrate.hpp +++ b/src/dynamixel/baudrate.hpp @@ -8,11 +8,16 @@ #include "errors/error.hpp" namespace dynamixel { - /** The template specifications of this method are used to set the baudrate - of the servos. + /** Use this template function to set the baudrate of the servos. - Their internal memory represent the baudrates with special codes that we - need to convert from the baudrate value. + It will provide you with the code corresponding to the requested baudrate. + This value is to be put in the control table of a servo. + + Since the codes are different for Protocol 1 and Protocol 2, this function + is templated by the protocol version. + + @raise dynamixel::errors::Error + Such an exception is raised if a non-existing baudrate is requested. @param baudrate the baudrate we want the device to use @return hardware-specific code for the baudrate From 277857abf328e44f1527a38e9518b31f9fd9fa76 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mouret Date: Mon, 9 Jul 2018 19:00:52 +0200 Subject: [PATCH 67/68] removed CSS terms (checked that it was not mandatory) --- src/dynamixel/controllers/usb2dynamixel.hpp | 29 +++++++++++++-------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/src/dynamixel/controllers/usb2dynamixel.hpp b/src/dynamixel/controllers/usb2dynamixel.hpp index 126bdb1e..37af51e8 100644 --- a/src/dynamixel/controllers/usb2dynamixel.hpp +++ b/src/dynamixel/controllers/usb2dynamixel.hpp @@ -78,6 +78,7 @@ namespace dynamixel { : _recv_timeout(recv_timeout), _fd(-1), _report_bad_packet(false) { open_serial(name, baudrate); + } Usb2Dynamixel() @@ -90,16 +91,19 @@ namespace dynamixel { void open_serial(const std::string& name, int baudrate = B115200) { + std::cout<<"opening serial"< packet; packet.reserve(_recv_buffer_size); - //std::cout << "Receive:" << std::endl; - + std::cout << "Receive timeout" << _recv_timeout << std::endl; do { double current_time = get_time(); uint8_t byte; int res = read(_fd, &byte, 1); if (res > 0) { - // std::cout << std::setfill('0') << std::setw(2) - // << std::hex << (unsigned int)byte << " "; + std::cout << std::setfill('0') << std::setw(2) + << std::hex << (unsigned int)byte << " "; packet.push_back(byte); state = status.decode_packet(packet, _report_bad_packet); + status.print(std::cout); + std::cout<<"----"< _recv_timeout) + if (current_time - time > 0.25)//_recv_timeout) return false; } while (state != DecodeState::DONE); From 0280c3fe776c8d9186cfa3f14fc65d945c1d9fdc Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mouret Date: Mon, 23 Jul 2018 16:27:57 +0200 Subject: [PATCH 68/68] revert a bad commit (tests on mac) --- src/dynamixel/controllers/usb2dynamixel.hpp | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/src/dynamixel/controllers/usb2dynamixel.hpp b/src/dynamixel/controllers/usb2dynamixel.hpp index c0a06ea6..09d2a4a5 100644 --- a/src/dynamixel/controllers/usb2dynamixel.hpp +++ b/src/dynamixel/controllers/usb2dynamixel.hpp @@ -144,12 +144,10 @@ namespace dynamixel { if (_fd != -1) throw errors::Error("error attempting to open device " + name + ": an other connection is active; call `close serial` before opening a new connection"); - _fd = open(name.c_str(), O_RDWR | O_NOCTTY | O_NONBLOCK ); + _fd = open(name.c_str(), O_RDWR | O_NOCTTY ); if (_fd == -1) throw errors::Error("error opening device " + name + ": " + std::string(strerror(errno))); - std::cout<<"serial open"< packet; packet.reserve(_recv_buffer_size); - std::cout << "Receive timeout" << _recv_timeout << std::endl; + // std::cout << "Receive timeout" << _recv_timeout << std::endl; do { double current_time = get_time(); uint8_t byte; int res = read(_fd, &byte, 1); if (res > 0) { - std::cout << std::setfill('0') << std::setw(2) - << std::hex << (unsigned int)byte << " "; + // std::cout << std::setfill('0') << std::setw(2) + // << std::hex << (unsigned int)byte << " "; packet.push_back(byte); state = status.decode_packet(packet, _report_bad_packet); - status.print(std::cout); - std::cout<<"----"< 0.25)//_recv_timeout) + if (current_time - time > _recv_timeout) return false; } while (state != DecodeState::DONE);