![]() |
- Control system overview
- Mechanical - Publications - Contact
- Links - Photos - Videos -
Applications
- |
|
| Control System Overview: |
||
![]() |
||
| - Page 1
- Page 2 - |
| A
quick background and motivation |
| Conventional servo actuators
tend to be stiff and are designed to maintain specific velocities or
angles. For autonomous robots and robots that interact with
humans what you really want are servo actuators that are compliant - in
other words you want to control how much force they apply, and then
maybe use that to control their angle and velocity. With force
control you can do lots of cool things like making insect robots with
leg joints that behave line springs, making Passive Dynamic
walking mechanisms and making manipulators that are soft, springy and
safe to interact with. The Programmable Spring project (the subject of my PhD) started out as two things, a desire to make cool robots that could dynamically interact with the world, exploiting things like passive dynamics to produce cool, adaptive behaviour, and a desire to re-design the hobby servo specifically for robotics. The result is an actuator that can be 'programmed' to emulate various mechanical systems and to connect to other actuators, sensors and controllers in various ways. Because it is designed to be quick and easy to use all the behaviours are configured visually using drop down menus and visualisations on a computer before being downloaded to the device. You can literally draw springs and dampers for the device to emulate and then pick how their properties are controlled, be it via a plugged in sensor or a variable from a serial data packet. |
| The
basic idea - Profiles for force and damping |
| Each actuator consists
mechanically of some force controlled actuation system (see the mechanical page for more details on the
specifics) so you have a rotary mechanical output for which you can
specify the amount of force it will apply, and an angle sensor to
measure its position. An embedded controller then reads the angle and calculates a force based on whatever you have configured it to do, before applying it to the output. The basic method of calculating this force is to use a look up table full of variables that you have pre-specified. This 'profile' specifies the force that the actuator will applu for every angle it can measure. In other words it reads its angle, looks up the appropriate force value, then applies it to the output. The diagram below illustrates a simple linear spring. The red line is the force profile and values above zero are forces that will push the actuator towards a positive angle whilst values below zero will work in the opposite direction. This simple spring system produces a stable equillibrium point where the red line reaches zero force. The output will tend to settle here because the spring forces all push towards this angle. |
![]() |
| A force profile: The X axis is
the actuators shaft angle and the Y axis is the force to be applied. |
|
All fine so far but what if you
want to move these virtual springs around so you can change the ange of
the output? There is a method built in to the force profile
called the Horizontal Bias
that allows you to slide it along the angle axis. This allows you
to move this whole spring system around which moves the equillibrium
points and consequently the actuator output (assuming nothing else is
holding it in place)
Here is a quick video clip of the weak spring system above running on an early prototype. I manually deflect the actuators output (a short lever) away from the equillibrium point and it will bounce back when I let go, then I change the horizontal bias to move the output around. |
Because the forces are stored
as a table we can effectively specify any value for any angle allowing
us to create arbitary spring forces, we can have zero force areas,
linear springs, non linear and constant force springs. This table
is referred to as a Force Profile and, when configuring the actuator
you can literally draw the spring system you want using the mouse.
In addition to the force profile there are also two more look up tables that work in exactly the same way but apply to damping. These two profiles work as a pair and use the velocity of the output to alter how much force (as specified by the force profile) is actually applied. They are called conditional damping profiles and, like the force profile they allow you to specify a damping value for each angle. The positive damping profile ONLY applies when the actuator is moving towards a positive angle and the negative damping profile only applies when the actuator is moving the other way. This allows you to specify damping independantly for every angle and direction of motion. The values for the damping profiles can be positive as well as negative so although normal damping will impede movement a negative value for damping will actually amplify movement creating, in some instances, the effect of removing friction. The image below ilustrates a completly arbitary set of force and damping profiles. |
![]() |
|
Arbitary
spring and damping profiles: Red for force, green for positive damping
and blue for negative damping.
|
| I wrote a handy little
visualisation tool that takes these profiles when you have drawn them
and calculates the force output for every angle and every
velocity. This is then turned into a colour map (a force surface)
that illustrates how the actuator will behave. It is possible to
record the actuators behaviour and plot it as a trajectory on this
surface. The one below was generated from the force and damping
profiles ilustrated above. |
![]() |
|
Force
Surface: The horizontal axis is the actuators angle and the vertical
axis is its velocity so angle zero, velocity zero is in the centre of
the image. The brighter the colour the higher the force that will
be applied with blue representing positive forces and red negative.
|
| That is the basic profile
control system but there is a lot more to it than that. The force
and damping profiles allow you to specify arbitary spring damping
behaviour for the actuator (at east within its mechanical limits) but
some things require a bit more work. The next
section will look at the idea of profile groups to create things
like latches and oscillators. |
| >>
PAGE 2 >> |
![]() |