Skip to content

golems/ach

Repository files navigation

OVERVIEW

Ach is an Inter-Process Communication (IPC) mechanism and library. It is especially suited for communication in real-time systems that sample data from physical processes. Ach eliminates the Head-of-Line Blocking problem for applications that always require access to the newest message. Ach is efficient, robust, and formally verified. It has been tested and demonstrated on a variety of physical robotic systems. Source code for Ach is available under an Open Source BSD-style license.

INSTALLATION

./configure && make && make install

See the INSTALL file for details.

DOCUMENTATION

See ./INSTALL for details on generating the documentation.

MAILING LISTS

LANGUAGE BINDINGS

Language bindings are included for Common Lisp, Python, and Java.

  • Common Lisp bindings use CFFI and can be loaded with ASDF.

  • Python bindings are a C extension module and a Python module 'ach'. This can be installed either via make install or via Python's distutils/pip.

  • C++ bindings wrap the C API. See ./include/Ach.hpp

  • Java bindings via the Java Native Interface (JNI). See ./doc/javadoc or http://code.golems.org/pkg/ach/javadoc/

See the INSTALL file for details.

FORMAL MODEL

Ach has been formally verified using the SPIN model checker. This formal model is included in the source distribution under the ./spin/ directory.

CITATION

If you find Ach useful for your research, we hope you will consider citing our relevant publications.

@ARTICLE{10.3389/frobt.2016.00006,
    author={Dantam, Neil T. and Bøndergaard, Kim and Johansson, Mattias A. and Furuholm, Tobias and Kavraki, Lydia E.},
    title={Unix Philosophy and the Real World: Control Software for Humanoid Robots},
    journal={Frontiers in Robotics and AI},
    volume={3},
    pages={6},
    year={2016},
    url={https://www.frontiersin.org/article/10.3389/frobt.2016.00006},
    doi={10.3389/frobt.2016.00006},
    issn={2296-9144},
}

@ARTICLE{7012101,
      author={N. T. {Dantam} and D. M. {Lofaro} and A. {Hereid} and P. Y. {Oh} and A. D. {Ames} and M. {Stilman}},
      journal={IEEE Robotics Automation Magazine},
      title={The Ach Library: A New Framework for Real-Time Communication},
      year={2015},
      volume={22},
      number={1},
      pages={76-85},
      doi={10.1109/MRA.2014.2356937},
      issn={1070-9932},
      month={March},
}

@INPROCEEDINGS{6556374,
    author={M. X. {Grey} and N. {Dantam} and D. M. {Lofaro} and A. {Bobick} and M. {Egerstedt} and P. {Oh} and M. {Stilman}},
    booktitle={2013 IEEE Conference on Technologies for Practical Robot Applications (TePRA)},
    title={Multi-process control software for HUBO2 Plus robot},
    year={2013},
    volume={},
    number={},
    pages={1-6},
    doi={10.1109/TePRA.2013.6556374},
    ISSN={2325-0534},
    month={April},
}

@INPROCEEDINGS{6651538,
    author={N. {Dantam} and M. {Stilman}},
    booktitle={2012 12th IEEE-RAS International Conference on Humanoid Robots (Humanoids 2012)},
    title={Robust and efficient communication for real-time multi-process robot software},
    year={2012},
    volume={},
    number={},
    pages={316-322},
    doi={10.1109/HUMANOIDS.2012.6651538},
    ISSN={2164-0572},
    month={Nov},
}