Hexotica - The Design and Implementation of a Small Walking Robot


6. Robot Control Scheme

To draw an analogy from the biological world, the mechanical aspects of the robot constitute the body of the organism, the electronics represent its nervous system and the embedded controller is its brain. In order for the system to function, the brain must be able to process incoming information, make decisions about the stimulus it perceives and take appropriate action. In a human, the environment is monitored by appropriate sensory structures which send signals to the brain. The constant barrage of information which enters the brain is selectively attended to and conclusions are drawn with regards to the appropriate response for the situation. Electrical impulses are then sent from the brain to the various motor groups to allow the body to move and respond to the ever changing environment, see Figure 29.

A robot operates in much the same way. Data is acquired through the various sensors and transmitted as electrical impulses, via the registers on the data bus, to the controller. The controller interprets this data and attempts to draw useful conclusions about the environment around it. It then sends out other electrical signals to the appropriate registers that tell the robot what actions it should perform.

Figure 29 - Stages of an information processing model [19]

In order for the robot to function, it is important to provide the intelligence and knowledge base with which the robot will interact with its environment. In a human, this knowledge base is built up through years of experience and stored in ways that continue to baffle much of the scientific community. Artificial intelligence often draws upon our limited understanding of the human mind in an attempt to mimic the human capacity to reason. Some of these attempts have been very successful and have shed new light on the way in which we think [19].

The robotic test-bed being developed for this project will provide a useful and interesting platform on which to test a variety of artificial intelligence schemes. There are many ways in which the robot could be controlled and some of the most exciting work lies in the future when the hardware has been optimized to allow for more in-depth testing of control methods. By abstracting the ways in which insects think and behave it will be possible to imbue the robot with a primitive intelligence that will enable it to interact in a useful manner with its surroundings.

Currently, there are two distinct levels of control in the walking robot. The low-level control includes all aspects of control which cause the legs to move. These motions are achieved by interfacing directly with the appropriate hardware (i.e. the motor control processors, analog to digital converters and other inputs related to the leg). There is a dedicated micro-controller for each pair of legs.

The high-level control, on the other hand, is responsible for the motion of the robot as a whole. It must respond to various sensory inputs, determine the direction and velocity of motion that the robot should assume and monitor the performance of the entire system. This system also determines the walking gait adopted and monitors each leg to ensure that it is moving as expected. A dedicated processor is responsible for this part of the control and communicates with each of the low-level controllers via a high-speed serial interface.

6.1 Low-Level Control of Foot Trajectory

One of the critical foot trajectories involved during the walking motion of the robot is that which pulls the body forward (or pushes it back depending upon the current direction of motion). While the body is being displaced, the foot, which is fixed to the ground, should follow a straight-line path relative to the body. This smoothes the motion of the body and avoids undesirable yawing of the body during each step. It also increases the efficiency of the walking movement by reducing the amount of slipping occurring at each foot.

One way to achieve a straight-line trajectory is to command the foot to move towards a desired end point along a straight-line path while it is in contact with the ground. By choosing the start and end points of each step at appropriate positions, the foot moves in a straight line between the beginning and end of each step. Although this step can be thought of as a straight-line motion along the side of the body, it in fact provides the force that will push the body forward; thus the foot remains fixed while the body translates, assuming that the foot does not slip. If all the legs are synchronized in their motions, the body will tend to move forward in some manner coordinated by the high level controller.

6.1.1 Via-points

Since each step is effectively of an equal length, the computational effort needed to re-calculate new trajectory points during each step can be saved by defining a set of via-points that the foot will pass through. These via-points are then transformed using a standard transformation matrix so that the straight-line path is in the desired heading. The mechanism used to determine the desired heading will be discussed further in the high-level control section. When the foot reaches a point that is judged to be sufficiently close to the intended target position, the next via-point in the step is assumed and the foot will move towards it. Since there are bound to be inaccuracies in the readings taken from the joint angle measurement devices, and since it will be effectively impossible to achieve an exact position, "sufficiently close" is defined to be some distance allowed by the accuracy of the measuring devices. Once motion to a particular via-point is finished, the controller updates the direction of travel as instructed by the high level controller.

Figure 30 - straight line trajectories of foot using via-points

Assuming that the foot does not encounter any obstacles, the leg can be moved through the straight line paths described and the robot will move forward in the desired direction. There are, however, a few circumstances that the foot will have to deal with during operation, especially on uneven terrain. The first problem arises from the fact that the terrain is assumed to be uneven. When the foot is being lowered, the controller must be aware of the point at which the foot touches the ground. If the foot were always lowered to the same position relative to the body, the body would roll with each step on uneven terrain and the robot would be very liable to tip over. A sensor in the foot determines when the ground has been touched. At this point, the via-points are translated to an appropriate position such that the straight-line motion of the leg will occur at the new height. If all three sets of legs are being planted at higher positions relative to the body of the robot, as may occur when the robot is moving on some type of incline, the robot compensates by lifting the entire body of the robot. This prevents the underside from touching the ground.

A second problem that may be encountered while the robot is navigating arises from small objects or terrain features that may prevent the leg from moving forward. In general, the robot will tend to move around large obstacles. Some terrain features may, however, be of interest to the robot. An example of such a terrain feature would be a stair, which the robot may want to climb. In this case, the controller must realize when the leg has hit the object, raise the leg to some new position and try again. It should continue doing this until it either clears the object or finds that it is unable to lift the leg high enough. At this point, the high level controller should be notified that an insurmountable obstacle is obstructing motion in the desired direction. By handling this type of obstacle at a low level, the high-level controller remains undisturbed by many of the details of moving the robot forward.

Figure 31 - Leg encountering some obstacle, clearing it and planting on top of the obstacle.

6.1.2 Vector Based Foot Control

The straight-line motion of the foot is achieved by calculating a desired velocity along a unit vector that will move the foot towards the next desired point in space. These will generally tend to be the via-points discussed previously but the flexibility of the leg allows it to be moved to any point in its effective workspace. The current position of the foot is calculated based on the forward kinematics of the leg. The next point in the leg trajectory is determined by the next via-point to which the foot is moving. Using these two points, the direction of a unit vector pointing towards the next via-point can be found. This vector will move the foot towards the desired point, as shown in Equation 3.

Equation 3 - Vector based control law for desired velocity

This equation represents the desired velocity of the foot in Cartesian space. This velocity must then be converted to joint space so that appropriate control commands can be sent to each of the leg motors. The inverse of the Jacobian matrix can be used to transform the velocities found into appropriate joint angle velocities. The relationship between the Cartesian velocity of the end-effector and the joint velocities is given by Equation 4.

Equation 4 - Transformation from Cartesian velocities to joint velocities

In order to implement the control law discussed above, there are a number of quantities which must be computed. The first is the current position of the foot based on the angles read from the potentiometers mounted at each joint. The approximate velocity achieved can also be computed using the new and old position, assuming that there is a fixed time step between each computation. This fixed time-step is achieved by using a timed interrupt to initiate the calculation of the position of the foot. This causes the time between each calculation to remain approximately fixed.

6.1.3 Forward Kinematics of the Leg

Forward kinematics play an important role in robotic applications. The ability to translate a series of joint angles (or other controlled quantities) into the position and orientation of the end effector is important for controlling the mechanism. By determining where in space the end effector is located, the controller can determine the direction in which it must be moved to arrive at some desired position and orientation. The leg of the robot being developed has three degrees of freedom, associated with the three motors that control the leg. This implies that the position of the foot can be controlled but that the orientation cannot. The position of the foot is given by Equation 5, which is derived in Appendix A - Kinematic Calculations.

Equation 5 - Position of the foot

6.1.4 Jacobian and Inverse Jacobian

As shown previously, the inverse of the Jacobian matrix can be used to translate desired Cartesian velocities of the foot into joint velocities for each joint. The Jacobian is generated by taking the partial derivative of each element of the position vector with respect to each of the joint angles. This generates a 3x3 matrix. The inverse of this matrix is shown in Appendix A - Kinematic Calculations, as derived using Maple. The kinematic computations and transformations between Cartesian and joint space using the inverse of the Jacobian are computationally intensive operations and a controller capable of handling these calculations is required.

6.1.5 Simulation Results of Low Level Control Scheme

Once the low level control scheme for the leg has been determined, it is important to test it to make sure it will perform as expected. By developing the control algorithms independently of the actual hardware, it is possible to test their performance and to uncover any bugs that may exist. There will, of course, be a significant amount of debugging associated with controlling the actual hardware but simulation of the control schemes reduces the likelihood of software problems and decreases the amount of time required to resolve interfacing issues.

The following figures show the simulation results. The control algorithms were implemented using Borland C and the data generated was plotted using Matlab. The motors at each leg are assumed to respond ideally to the commanded velocities. At each iteration, the joint angles are updated with the commanded velocity multiplied by the value of the time-step. This generates the desired joint positions and angles at each iteration of the control loop.

Another significant factor in the smoothness and accuracy of the control of the leg motions is the update rate of the controller. Some industrial robotic controllers achieve excellent motion with motor control update rates of around 50 Hz. Tests show that the 18 MHz SmartCore microcontrollers are capable of achieving an update rate of 40 Hz using the control approach that has been developed. In order to gauge the effectiveness of the controller, simulated data was generated using an update rate of 40 Hz.

Figure 32 shows three successive steps of the foot with the desired heading angle at the end of each step being 0o, 10o and 20o respectively. As can be seen, the foot does in fact trace out a straight line during each segment of the step. The circles in the figure indicate every tenth desired position. Figure 33 shows the commanded joint velocity rates for each of the angles during the three steps while Figure 34 shows the position of the foot and the commanded joint velocities together. The discontinuities that appear in the commanded joint signals arise when a new via point is assumed and the foot begins to move in a different direction. Finally, Figure 35 shows the XZ position of the foot during the three successive steps. This is equivalent to looking down from above the robot and shows that the foot does, in fact, trace out a straight line relative to the body of the robot during each step.

Figure 32 - The position of the foot vs time while executing three successive steps (units are in m)

Figure 33 - Commanded joint velocities vs time for three angles

Figure 34 - The position of the foot (m) and joint velocities (rad/s) vs time

Figure 35 - Position of the foot in the X-Z plane controlled at 40 Hz

These simulation results indicate that the low level control algorithms are able to control the leg to move to various positions through straight-line paths. The ability to control the leg in such a manner is one of the features that makes this robot unique for its size. Many robots of a similar size do not possess the ability to accurately or dynamically control each leg. Achieving straight motion of the leg using the robot hardware will be discussed in the next section.

6.1.6 Achieving Straight Line Motion with Robot Hardware

The vector based control approach can be used to generate straight-line motion of the foot assuming the changes in the joint angles are achieved at each time step. The control loop is shown in Figure 36. At each iteration of the control loop, the current position of the leg is compared against the desired position. If they are not close enough, a unit vector that points from the current position to the desired position is computed and this is used to find the desired velocity of the foot. The inverse of the Jacobian transforms this velocity vector to joint velocities and this is in turn used to update the position of each angle of the leg. This simple yet computationally expensive control approach is used to maintain the flexibility of the leg motions. By changing the desired position of the foot to any position in its work envelope, the leg can be moved in a straight line to that position.

Figure 36 - Ideal straight line motor control loop

In simulation, this approach is able to move the foot through straight-line trajectories to achieve its desired position, as was shown in the previous section. When first implemented on the robot, this control scheme did not work very well. Dynamic effects of the leg and poor motor characteristic modelling meant that the motors were not able to achieve the desired angular positions and velocities necessary to achieve straight-line motion of the foot. Attempts were made to improve the motor modelling but dynamic effects of the legs still prevented the leg from moving in a straight line using this simple control scheme. A more complex scheme, in which dynamic effects are taken into account, could have been adopted but this simple model was already taxing the controller resources and it was felt that it would be better to maintain this scheme.

The desired position and velocity of each of the leg angles are computed at each iteration of the control loop. One way to force the legs to move the feet through straight lines using this approach is to implement a second control loop which feeds off of the first and attempts to drive the angles to their desired positions and velocities using a simple PD control law. This is shown in Figure 37.

Figure 37 - Control loops showing PD control loop used to drive the hardware

The two loops can be run at the same time or they can each run at their own dedicated interrupt rate. The PD control loop should be updated at a high rate to allow for more precise control of the leg position while the desired leg angles can be updated more slowly. The PD gains can then be tuned to achieve the desired system response. This control approach has proven to be quite effective at controlling the feet to move through straight-line motion.

6.2 High-Level Control of Robot Motion

There are a number of different methods by which autonomous robot control can be achieved. Some methods are based on concepts borrowed from classical artificial intelligence and model the world around the robot, searching through a problem space for actions that will help it to achieve its goals. This may involve moving around obstacles that are represented in some internal map, navigating through a maze or carrying out some sequence of movements which accomplish a given task. This information can either be pre-programmed into the robot or it may learn about its environment and update its internal representation as it moves. One problem with this type of control scheme is that it is fairly static. Any complex behaviours which the robot might exhibit are pre-programmed and it does not have much opportunity to learn or evolve new action sequences. Faced with an unfamiliar situation, these robots may not be able to respond appropriately.

A number of alternatives to the classical methods of artificial intelligence for robot control are currently being studied. Many of these control schemes borrow concepts from biology, studying the ways in which actual biological organisms respond to various stimuli. It has been found that some fairly complex behaviours can be obtained by incorporating a number of simple behavioural responses into a robotic device. The combination of these simple behaviours will often result in quite complex behavioural responses. In addition to this, the ability for the robot controller to learn about its environment and, more importantly, how it interacts with this environment will result in a robot that can adapt to unfamiliar situations.

6.2.1 Vector Based Behavioural Control

The control approach being developed for the current robot borrows concepts from a number of different autonomous robot control schemes currently being used. Subsumption architecture, as described by Rodney Brooks at MIT, builds the control scheme of the robot through a number of behavioural layers [1] . Each successive layer represents a more complex behaviour. The interaction of these behavioural characteristics can often combine to create emergent behaviours which are not strictly speaking a part of the robot’s programmed behaviour patterns. Vector based approaches, on the other hand, have also been used to control a number of autonomous robots. The environment of the robot is modeled using vector potential fields, with desirable locations being characterized by potential wells and undesirable points by repulsion fields.

A combination of these techniques will allow behaviours to be modeled by the vector headings they impart to the robot. In response to each type of stimuli, the robot may add a vector representation of the response to that stimuli to its current desired heading. By defining various behaviours using a vector representation, the behaviour vectors can be summed to produce more complex behavioural responses. In order to enable the robot to function in a dynamic environment it must be able to adapt to new situations. The ability for the robot to learn how to model its environment is likely to be highly beneficial and will allow the robot to function more robustly in response to any situations it might encounter.

An attempt has been made to separate the high level control of the robot motion as much as possible from the low level control responsible for the motion of each leg. The high-level controller computes desired headings for the robot based on information received from its various sensors. It then communicates the information necessary for the low-level controllers to move the robot in the desired direction to each of the slave controllers. It also periodically monitors the progress of each leg and determines appropriate walking gaits to adopt.

As mentioned in the previous section, the via-points through which the leg is moved are adjusted according to the desired heading of the robot. When the robot is moving straight forward, each of the six feet pulls the body forward along a straight line path parallel to the desired direction of motion. For turning the robot through some angle, the front legs pull the body along a line parallel to the desired direction of motion, the center leg motion shifts to start each step at the end of the step of the front pair and the rear pair of legs pull in a line parallel to the negative of the desired direction of travel, as shown in Figure 38. In effect, this acts similar to four wheel steering at slow speeds found in some automobiles. The arrows between the adjusted via-points indicate the motion of the leg when it is contact with the ground. Notice that the Z-axes of the leg frames have been defined in the opposite direction to the Z-axis of the robot frame. This has been done in order that a positive motion of the leg when it is in contact with the ground results in a positive motion of the body.

Figure 38 - The adjusted via-points used to move the robot in some heading with a small turning radius.

There will be situations in which the robot will be required to advance in some direction that is not its current direction of motion. To accommodate this type of motion it can adopt a shuffling gait, in much the same way that a crab moves. This is shown in Figure 39. This situation occurs when the robot finds that an object is close to one of its sides or that a desired goal is situated to the side of its body. Instead of trying to turn, and thus potentially missing the goal or not moving away from the object, it will shuffle in the chosen direction. These two approaches allow the robot to deal with a number of different situations in which it might find itself.

Figure 39 - The adjusted via-points used to move the robot away from an obstruction.

One of the most important tasks of the high level controller is to determine the desired heading of the robot. A desired task causes the robot to move towards some goal. These goals will be determined based on the sensory stimuli which the robot perceives and it may actually set multiple goals, since these can then be summed to find a desired heading which will attempt to resolve some or all of the goals. By weighting the strengths of the goals, they can be prioritized and more important goals addressed before other goals or behavioural responses of less importance are considered.

Some goals may be set directly in response to certain stimuli while others might arise more spontaneously. One possible goal is to simply wander around a room, randomly picking desired headings and avoiding objects it finds in its path. Given appropriate sensory feedback, the robot is able to make more constructive decisions about where to proceed. Given a heat sensor, the robot may move towards the greatest source of heat for a fire fighting application. Given some type of global positioning system, the robot might attempt to move to some point on the surface of the earth.

Whatever the goal, the robot must be able to move towards it, avoiding obstacles that appear in its path. The method chosen to accomplish this is shown in Figure 40. The robot determines the goal heading. This is represented internally as a vector in which the robot will attempt to move. Sensory feedback will tell the robot if there is anything obstructing the desired direction of motion. If it finds objects that are blocking its path, it translates the objects into a repulsion vector that will push the robot away from the object. Since it will always assume a straight-line path to its goal, it will choose the minimum path to its goal using this method.

Figure 40 - Computation of desired heading given an obstructing object.

In some cases, the robot may have to adopt sub-goals in order to achieve some greater goal. For example, if the robot wishes to reach a position on the other side of a wall, it cannot simply walk towards the point. The wall will repel the robot and it will tend to achieve some neutral point at which the repulsion of the wall is equal and opposite to the desired heading. At this point the robot will become stuck. It must possess the necessary intelligence to allow it to set a sub-goal of finding an opening in the wall, by moving along the wall until it finds such a passage.

The task of defining the goals and behaviours of the robot is one that remains to be developed. It will be the focus of the control development during the continuation of this project. Ideally, the robot will be able to learn about its environment and will be provided with sufficient sensory feedback to make decisions about the world around it.

6.2.2 Walking Gaits

Another important feature of walking which must be managed by the high level controller is the walking gait adopted to move the robot forward. A walking gait is a pattern through which the legs are moved in order to achieve forward motion of the body. There are a number of different walking gaits that are adopted by six-legged organisms and these can be adopted for the robot.

One of the major advantages of legged robots over wheeled robots is their ability to change the way that they achieve locomotion depending on the environment in which they find themselves. Wheeled robots are restricted to move by turning their wheels. They can change the speed at which the wheels turn but there is little else they can do to adapt their motion to a changing environment. Legged robots, on the other hand, are able to select walking gaits depending on the irregularities in the environment and the terrain uncertainty in the immediate surroundings. They are also able to change between different walking gaits depending on current information about their surroundings.

The three major walking gaits considered for this robot are the tripod gait, the ripple gait and the wave gait. These different gaits are adopted for different types of terrain, with each one being suited for a certain type of locomotion. Refer to [18] for a more detailed discussion of different walking gaits and for the source of the gait diagrams that follow. In these diagrams, the heavy bars represent the portion of the walking phase in which the foot is in contact with the ground. The leg configuration is shown in Figure 41.

Figure 41 - Leg configuration of the robot

The tripod gait, shown in Figure 42, is used to move over relatively flat terrain at high speeds. The gait is implemented by treating the legs as two distinct tripods, with the robot balanced on at least one tripod at any one time. Walking is achieved by lifting one tripod, which leaves the body to be supported by the other tripod. When the supporting tripod is pulled back, the body advances and the raised tripod is planted to begin the cycle again.

Figure 42 - Tripod gait diagram

The ripple gait is used when the robot needs more stability than is provided by the tripod gait. As shown in Figure 43, it maintains four legs on the ground at all times, providing a more stable platform for the body. Steps are initiated at the rear leg and ripple up each side of the body, with the next leg raising as the previous leg is planted. The leg pairs operate 180o out of phase. This gait advances the body more slowly than the tripod gait but increases the stability of the body.

Figure 43 - Ripple gait diagram

Finally, the wave gait, which operates on much the same principle as the ripple gait, initiates motion at the rear leg on one side of the body. When the foot motion has rippled to the front of the body, the rear leg on the other side initiates motion. This means that the robot will have five feet on the ground at all times as shown in Figure 44. This gait is the slowest of the three but is also the most stable and can be used in rocky or otherwise uneven terrain.

Figure 44 - Wave gait diagram

6.2.3 Sensory Feedback

Due to limited sensory feedback, the robot currently has very little ability to detect the world around it. Its only true feedback comes from the potentiometers mounted at the joints. This sense is analogous to our kinesthetic sense, or the ability to sense the position or movement of parts of the body such as the arms, fingers or legs without seeing them. If we were to attempt to walk while relying only on this sense, we would likely not get very far. This is also true of the robot in its current state.

The selection and addition of new sensory inputs will be a crucial task in the next phase of this project. These sensors must provide the robot with a better picture of the world around it and will allow it to make decisions about the environment in which it is operating. There are a number of different categories into which these sensors fall.

6.2.3.1 Limit Sensing

In order for the robot to operate autonomously without risk of damaging itself, limit sensors should be installed at the joints. These sensors should inhibit the robot from rotating the various leg joints outside of their effective work envelope. These sensors should be implemented as a hardware safety backup with the signal being available to the processor. The registers for the implementation of these sensors are available with the current hardware design. Appropriate limit sensors were not found. Rotary limit switches or micro-switches are two possible methods by which limit sensors could be implemented. Further investigation into limit sensing technologies is required. During normal operation, the robot will not rely on these sensors as they are meant primarily as an added safety feature.

6.2.3.2 Touch Sensing

Touch sensing will allow the robot to determine when it is touching an object. There are a number of different places in which touch sensing would prove useful. The foot is the primary place on the robot where touch sensing is required. If the robot is moving through unfamiliar terrain, it cannot simply assume a static walking sequence but must be sensitive to changes in the height of the ground. It should also be able to detect obstacles in its path when it is moving its legs. When it encounters an obstacle it must have the ability to take appropriate action, be that to step over the object or move around the object. This ability will rely to a certain extent on other sensory input that will allow the robot to determine the true nature of the obstacle.

Touch sensors come in a variety of forms, with the micro-switch being the simplest form of these. By wiring up the micro-switches attached to the bottom of the feet, it will be possible for the robot to tell when a foot has touched the ground.

Tentacle-like probes attached to contact sensors, much the same as the tentacles on ants and other insects, are commonly used with other small robots. They have been used successfully to act as wall sensors for wall following robots, for example. This type of sensor is appropriate for collision avoidance.

6.2.3.3 Force Sensing

The forces acting on the leg near the foot could be used to complement touch sensors mounted on the foot. Axial forces along the leg could be used to gauge the force with which the robot is pushing into the ground. Transverse forces could be used to indicate whether the legs are acting against each other, if the legs are slipping during the propulsion stage or if the leg is encountering some form of resistance.

Force sensors are generally more expensive than touch sensors and may prove to be beyond the budget of this project. Further investigation of these sensors is required.

6.2.3.4 Body Orientation

The orientation of the body is important for a number of reasons. The primary reason for monitoring body orientation is for balance feedback. If the robot is attempting to climb over an obstacle or is walking on an inclined surface, it must be able to tell when it is at risk of overturning. A measure of the angle of inclination of the body will allow it to calculate the location of its center of mass with regards to the feet touching the ground. If the center of mass passes outside of the supporting boundary formed by the legs, the robot will tip over. It may then choose to adopt a different walking gait to minimize the risk of its center of gravity passing outside of its support platform by increasing the number of legs touching the ground.

Body orientation can be provided by a number of different sensors. These include but are not limited to gyroscopes and damped pendulums. These can either provide an analog signal relating to the orientation of the body or a binary feedback indicating departure from the vertical by a certain amount. Once again, further investigation of this technology is required.

6.2.3.5 Proximity Sensing

As with touch sensing discussed earlier, it is important for the robot to know when it is approaching an object. It is not sufficient for the robot to find objects in its path by touch alone. It must be aware of objects in its immediate area and be able to react to these objects without bumping into them. The less physical contact the robot has with objects around it, the less likely it is to damage itself.

6.2.3.6 Terrain Scanning

In order for the robot to navigate in unfamiliar terrain, it must be able to scan the world around it. It must then be able to translate the data it receives into some meaningful form to allow it to maneuver around objects and other obstacles in its path. Examples of terrain scanning techniques are sonar, infra-red, laser range-finding and image processing. There are many different ways the robot could sense the world around it and it is likely that a combination of techniques will be adopted.

One of the cheapest terrain scanning technologies currently available is the sonar range finder. Two of these devices have been purchased and investigation is underway as to how these sensors can best be incorporated into the current hardware design. For a discussion regarding preliminary research done about sonar technologies, refer to Appendix G – Sonar Tips.

Previous Section | Table of Contents | Next Section

copyright information
Back to home page. Last updated: April 20th, 1997