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.
./configure && make && make install
See the INSTALL file for details.
- Manual: http://code.golems.org/pkg/ach/manual
and
./doc/manual/ach-manual.html
- API docs: http://code.golems.org/pkg/ach/api
and
./doc/html
- Man Pages: http://code.golems.org/pkg/ach/man
and
./doc/man
- Papers:
- Unix Philosophy and the Real World: Control Software for Humanoid Robots. Frontiers in Robotics and Artificial Intelligence. 2016.
- The Ach Library. IEEE RAM. 2015.
- Multi-Process Control Software for HUBO2 Plus robot. TEPRA. 2013.
- Robust and Efficient Communication for Real-Time Multi-Process Robot Software. HUMANOIDS. 2012.
- Example Code:
./src/ach-example.c
See ./INSTALL
for details on generating the documentation.
- Announcements: http://groups.google.com/group/ach-announce
- General Help: http://groups.google.com/group/ach-help
- Development: http://groups.google.com/group/ach-devel
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.
Ach has been formally verified using the SPIN model checker. This
formal model is included in the source distribution under the ./spin/
directory.
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},
}