Oricom Technologies
www.oricomtech.com

Return to
WMC page.
Walking Machine Controller Theory of Operation

The OricomTech MSCC20 Multi-Servo Control Computer can control up to 20 R/C-type servos. It has more than 30 commands providing a large range of general servo control and I/O functions. It is a slave co-processor device which requires a PC or other master controller to issue servo movement commands.

The OricomTech Walking Machine Controllers have a similar servo control instruction set to the MSCC20, but also add approximately 40 additional commands for setup and playback of complete behavioral sequences. These devices work in either standalone mode, where behavioral sequences are stored on eeprom, and also as slave units under control of a host processor via RS-232 link.

The WMC control computers are designed for producing complex servo movement sequences, involving up to 20 servos, for walking robots and animatronics applications. The WMC is also perfect for controlling servo-driven robots.

[WMAC20] Behavioral Sequences. The WMC chips can be controlled directly from a master controller, such as a PC or OOPic or Basic Stamp or other cpu, via RS-232 link. In addition, behavioral sequences can be edited and stored in eeprom for standalone operation, without the requirement for a master controller. The chips will boot-up and automatically execute up to 126 stored behavioral sequences, with each sequence being a table of up to 44 separate servo movements. Behaviors are linked sequentially one-to-another on the basis of timing, number of repetitions (such as steps in a walking gait), and also by "external" trigger-alarm conditions.

Trigger - Alarms. The 28-pin WMC has 9, and the 40-pin WMC chip has 12, programmable alarm channels which provide a number of functions, such as: monitoring battery voltages, freezing servos, shutting down the system, reporting to the master controller, or linking in a new behavioral block. For example, a walking sequence can be programmed, and one or more trigger - alarms connected to bumper switches or infrared distance sensors. Therefore, when the bot gets too close to an object, the alarm can link in a new behavioral block which will cause the bot to initiate a turning movement which will take it away from the object being bumped. Similarly, if the servo batteries get too low, an alarm can be programmed to shutdown the system before the bot goes haywire. Alarms can also be used to freeze movement of an animatronics arm when a limit switch is activated. On and on.

Autonomous Behavior. The combination of multiple alarms, plus a large number of stored movement sequences, means it's possible to program a robot to engage in quite complex behavior, even without having a master controller to make logical decisions. The alarms essentially act as decision branches, so a bot can autonomously engage in sophisticated activities on its own. Up to 8 of the alarms can use analog level sensing. They can be used to measure outputs from distance rangers, light transducers, bumper switches, IR detector modules, as well as battery and other miscellaneous voltages. The alarms can trigger events such as turning a bot away from obstacles, or turning towards light sources.

Semi-Autonomous Behavior. In addition to the autonomous style of control described above, the WMC can also be controlled as a slave co-processor by a higher-level processor. The WMC can control the low-level movement timing and co-ordination, and also monitor alarm situations, leaving the master controller free to perform higher-level activities such as: sensory perception, path planning, goal-directed computations, etc.

This scenario actually emulates the way various parts of the brain and body work together to create behaviors in animals. There is not just one large processor, like a central computer which takes care of everything, rather there are many levels of processing going from the spinal cord up to the brain stem to the midbrain and finally to the cerebral cortex, where different kinds of processing are performed at each level, and with the higher levels in the chain asserting control over the lower levels. Likewise, the Walking Machine Chips can control and sequence lower-level [eg, extremity] movements for a walker, while the higher-level controller executes functions similar to those of a real brain - memory, perception, planning, etc.

CPG Behavioral Tables. The basic scheme used in the Walking Machine Controllers is a CPG (central pattern generator) table of up to 44 entries per behavior block, which set parameters for the servos. These entries allow a sequence of servo movements to be programmed over a period of time, defined as a basic block cycle 1 to 5 sec long, and which can be extended up to 8X as long. A CPG sequence can repeat for an indefinite number of times, such as with a robot walking gait.

Up to 126 unique behavioral blocks can be stored in eeprom, along with sets of specific alarm parameters for each block. The blocks can be linked dynamically to produce long and extremely complex movement sequences, with over 5000 individual servo movements, and up to 80 minutes in length - even if no block repetitions or cycle iterations are used.

Initial Conditions. In additional to the movement control sequences, each behavioral block can have a set of initial conditions, which will move the servos to "set" positions prior to initiating a movement sequence - for instance, to bring all legs down before starting a sensor scanning procedure.


A Walking Behavior Scenario

[tripod] A common hexapod robot walker has 6 legs, with 2 servos per leg - one to lift the leg up-and-down, and another to move the leg front-to-back. In a typical tripod walking gait, 3 legs work together (front + back leg on one side, with the middle leg on the opposite side) in counter-phase to the other 3 legs. An example sequence involves 4 movements per leg per step - up + forward + down + back, repeated a number of times. This sequence can be programmed into a WMC behavioral block table using 2 movements per servo per leg, or 24 movements total for the 12 servos.

For turning, another behavioral block can be programmed with smaller [or slower] movements on one side of the walker than the other. For walking backwards, the sequences can be reversed. The sequences can be set to repeat indefinitely or for a given number of times, and then a branch made to another behavior block.

Branching. Besides branching after a programmed number of repetitions, branching from one behavioral block to another can be initiated using the trigger-alarm channels. For instance, an IR ranger pointing to the front could sense distance to objects ahead - and an alarm channel monitoring the ranger can be set to sense when an object is too close, and can trigger the loading in of a new behavioral block from eeprom which will cause the walker to back up, or turn away from the object. Similarly, sensors on the left and right side of the body can trigger loading of behavioral blocks which will turn the robot away from objects on the side. These turns can actually be sequences of movements, such as first loading a behavioral block causing the walker to back up for, say 4 steps, and then linking to a block which turns the robot.

Each time a new behavioral block is loaded from eeprom, a new alarm table is also loaded, which can be programmed to change the alarm triggering criteria, so alarms can be used in different ways to produce different results in different behavioral blocks. For instance, if the robot is going forwards and gets too close to an object, the IR ranger alarm can trigger loading of a new block which causes the robot to back up, and inside the new block, the same alarm channel can be re-programmed so that a follow-on behavioral block load is initiated when the robot has moved far enough away from the object. The new behavior may be to turn the robot, and here again, the IR ranger alarm can be re-programmed again, say to detect objects getting too close again.

An alternate possibility, once the robot gets too close to an object, might be to:

(a) stop the robot's forward motion, and call in a sequence of behavioral blocks which will
(b) move the robot's legs into a stable platform position, and then
(c) initiate an object scanning and investigation protocol.

For instance, a vision sensor could be mounted on a servo, and the sensor swept back and forth over the terrain in front, in order to assess the possibilities for further travel. The behavioral block control scheme used by the Walking Machine Chips can control the scanning procedure, and the alarm tables used to perform rudimentary decision-making. In fact, entries can be inserted into the behavior block tables to re-program the alarm actions at different points (ie, times) in the normal behavior timing cycle. So, at the beginning of the timing cycle an alarm can do one thing, and later in the cycle, something else. At the same time, the data obtained by the scanned sensor can be read by a master controller for higher-level decision-making.

Master Control. In addition to the foregoing, which describes autonomous behavior which the Walking Machine Chips can control independently, all alarms and movements can be monitored by a master processor, and decisions made at the higher level. These can override WMC direct control, and change behavior of the robot on-the-fly. The host can also re-define control sequences and alarm parameters during WMC operation. It's a perfect system where the routine operations of servo sequencing are off-loaded from the master processor, but the master can still "subsume" functions of the slave processor.

<| TOP


BotCoP and Bot-CoP are trademarks of Oricom Technologies.
© Oricom Technologies, updated November 2004