A Dynamic Control Scheme with Differential Foot Placement for a Hexapod Robot
Sander Idelson, Andy Anthony and Brian Stevenson
 Abstract In this paper, a new dynamic walking scheme is  developed for a 3 degree of freedom hexapod robot. The method uses dynamic differential motion, inverse kinematics, a special z-  sub-stepping function and current sensing to walk dynamically.
 
I.
 
I
 NTRODUCTION
 Currently, the field of bio-robotics is an area of growing interest to researchers and industry alike. Often, hexapods, or six legged robots are used to simulate the movement of spiders, grasshoppers and other insects. The basis of this  project is to create a means of ambulation for a hexapod that can dynamically change foot placement based on an input vector. The motivation for this project is to create a more advanced leg placement technique that will allow robots to  better replicate insect behavior. Creating a walking method that allows the robot to change its leg direction mid-step, as well as react to uneven surfaces in real time, was done with inverse kinematics, differential motion. Just as a spider can lift its leg, move it in the
 x
 and
 y
 plane and place it at another point (unrelated to the position of the other legs), the hexapod should be able to move each of its legs independently and based on instantaneous vectors. It should also be able to rotate its  body with respect to the central
 x
,
 y
 and
 z
 axes. The allowance of this much freedom enhances the ability of a walking gait to steer in the exact direction that is given, as well as change its direction instantaneously. The method that was chosen uses sub-stepping to increment the differential vectors of the leg position and move the leg accordingly. II.
 
L
ITERATURE
S
URVEY
 
 A.
 
 Dynamic Leg Movement
Creating a walking scheme with dynamic movement is a  problem that has been solved with a number of methods. Each technique described was used as a basis for the team’s technique. One design used a similar
 z
-stepping technique in order to move the leg from one point to another. A single direction vector was input into the system and a final position of each leg was defined. Using inverse kinematics, and the final  position, the leg was moved towards its goal. The quadratic error from the final position was calculated after each movement and fed back in order to make its next movement. The total movement was meant to look like a parabolic motion [1]. Another method used a predefined trajectory to accomplish a walking movement [2]. A starting point, mid- point and end point were defined and the robot calculates the  best way to reach these points using inverse kinematics. This robot also used dynamics to determine the loads necessary to  perform specific movements. The robot used force and torque feedback to accomplish its task. A very basic way to move the legs was to use forward kinematics based on a position vector that is input into the system [3]. The robot moves according the specified path and determined by the vector. This method is typical of many current hexapods and has many applications.
 B.
 
Force Sensing
The challenge of using force sensing for hexapod movement over uneven surfaces has been studied many
 
others. Information on previous uses of force feedback were analyzed by the team. One solution for hexapod motion over uneven terrain
 
uses the combination of designed force threshold-based foot motion and center-of-body (CoB) based omnidirectional movement. Using these processes the movement of the hexapods omnidirectional movement could be stabilized with a dynamic gait application. Applying the dynamic solutions to the robot allowed for enhanced stability when traveling over uneven terrain. Using the CoB-based omnidirectional movement provided better results when implemented with a
 
 process called environment trailed trajectory (EET). This
 
allows the robot to intelligently solve foot placement
 
solutions when presented with uneven terrain while keeping the body stable [4]. Another paper talks about many of the ways that force sensing can be performed in hexapod locomotion as compared to real six-legged insects [5]. It was found from this paper that force sensing can be used to detect force and its rate of change during locomotion, provide information about the direction of force while standing still, detect sudden force decreases (such as slipping), and enhance muscle feedback while moving [5]. The paper goes on to
 
analyze how strain gauges can be used to perform force
 
sensing in a similar way to real insect sensory systems. This  paper gives a biological viewpoint of hexapod movement and force sensing. One force sensing technique was to use current measurement through shunt resistors. The voltage drop across the resistor is amplified and then passed through an analog to digital converter before being processed by a digital control loop. It provides insight in how to implement trace resistance and temperature sensors to correct for thermal drift errors, in summary the shunt resistors are
 
replaced by resistive traces and must be amplified and
Dr. Ferat Sahin, Rochester Institute of Technology
 
digitized in a similar procedure. The other solutions discussed in the paper include induction measurement for current estimation and the used of magnetic field sensors. A comparison of each method, its accuracy, limitations and efficiency is presented at the end of the article allowing the used to pick the most applicable approach to their project [6]. III.
 
H
EXAPOD
S
TRUCTURE
 A new hexapod, nicknamed the “Tigerbug”, was constructed for this project. The design is based on a similar Hexapod built at the RIT Multi-Agent BioRobotics Lab (MABL). The team’s hexapod was built from the ground up, in an attempt to improve the strength, flexibility and capability of the previous model. Some of the improvements that were made include more powerful servo motors, a more capable on-board computer, a larger size, and a better size to weight ratio.
 A.
 
 Leg Structure
The hexapod robot has six legs, each spaced by 60 degrees around the central axis. They are numbered 0 to 5, counter-clockwise around the robot, for ease of  programming. Each leg has 3 degrees of freedom allowing for a greater range of motion than other hexapods available. The leg has three servos, each controlling a movement of the leg. The hip servo, connected to the base of the robot, moves the leg backward and forward. The knee servo is attached to the hip and controls a portion of the vertical and horizontal motion of the leg. Finally, the wrist servo mostly controls the horizontal motion of the leg. The foot is the  point of contact with the ground, at the end of the wrist  joint. Figure 1 shows the leg lengths of the robot.
 B.
 
 Mapping of the Robot
The robot was mapped using the Denavit-Hartenberg (D-H) approach. The goal was to create a transformation from the center of the robot to the foot of every leg. It is important to note that the orientation of the
 z
-axis of the frame at each foot must be parallel to the frame at the center of the robot in order for the team’s control method to work. Figure 2 shows the frames that are used on a single leg of the robot.
Figure 2: This is a diagram of the frames on a single leg.
The D-H Table has more steps than joints due to the rotation of the foot frame to match the center frame orientation. Table 1 is the complete D-H Table for the hexapod.
TABLE I. DENAVIT-HARTENBERG TABLE
 Joint
θ 
 d a
α
 
 c
0
(Leg #)*60
 
0 L
1
0
1 (Hip)
0
 
-L
2
0 0
 2 (Knee)
θ 
1
 0 L
3
 90
 3 (Wrist)
θ 
2
 0 L
4
 0
 F1
θ 
3
-90 0 L
5
 0
 F2
-90 0
 
 L
 0
 F3
180-
θ 
2
-
θ 
3
 0 0 -90
 F
θ 
1
-
θ 
 L
 0 0 0
The first joint that is shown in the table is a preliminary  joint to move the center frame to just above the first frame for any leg. Each leg has a number that is defined sequentially around the robot. The angle for each leg is given by 60 degrees times the leg number. The equation for the transformation from the center to the foot frame,
, is the multiplication of all of the frame transformations of the  joints. The D-H Table allowed the team to calculate the transformation matrices and the Jacobian matrix (Appendix A) needed for the inverse kinematics.
C.
 
Construction of the Robot
The hexapod was designed and built entirely by the team. The actuator at each leg joint is a RoBoard-1270 digital servo motor. These servos were chosen specifically because they are capable of high torque (35 kg-cm). Eighteen of these servos are used on the robot. The RoBoard RB-100 Single Board Computer with onboard Linux was used as the  brain and controller. Using a computer to perform the calculations and control the robot was necessary because real-time processing was needed for the movement of the robot. This particular computer runs at 1000 MHz, which is fast enough to handle the real-time processing without
Figure 1: This image shows the leg lengths for one leg of the robot.
 
stuttering. For ease and to free up pins on the Roboard, a Lynxmotion SSC-32 Servo Controller was used to interface with the servos. Current sensing was performed with an analog sensor board built designed at RIT. A Xbox 360 controller, with wireless USB interfacing, was used to control the robot. The hexapod body is built with carbon fiber with foam core sheets, and Lexan. Creating a very light  body was essential to the hexapod development because extra weight can strain the motors.
Figure 3: The final construction of the robot
IV.
 
P
ROPOSED
A
PPROACH
 
 A.
 
 Main Loop
The robot operates in a while loop that is dependent on the input from the Xbox 360 controller. The user inputs a direction vector with the joystick on the controller. The vector is interpreted as the direction that the center of the robot should travel in the x-y plane. The method is to use inverse kinematics and differential motion to convert the vector into differential angles for each to servo to move. These differential values are added to the current servo angles, converted to pulse width modulation (PWM) signals and sent to the motors. The movement of the legs is an iterative procedure that continuously updates with the current vector from the joystick. Each leg has a finite number of differential movements,
, before it reaches the ground (at value
 =
max
) and the next leg in the gait sequence starts moving starting once again with
 = 0. While the
 x
 and
 y
 of the leg positions are determined by the input vector, the
 z
  position is defined with a function that is based on the incremented
 value. The change in the
 z
-position of the leg is fed directly into the differential motion equations that are shown later and carried through with the input vector from the joystick. The
 z
-position of the leg is controlled by a function that utilizes both the iteration of
 and the current sensing.
 B.
 
Kinematics
Inverse kinematics are used to determine the differential angles that the leg servos should move from one step to the next. First, a direction from the joystick is interpreted as a vector with step size,
v
. The height of the center of the robot should not change, so its value here is always zero. If the height of the center of the robot changes, that change in  position is denoted
dz
 and is input into the vector. The angle,
θ 
, of the joystick from its straight forward position will be used to determine the
 x
-
 y
 portion of the vector of the robot. The input vector, V is shown below.
=
cos
sin
 
 (1) In order to convert the input vector to the leg frame, a frame transformation must be performed. The input vector,
, is put into to the position column of the center differential matrix,
c
 Δ
 (Appendix A, Eq. 3). Using the D-H Table of the robot, the transformation from the center of the robot to the leg frame,
c
, was found (Appendix A, Eq. 1). After finding
c
, the differential matrix is needed in order to get the change in position of the foot. The transformation below produces the foot frame differential matrix,
 Δ
.
=
 
−1
 
c
Δ
 
 (2)
 
 Next, the differential change in the position of the foot frame,
 D
, is extracted from
 Δ
 L
. The Jacobian (
 J 
) (Appendix A, Eq. 2) of the
c
 
matrix must be calculated. To find the differential change in the motor angles,
 D
θ 
, the inverse of the Jacobian is pre-multiplied by
 D
. The vector
 D
θ 
 is the angular change that will be made in the current step.
=
 
1
2
3
=
 
−1
 
 (3) Finally, the differential change in motor position is added to the current servo position, converted to a pulse width modulation signal and sent via serial to the servo controller  board.
C.
 
 Z-Position Function
The
 z
-position of the foot frame uses a separate function that depends on the increment,
, and the current sensing to  place the foot at the correct height from the ground. The  basic idea is to move the leg up and down independently of the
 x
 and
 y
 positions of the leg from the input vector. For each increment, the leg moves a small amount along a path that is defined by the user. The more increments that are used, the smoother the motion will be. The change in the
 z
- position that is defined by the function is input directly into the
 D
 vector before it is multiplied by the inverse Jacobian matrix to obtain the servo angles. The
 z
-function comprises of a simple if-then statement that determines whether the leg is interacting with an uneven surface. The structure of the statement will be to check that the current that was sensed from the last movement is within an expected range for that movement. If the detected current differs from the expected current by a
View on Scribd