Skip to content

golems/ach

Folders and files

NameName
Last commit message
Last commit date

Latest commit

4766faa · Jul 19, 2019
Jul 2, 2015
Jan 31, 2015
Feb 9, 2015
Feb 3, 2015
Jun 10, 2019
Jul 7, 2019
Feb 2, 2015
Feb 2, 2015
Nov 1, 2011
Feb 10, 2015
Sep 21, 2011
Jul 19, 2019
Jul 2, 2015
Mar 10, 2012
Jan 3, 2015
Feb 2, 2015
Apr 24, 2015
Oct 21, 2011
Feb 3, 2015
Feb 2, 2015
Jun 10, 2019
Feb 3, 2015
Jun 13, 2019
Aug 26, 2012
Nov 6, 2017
Jan 28, 2015
May 26, 2013
Feb 2, 2015
Nov 16, 2012
Oct 22, 2011
Jun 13, 2019
Oct 3, 2011
Jan 7, 2010
May 16, 2013

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},
}