Daniel M. Lofaro Ph.D


Electrical Engineer and Roboticists
U.S. Naval Research Laboratory (NRL)
Navy Center for Applied Research in Artificial Intelligence (NCARAI)
Laboratory for Autonomous Systems Research (LASR)
4555 Overlook Ave SW
Washington, DC 20375, USA

Professor/Lecturer
University of Maryland (UMD)
Maryland Applied Graduate Engineering
Maryland Robotics Center
4356 Stadium Dr #2105
College Park, MD 20742, USA

Affiliate Professor
George Mason University (GMU)
School of Business and the Volgenau School of Engineering
4400 University Drive, Planetary Hall #4
Fairfax, VA 22030, USA

c: +1-202-378-8964
UMD: lofaro@umd.edu
GMU: dlofaro@gmu.edu
Personal: dan@danlofaro.com

Daniel M. Lofaro

Hubo-Ach Core System
Reliable GNU/Linux Control Software for Hubo

Hubo-Ach is a low-level multi-process interface for the Hubo 2, Hubo 2+ and DRC-Hubo platforms designed by Daniel M. Lofaro. The system is based on the IPC called ACH by Neil Dantam and Mike Stilman. This provides a conventional GNU/Linux programming environment, with the variety of tools available therein, for developing applications on the Hubo. It also efficiently links the embedded electronics and real-time control to popular frameworks for robotics software: ROS, OpenRAVE and MATLAB.

Reliability is a critical issue for software on the Hubo. As a bipedal robot, Hubo must constantly maintain dynamic balance; if the software fails, it will fall and break. A multiprocess software design improves Hubo’s reliability by isolating the critical balance code from other non-critical functions, such as control of the neck or arms. For the high-speed, low-latency communications and priority access to latest sensor feedback, Ach provides the underlying IPC.

Overview:

Hubo-Ach handles CAN bus communication between the PC and embedded electronics. Because the motor controllers synchronize to the control period in a phase lock loop (PLL), the single hubo-daemon process runs at a fixed control rate and communicates on the bus. The embedded controllers lock to this rate and linearly interpolate between the commanded positions, providing smoother trajectories in the face of limited communication bandwidth. This communication process also avoids bus saturation; with CAN bandwidth of 1 Mbps and 200Hz control rate, hubo-daemon currently utilizes 78% of the bus. Hubo-daemon receives position targets from a feedforward channel and publishes sensor data to the feedback channel, providing the direct software interface to the embedded electronics.

Each Hubo-Ach controller is an independent processes. The controllers handle tasks such as balance, manipulation, and human-robot interaction. Each controller asynchronously reads state from the feedback Ach channel and sets reference positions in the feedforward channel. Hubo-daemon reads the most recent reference position from the feedforward channel on the the rising edge of its control cycle. This allows the controller processes to run at arbitrary rates without effecting the PLL of the embedded motor controllers or the CAN bus bandwidth utilization.

Important Notes:

Develop: This will have the latest fixes and functionality but is not guaranteed to work with all other published software on the Hubo repo. Fixes and functionality will make it to Stable within a week of being added.
Stable/Master: This is widely tested and will work with all master branches on the Hubo repo.

Platform: Tested on Ubuntu 12.04 i386 and amd64 Kernel 3.2.

Install and Usage:

Latest Debs:

All Debs:



 
Home | About | Research Lab | Publications | Events | Vitae | On YouTube | In the News | Software