Download - UVic Hexapod 2012
-
7/31/2019 UVic Hexapod 2012
1/31
ELEC 499 / CENG 499
Group 7: Autonomous Hexapod Robot
Final Report
Group Members:Ying Li
Paul MulcahyJoe Chapman
Group Supervisor:Dr. Pan Agathoklis
http://web.uvic.ca/[email protected]
-
7/31/2019 UVic Hexapod 2012
2/31
ii
Table of Contents1 Introduction ......................................................................................................................... 2
1.1 The Definition of a Robot ............................................................................................. 21.1.1 Industrial Robots ................................................................................................... 21.1.2 Agriculture Robots ................................................................................................ 21.1.3 Telerobots ............................................................................................................. 21.1.4 Service Robots ..................................................................................................... 21.1.5 Mobile Robots ....................................................................................................... 2
1.2 Mobile Robots .............................................................................................................. 31.2.1 Wheeled Robots ................................................................................................... 31.2.2 Tracked Robots .................................................................................................... 31.2.3 Legged Robots ..................................................................................................... 3
1.3 Hexapod ...................................................................................................................... 41.4 Objectives .................................................................................................................... 5
2 Hexapod Construction......................................................................................................... 62.1
Servo Erector Set:........................................................................................................ 7
2.2 Servo Motor: ................................................................................................................ 72.3 Force Sensors: ............................................................................................................ 82.4 Ultrasonic Sensors ....................................................................................................... 82.5 Infrared Sensors: ........................................................................................................102.6 Arduino Mega 2560 ADK Board: .................................................................................102.7 SSC-32 Servo Controller: ............................................................................................10
3 Inverse Kinematic Calculations ..........................................................................................124 Hexapod Modelling ............................................................................................................165 Module Description and Design .........................................................................................18
5.1 Software Development ................................................................................................185.1.1 Software Development Platform...........................................................................185.1.2 Interfacing with Servo Controller ..........................................................................185.1.3 Walking Algorithm ................................................................................................185.1.4 Turning and Walking Backwards ..........................................................................195.1.5 Walking in High Mode ..........................................................................................205.1.6 Interfacing with Infrared Sensors ..........................................................................205.1.7 Interfacing with Ultrasonic Sensors ......................................................................215.1.8 Interfacing with Touch Sensors ............................................................................215.1.9 Avoiding Walking Over Cliffs ................................................................................22
6 Test Results and Problems Encountered ...........................................................................236.1
Inverse Kinematics Testing .........................................................................................23
6.2 Ultrasonic Sensors ......................................................................................................246.3 Infrared Sensors .........................................................................................................246.4 Force Sensors ............................................................................................................246.5 Power Supply ..............................................................................................................256.6 Analog Ports ...............................................................................................................256.7 Climbing over Obstacles .............................................................................................26
-
7/31/2019 UVic Hexapod 2012
3/31
iii
7 Future Development and Recommendations .....................................................................278 Conclusions .......................................................................................................................289 Works Cited .......................................................................................................................29
List of TablesTable 1 - Servo Channels used for Hex Sequencer ..................................................................18Table 2 - Walking Sequence States ..........................................................................................19
List of FiguresFigure 1 - A bomb manipulator of the German Army with tracks [2] ............................................ 3Figure 2 - Toyota's monopod robot [3] ........................................................................................ 4Figure 3 - Honda's ASIMO bipod robot [4] .................................................................................. 4Figure 4: Hexapod ..................................................................................................................... 6Figure 5: System Diagram.......................................................................................................... 6Figure 6: Servo Brackets ............................................................................................................ 7Figure 7: Hitec HS-645MG Servo ............................................................................................... 7Figure 8: Force Sensor Construction .......................................................................................... 8Figure 9 - Ultrasonic transmitter circuit ....................................................................................... 8Figure 10 - Ultrasonic receiver circuit ......................................................................................... 9Figure 11 - Ultrasonic ranging .................................................................................................... 9Figure 12: Parallax Ultrasonic Sensor ........................................................................................ 9Figure 13: Infrared Sensor ........................................................................................................10Figure 14: Arduino Mega 2560 ADK ..........................................................................................10
Figure 15: Lynxmotion SSC-32 Servo Controller .......................................................................11Figure 16: Leg Schematic (XY-Plane) .......................................................................................12Figure 17: Case 1 Leg Schematic (XZ-Plane) ...........................................................................12Figure 18: Case 2 Leg Schematic (XZ-plane) ...........................................................................13Figure 19: Servo Leg Joints ......................................................................................................16Figure 20: Modelling Leg Rotation.............................................................................................16Figure 21 - Walking Motion using Hexapod Sequencer .............................................................19Figure 22: Infrared Sensor Schematics .....................................................................................21Figure 23: Force Sensor Indicator Schematics ..........................................................................22Figure 24: Actual Leg Position ..................................................................................................23Figure 25: Modelled Leg Position ..............................................................................................23Figure 26: Resistance vs. Force ................................................................................................25
-
7/31/2019 UVic Hexapod 2012
4/31
2
1 IntroductionIn todays technological society, people have grown accustomed to daily use of several kinds oftechnology from personal computers to supercomputers, from personal vehicles to commercialairplanes, from mobile phones to communicating through the Internet and everything inbetween. As such, the use of robots has also become increasingly common. Robots can be
used to complete repeated tasks, increase manufacturing production, carry extra weight andmany other common tasks that humans do.
1.1 The Definition of a Robot
The first thing that might come to mind when thinking of a robot is a humanoid machine from theTerminatoror Battlestar Galactica series. In reality, we arent quite at the level that Hollywoodlikes to project us to be. However, robots today do increase the average quality of life of mostpeople.
According to the Merriam-WebsterDictionary, a robot is either a device that automaticallyperforms complicated often repetitive tasks or a mechanism guided by automatic controls. [1]
There are several types of robots which will be described in the following sections. Some robotscould be described by more than one category.
1.1.1 Industrial Robots
These robots are used in industry and are typically designed to do one task at an incredible
speed. Some examples include pick and place machines for large circuit boards with many
components to welding robots used in an assembly line in the auto industry.
1.1.2 Agriculture Robots
Most agriculture robots are still in their design phase, but some simple ones such as using
global positioning systems to map out and guide a combine to harvest crops do assist farmerstoday.
1.1.3 Telerobots
Telerobots are pieces of equipment such as a set of arms which are controlled by an operator at
a distance. This is helpful in situations where it is hazardous for a human such as in a nuclear
powerplant setting or where a person of importance cant physically be where they need to be
such as a specialist surgeon.
1.1.4 Service Robots
Service robots are ones which are used outside of industry such as for domestic or military use.
1.1.5 Mobile Robots
Mobile robots are also known as Automated Guided Vehicles (AGV) and they do not remain
stationary. They can move around wither with the help of an operator or completely
autonomously. This is the type of robot that we are looking to build and will be the focus of the
rest of this report.
-
7/31/2019 UVic Hexapod 2012
5/31
3
1.2 Mobile Robots
As stated in Section 1.1.5, AVGs are able to move from place to place and can be classified by
the environments in which they are designed to move such as ground, water, air or space as
well as by the method with which they move such as legs, wheels, tracks, propeller, or rocket.
The scope of this project and report is in the domain of legged robots which shall be discussed
further.
1.2.1 Wheeled Robots
Wheeled robots are great for smooth terrain such as asphalt, concrete, or even gravel roads.
These are among the fastest mobile robots and the easiest to implement movement. They can
be completely electric for smaller scale or even run on combustion engines on a larger scale.
1.2.2 Tracked Robots
Tracked robots typically move slower than wheeled robots but are useful in many situations
where damage to the wheels is expected. One such example is police bomb disposal robots
where a potential explosion could blow the tires. A track system does not require rubber tiresand are therefore more robust in these situations.
Figure 1 - A bomb manipulator of the German Army with tracks [2]
1.2.3 Legged Robots
The advantages of legged robots become apparent when terrain becomes uneven and
unpredictable. As stated previously, wheeled or tracked robots excel on flat surfaces such as
asphalt or concrete roads and can reach much higher velocities than legged ones. However, alegged robot is much more robust in rocky and uneven terrain because it has the ability to climb
over obstacles by lifting its legs and pulling itself up.
-
7/31/2019 UVic Hexapod 2012
6/31
4
1.2.3.1 One-Legged Robots
Toyota developed a one legged robot in 2006 which was revolutionary in that it was able to hop
up and down and land stable. This is attributed to the active joint in the toe as well as in the
knee and the hip. The 1m tall robot is able to jump 4cm into the air. [3]
Figure 2 - Toyota's monopod robot [3]
1.2.3.2 Two-Legged RobotsTwo-Legged robots are also known as humanoid robots because humans also walk on two feet
and are usually the most human-like. The most famous humanoid robot is probably Hondas
ASIMO which first appeared in 2000. It can walk, run, and turn corners all on only two feet. It
has been used to encourage students to pursue careers in Science and Engineering. [4]
Figure 3 - Honda's ASIMO bipod robot [4]
1.2.3.3 Three or More Legged Robots
For better stability over rougher terrain, multiple legs can be used (usually in multiples of 2).
Four-legged robots will mimic movements of most mammals while six or more will move more
like insects or arachnids. The advantages to these robots over a bipod is that they are statically
stable and do not require balancing mechanisms to keep from falling over.
1.3 Hexapod
The hexapod robot has, by definition, six legs and is inspired by insects such as ants and
crickets. This gives it the ability to move flexibly across various terrains and, as stated in Section
1.2.3.3, does not require any balancing mechanisms to stand upright. The main purpose for
building this robot is to study the motions and movements of an insect. Applications for such a
-
7/31/2019 UVic Hexapod 2012
7/31
5
robot include environment exploration, search and rescue, and as a computer numerical control
machine.
1.4 Objectives
The objectives for this 3-month term from January to March 2012 are provided in the following
list.
1. Design the body and legs.
2. Determine appropriate parts and hardware to order.
3. Build the robot.
4. Calculate inverse kinematics for the leg movements.
5. Program walking functions
6. Program a rising function.
7. Program a climbing function.
8. Test and redesign where appropriate.
-
7/31/2019 UVic Hexapod 2012
8/31
6
2 Hexapod Construction
Figure 4: Hexapod
Our team designed the hexapod as shown in Figure 4. The hexapod is controlled by an Arduino
Mega 2560 ADK microcontroller. The microcontroller is serial linked to the servo controller
which sends commands to control the servo motors. The front of the robot has two infrared
sensors which rotate 90 degrees from straight ahead to their respective sides to scan the front
area for obstacles. The front ultrasonic sensor is positioned to detect the height of the hexapod
when the robot is standing up. Force sensors are installed on the tip of each leg to let the robot
know when its feet are touching something. Two Li-Po batteries are used to supply power to the
servo motors. An additional Ni-MH battery is used to power the microcontroller and the servo
controller. The system diagram is shown in Figure 5 and detailed parts selection is explained in
the rest of this section.
Figure 5: System Diagram
-
7/31/2019 UVic Hexapod 2012
9/31
7
2.1 Servo Erector Set:
Due to the limited time available for this design project, our team decided to build the hexapod
using a pre-fabricated servo erector set from Lynxmotion. The erector set offers a variety of
components to construct any mechanical arrangement possible. The components are made
from a high quality aluminum alloy which offers light weight, precision assembly and durability.
The erector set allows us to build the hexapod based on our own specifications. The leg of the
hexapod can easily be adjusted by changing the position of the servo horns. Burned out servos
can be replaced easily without taking apart of the entire leg assembly.
Figure 6: Servo Brackets
2.2 Servo Motor:
The hexapod requires 24 servos on its leg construction. It was decided to use Hitec HS-645MG
ultra torque (9.6Kg-cm) servos on all leg joints. The servo draws 450mA when running
continuously. The alumite gear construction offers an un-breakable gear train and fits the need
of high torque demand. The servo motor has three connectors. The red and black connectors
are for power and ground. The yellow connector is connected to a digital pin which needs to
have PWM ability to send out pulsed signals to control the servo motor.
Figure 7: Hitec HS-645MG Servo
-
7/31/2019 UVic Hexapod 2012
10/31
8
2.3 Force Sensors:
The Force Sensing Resistors (FSR) are made of a polymer of thick film which reacts as a
variable resistor. The FSR decreases in resistance when forces are applied to the active area.
The regular touch sensors only have a binary response as high and low. The FSR sensor is
able to return analog readings based on the force applied. The FSR can be used to adjust the
sensitivity of each leg when the robot is standing up. When the robot is climbing over obstacles,
it is crucial that when the leg lands on top of the obstacle, it should be able to stop the leg by
using this force sensor. The characteristics of this force sensor allow us to adjust the sensitivity
on each leg based on different terrain. The Force Sensors are connected in series with an LED
light to indicate how much pressure is being applied to each one in real time.
Figure 8: Force Sensor Construction
2.4 Ultrasonic Sensors
For the ultrasonic sensors,Arexx Engineerings Ultrasonic Kit for their Arsuro robot was chosen.This kit came with all the components required for the circuit which needed to be put together and
soldered onto a PCB board. Figure 9 shows the circuit for the transmitter while
Figure 10 shows the circuit for the receiver.
Figure 9 - Ultrasonic transmitter circuit
-
7/31/2019 UVic Hexapod 2012
11/31
9
Figure 10 - Ultrasonic receiver circuit
By programming the Arduino to send a small pulse signal through the transmitter, a reflected
signal could be detected at the receiver. The delay between the transmitted and received
signals can be measured and the distance to the object using the known speed of sound can be
calculated as shown in Figure 11.
Figure 11 - Ultrasonic ranging
Unfortunately our group could not get the designed ultrasonic sensor to work (most likely due to
an error in the soldering of the board), an alternate ultrasonic sensor kit was ordered from
parallax. This sensor kit is configured for easy programming, streamlined integration into
Arduino microcontrollers, and the readings are accurate with a distance range of 1cm to 30cm.
Figure 12: Parallax Ultrasonic Sensor
-
7/31/2019 UVic Hexapod 2012
12/31
10
2.5 Infrared Sensors:
The infrared sensors were selected from Sharp (Model: GP2D120). The sensor is widely used
for range detection purposes. The infrared sensor takes a continuous distance reading and
reports the distance as an analog voltage with a distance range of 4cm to 30cm.
Figure 13: Infrared Sensor
2.6 Arduino Mega 2560 ADK Board:
The Arduino ADK is an ATmega2560 microcontroller board that is able to interface with Android
based phones. The microcontroller has 54 digital input/output pins, 14 of the digital pins have
PWM outputs which can be used to control servo motors. The board also has 16 analog inputs,4 UARTS and 16MHz crystal oscillator. The reason this microcontroller board was chosen is
because the sensors requires a lot of analog input pins which other Arduino boards (such as
their popular Uno board) are unable to supply.
Figure 14: Arduino Mega 2560 ADK
2.7 SSC-32 Servo Controller:
The SSC-32 Servo Controller is able to control 32 servo motors simultaneously. The controller
offers accurate positioning and smooth movement. The servo controller is able to control the
servo motor up to the resolution of 1s. The analog servo motor can rotate with a range from
500s to 2500s. The digital servo motor can rotate with a range from 900s to 2100s. The
servo controller is able to control the speed and time of the servo motion. The Group Move
command is available which allows multiple servo motors to move simultaneously. We are able
to use this command to create complex walking gaits. To provide continuous current draw, the
servo controller is able to connect to two power supplies which power 16 servo motors each. A
12 servo hexapod sequencer is also built in and allows us to easily configure the servo motors
and walking in a tripod gait.
-
7/31/2019 UVic Hexapod 2012
13/31
11
Figure 15: Lynxmotion SSC-32 Servo Controller
-
7/31/2019 UVic Hexapod 2012
14/31
12
3 Inverse Kinematic Calculations
The inverse kinematics is calculated based on the geometric relationship between each leg
joint. The inverse kinematics computes the values of the joint variables which will achieve a
desired position and orientation of the end-effector. The position of the end-effector is definedas . The angle of each joint to reach the position of the end-effector is calculated
using the derived inverse kinematics equations. The D joint angle is calculated as follows:
Figure 16: Leg Schematic (XY-Plane)
Figure 17: Case 1 Leg Schematic (XZ-Plane)
-
7/31/2019 UVic Hexapod 2012
15/31
13
Figure 18: Case 2 Leg Schematic (XZ-plane)
Two cases of finding coordinates of joint P1 are considered in our calculation.
Case 1: when Pz is greater than , this indicates that joint P1 is below X-axis. The
coordinates of joint P1 is represented below:
Case 2: when Pz is less than , this indicates that joint P1 is above the X-axis. The
coordinates of joint P1 are represented below:
(Same as Case 1)
The distance between joint P1 and joint P3 is found as follows:
The law of cosines for the triangle defined by the segments with lengths L13, L12 and L23,
states that:
-
7/31/2019 UVic Hexapod 2012
16/31
14
The angle 2 can be found by re-arranging the above formula:
The formula for finding 2 applies for both cases.
The angle 3 consists of angle and angle for Case 1. In Case 2, additional 90 degrees need
to be included in finding angle 3.
The angle 3 is found by following formula:
Case 1:
Case 2:
The angle is also needed in order to determine the position of the servo motor at joint P1.
Case 1:
Case 2:
-
7/31/2019 UVic Hexapod 2012
17/31
15
After we determined the angles of each leg joints, we need to convert the joint angles to servo
positions. The servo controller only takes servo position readings, so we derived the following
equations to convert the servo angles:
The analog servo rotates 180 by its rotation range from 500s to 2500s. If the calculated
servo position is not within this range then the servo will switch into an idle state in which the
position can be random. When the robot is in walking mode, the bad servo position data will
cause the robot to collapse suddenly. Therefore we need to set a limit in the program to make
sure servo is within the desired range.
-
7/31/2019 UVic Hexapod 2012
18/31
16
4 Hexapod ModellingThe robot leg was modelled in 2D using AutoCAD drafting software. The dimension is drawn in
the actual scale based on leg dimension measured from the hexapod. We can use the AutoCAD
model to verify our inverse kinematics results and configure the physical rotation limit of each
leg joint.
Figure 19: Servo Leg Joints
The result of the inverse kinematics (IK) calculations is compared with the AutoCAD model. The
measurement results in AutoCAD should match the results from our IK equations. First of all,
the coordinates of the end effector is measured in AutoCAD. The coordinates are then entered
into the calculation program and the program returns the angle of each leg joint.
Figure 20: Modelling Leg Rotation
-
7/31/2019 UVic Hexapod 2012
19/31
17
Next, go back to the AutoCAD model and measure the angle of each leg joint to compare with
the calculation results. If both measurements match, the calculation has performed correctly in
the program.
Due to the physical constraint of the leg construction, it was noticed that there are coordinates
where the legs are not able to reach but the program still returns calculated leg joint angles. Inthis case the calculated results will be incorrect. Limits need to be set in the program to preventsuch errors from occurring.
Multiple leg positions are drawn in the 2D model to reflect the physical limit on each leg joint. By
looking at the 2D model, limits can be set on the servo positions to prevent each leg from
reaching false positions.
-
7/31/2019 UVic Hexapod 2012
20/31
18
5 Module Description and Design
5.1 Software Development
5.1.1 Software Development PlatformThe Arduino platform was selected as the controller board. Arduino uses the open-sourceWiring platform. Programs are written in a simplified C++ dialect, with two main functions.
setup() - a function run once at the beginning of program execution. It is meant to setupprogram functionality.
loop() - the forever repeated function that is run after setup().
The Arduino platform was selected because of its vast popularity and relative ease of use.
5.1.2 Interfacing with Servo Controller
The SSC-32 Servo Controller is interfaced to the Arduino board using the serial port.
5.1.2.1 Hexapod Sequencer
The Servo Hexapod Sequencer commands provide a programmer friendly way for developinghexapod robots with two servos (a horizontal servo and vertical servo) for each leg.
Table 1 - Servo Channels used for Hex Sequencer
0 Right Rear Vertical 16 Left Rear Vertical
1 Right Rear Horizontal 17 Left Rear Horizontal
2 Right Center Vertical 18 Left Center Vertical
3 Right Center Horizontal 19 Left Center Horizontal
4 Right Front Vertical 20 Left Front Vertical
5 Right Front Horizontal 21 Left Front Horizontal
5.1.3 Walking Algorithm
The Servo Controller documentation described a walking algorithm for a hexapod robot usingtwo motors per leg. This dual-tripod algorithm was revised and adapted to support the project'sfour motors per leg design through the inverse kinematics calculations and to allow other projectgoals.
The algorithm consists of 8 leg states. Implementation consisted of sending initial and ending[X, Y, Z] coordinates for each tripod to a walkState() function. This walkState function would splitthe walkState into a predefined number of sub-states. Inputs from the touch sensors weremeasured at every sub-state. This allowed overriding a descending leg onto an obstacle from
-
7/31/2019 UVic Hexapod 2012
21/31
19
pushing the entire robot over. As the rest of the tripod ascended above the obstacle, theaffected leg would begin moving again.
The initial and ending [X, Y, Z] coordinates for each tripod were sent to a function dedicated tocalculating the inverse kinematics. This function calculated the servo values to be given to eachservo in the legs of that tripod for that particular sub-state.
Figure 21 - Walking Motion using Hexapod Sequencer
Table 2 - Walking Sequence States
Tripod A Tripod B
State Vertical Horizontal Vertical Horizontal
0 Low Front to Center Mid to High Rear to Center
1 Low Center to Rear High to Mid Center to Front
2 Low Rear Mid to Low Front
3 Low to Mid Rear Low Front
4 Mid to High Rear to Center Low Front to Center
5 High to Mid Center to Front Low Center to Rear
6 Mid to Low Front Low Rear
7 Low Front Low to Mid Rear
5.1.4 Turning and Walking Backwards
Between each state the robot adjusts two infrared sensors attached to servos on its front andtakes readings. After all eight states, it has readings for many angles in front of it. At this pointthe program examines the readings.
-
7/31/2019 UVic Hexapod 2012
22/31
20
If at least one of the readings of the left infrared sensor is determined to be high but none arefound by the right infrared sensor, then the robot is programmed to turn right. If at least one ofthe readings of the right infrared sensor is determined to be high but none are found by the leftinfrared sensor, then the robot is programmed to turn left.
If at least one high reading is found by both infrared sensors, the robot is programmed to rise up
into a high mode. Once in high mode, the robot takes new infrared sensor readings. Thesereadings are to determine if the obstacle directly in front of the robot can be stepped over. If anyof the readings return high, the robot lowers down to Low mode and is programmed to walkbackwards.
The robot is programmed to turned left, right, or walk backwards by altering the horizontalvalues given to the tripod legs in each walk state. To turn left or right, one of the tripodshorizontal values are reversed while the others are kept the same. To walk backwards, bothhorizontal values are reversed for the walk states.
In order to effectively turn or walk backwards, the robot must keep turning/reversing for morethan one cycle of states. For this reason, a 'turning' variable is assigned a number of walking
state cycles to go through before the walking mode is reset to walking forwards. Infrared inputsare ignored while the robot is turning or walking backwards.
5.1.5 Walking in High Mode
As stated previously, if at least one high reading is found by both infrared sensors, the robot isprogrammed to rise up into a high mode. New infrared sensor readings are taken to determine ifthe obstacle directly in front of the robot can be stepped over. If no readings return high, therobot begins walking forward in high mode.
Two ultrasonic sensors are attached to the robot, one in the front and one in the back. Thesesensors point directly towards the floor. When in high mode, if there are no obstacles beneaththem, the sensors should read above 15cm. When walking forward in high mode, the frontsensor first detects the obstacle going underneath. When the obstacle is detected under therear sensor and then is not detected and nothing is detected by the front sensor, the robotlowers down to low mode.
5.1.6 Interfacing with Infrared Sensors
The value of the infrared sensor is read into the program using the Arduino analogRead(pin
number) function. Pin number refers to which analog pin of the Arduino the sensor is attached
to. The analog-to-digital converter converts the voltage reading, 0 5V, to a value between 0
and 1023.
A low value refers to an infrared reading that is far away. A high value refers to an infraredreading that is very close. For the project, a detection of objects closer than or equal to 10cm
was desired. Through experimentation, it was determined that values returned greater than or
equal to 120 are closer than or equal to 10cm. This was a rough estimate as the infrared signal
returned depended heavily on the colour of the object it was bouncing off of.
-
7/31/2019 UVic Hexapod 2012
23/31
21
The infrared sensor is connected to the Arduino Mega board using the configuration shown in
Figure 22.
Figure 22: Infrared Sensor Schematics
5.1.7 Interfacing with Ultrasonic Sensors
The ultrasonic sensor detects a range from several cm to several meters. It sends an
ultrasonic pulse and then listens for the reflective sound off a nearby object.
The pin mode of the ultrasonic pin is first change to output through pinmode(ultrasonic pin,
OUTPUT). digitalWrite(ultrasonic pin, Low Pulse) pulses preceed and follow a
digitalWrite(ultrasonic pin, High Pulse) pulse to ensure a clean high pulse. Ultrasonic pin refers
to the digital pin that ultrasonic sensor is connected to. Low Pulse and High Pulse refer to built-
in LOW and HIGH Arduino constants.
Next, the pin mode of the ultrasonic pin is change to input through pinmode(ultrasonic pin,
INPUT). The duration in microseconds is found through the Arduino function, pulseIn(ultrasonic
pin, High Pulse). Sound travels approximately 340m/s or 29 microseconds per cm. To find the
number of cm travelled, we divide the number of microseconds once by 29, and then once
again by 2 because the distance has been travelled twice.
5.1.8 Interfacing with Touch Sensors
The force sensor is connected using the configuration as shown in Figure 23. This connection
takes an analog reading from the analog pins. We can use this analog value to set the
sensitivity on each leg. The analog readings are also converted to a PWM range of 0 to 255.The signal is then sent out of the digital PWM pin and it will determine how bright the LED will
be. Therefore we can visually inspect the force sensors to see if it is operating correctly.
-
7/31/2019 UVic Hexapod 2012
24/31
22
Figure 23: Force Sensor Indicator Schematics
The main purpose of the touch sensors in current design is to keep legs touching obstacles from
tipping over the robot. By ignoring all vertical (Z) servo movements that are below the obstaclewhen the touch sensor is activated, the robot stays in the correct stance. The LEDs wereextremely useful for finding errors in the implementation.
5.1.9 Avoiding Walking Over Cliffs
When in low mode, the front ultrasonic sensor should never sense a distance of greater than15cm. If a distance of greater than 15cm is detected, it is recognized as a cliff and the robot isprogrammed to walk backwards and turn slightly to one direction.
-
7/31/2019 UVic Hexapod 2012
25/31
23
6 Test Results and Problems Encountered
6.1 Inverse Kinematics Testing
Figure 24: Actual Leg Position
Figure 25: Modelled Leg Position
The result of the Inverse Kinematics Calculation is compared with the AutoCAD model as
shown in Figure 24 and Figure 25. The actual leg position is close to the 2D model. We are
satisfied with the calculation results. The servo joints on the left side is directly opposite from the
right side. When placing the left side servo joint at 0 degrees, the right side joints to set the
joints at 180 degrees in order to match the left side. There were offsets between leg joints on
the right side. The right side servo joints rotate over 180 degrees. Since the servos we used are
not digital servo motors, we cannot calibrate the servo position internally. The only way to get rid
of the offset is manually adjust the servo horn positions to eliminate the offset.
-
7/31/2019 UVic Hexapod 2012
26/31
24
6.2 Ultrasonic Sensors
Ultrasonic sensors proved to be more accurate than the infrared sensors in range detection.
When a flat surfaced obstacle is placed directly in front of the sensor, the sensor is able to
return accurate readings. But when a flat surface obstacle is placed at an angle, the sensor will
return false readings, and the angled surface bounces off the ultrasonic pulse so it takes longer
to return back to the receiver. Therefore the reading becomes inaccurate. To acquire accurate
data, we decide to rotate the ultrasonic sensor horizontally and scan the front area. During the
scanning, we will take 6 readings from the ultrasonic sensor. The reading which returns the
shortest distance to the obstacle is determined to be the accurate reading.
6.3 Infrared Sensors
The infrared sensors are very sensitive to the surrounding lights. We tested the infrared sensor
on different surface materials and concluded that the infrared cannot detect black surfaces and
the detection is not accurate when obstacles do not have flat surfaces. The infrared sensor is
also taking interference from other infrared readings. The sensor on the left side could receive
the reflected infrared beam sent from the right side, and causing both sensors to detect
obstacles at the same time. In order for the robot to turn left or right, only one sensor is
supposed to detect obstacles. If both sensors are mistakenly detecting obstacles at the same
time, hexapod will walk backwards. We placed a divider between the sensors to eliminate the
interference, but the both sensors still experience inaccurate readings. In a bright light
environment the infrared sensors appear to be more accurate than in low light environment.
6.4 Force Sensors
The force sensor functions as an infinite resistor when no force is applied. The FSR sensor
becomes finite resistive when forces are applied to the sensor pad. The resistance is linear to
the amount of forces applied. The sensor worked very well at the beginning of the experiment.
After several weeks of testing, we noticed the sensor pads started wearing out. The response
time of the sensors begin to decrease and eventually stopped working. The sensor is crucial to
detect the landing position of each leg when walking over obstacles. Without the force sensors,
we cannot make the leg stop if it steps on an obstacle. We should select a more durable sensor
instead. Our group then decided to mount touch buttons on the bottom of each leg to act as
touch sensors. This touch sensor is used as a temporary solution for walking over obstacles.
This effectively changed our analog inputs to digital binary ones.
-
7/31/2019 UVic Hexapod 2012
27/31
25
Figure 26: Resistance vs. Force
6.5 Power Supply
When all servos are running simultaneously, the robot will draw over 10A of current. The testbench power supply provided is not able to provide more than 6A of supply current. A
workaround was to only use half of the servos to complete stand up movement. When using
batteries to power the robot, two battery packs are included to supply power to the servos. Each
battery pack is sufficient to handle half of the servo motor loads. The Li-Po battery is rated at
7.4V and the servo motor is operating between 5V to 6V. A voltage regulator is used to step
down each battery pack to 6V in order to power servo motor safely and without damaging the
servo motors.
6.6 Analog Ports
The Arduino Uno Controller does not supply enough analog ports. The force sensors require 6analog ports and the obstacle detection sensors require analog ports as well. The Arduino Uno
can only provide 6 analog ports. This is not enough for our project requirements.
Two methods were proposed to expand the I/O ports. One method is to use a multiplexer chip
to generate analog ports by using 4 digital ports and 1 analog port. The problem with this design
is the generated analog ports cannot receive data simultaneously. This will create an
undetermined delay for the programming board to receive data to all analog ports. The second
option is to use I2C communication between programming boards. This would require an
additional programming board assigned as a slave to send analog feedback signals back to the
Master Arduino board.
The final solution was to replace the Arduino Uno with the Arduino ADK. The Arduino ADK isbased on the ATmega2560 and provides 16 analog ports. This is enough for our projectrequirements.
-
7/31/2019 UVic Hexapod 2012
28/31
26
6.7 Climbing over Obstacles
Our group programmed the hexapod to be walking in tripod gait. This walking method allowed
the hexapod to walk faster than the wave gait. When the robot detect obstacles and decide to
climb over the obstacle, it will rise up its body and walk over the obstacles. We tested the
hexapod to climb over obstacles and concluded that tripod gait does not work well when the
hexapod body is raised up. With tripod gait, there are only three legs on the ground to support
the body of the hexapod. Due to the heavy construction of its body, the hexapod failed to climb
over the obstacles and collapsed on the ground. The hexapod should use wave gait to climb
over obstacles which move only one leg at time. There will always be five legs on the ground
supporting the body. The wave gait walking method was not created due to time restraints but
would be something worth adding in the future.
-
7/31/2019 UVic Hexapod 2012
29/31
27
7 Future Development and RecommendationsCurrently, the hexapod only walks with tripod gait. It is our recommendation to include a wave
gait walking method in the program. The hexapod should be able to distinguish even and
uneven terrain. On even terrain, it should use tripod gait for walking and on uneven terrain, it
should use wave gait. More testing on the infrared sensor is needed to find out the accuraterange of the infrared sensors and prevent interferences for other sources. Alternately, the
infrared sensor can be replaced by ultrasonic sensor because we found this type of sensor is
more reliable over infrared sensors.
Additionally, it has come to our attention that the servo motors need to provide more torque to
support the hexapod chassis. The current servo motor has 10Kgcm of torque and it is
recommended to increase the torque to 30kgcm. The 30kgcm servos will draw more current
than the previous servos. The battery packs will need to be able to supply 20A of continuous
current in order for those servos to operate properly.
When the hexapod is climbing over obstacles, the front body is tilting upwards. A gyro sensor
can be installed on to the hexapod to determine the tilting levels and maintain a balanced body
position.
The Arduino Mega ADK board is able to interface with Android phones. The hexapod can be
controlled from an android phone or from a laptop via Bluetooth or Wi-Fi. The hexapod is
designed to walk on rough terrain and it can be used as a SARbot (Search and Rescue Robot),
remote technical repair bot, and mobile military vehicle. A higher level of obstacle detection can
be developed using camera instead of infrared sensors. This will require high level of image
processing to detect obstacle and faster microcontroller to reduce image processing time.
-
7/31/2019 UVic Hexapod 2012
30/31
28
8 ConclusionsOur team has built an autonomous 6 legged robotics walker (Hexapod Robot). The robot is
used to study and simulate the walking motion of a 6 legged insect. The hexapod robot consists
of 6 legs with 4 degrees of freedom on each leg to allow for better mobility and exceptional
range of movement. To achieve autonomous functionalities, we used infrared sensors andultrasonic sensors for range detection and utilized touch sensors for close obstacle detection.
The inverse kinematics calculations were derived to find the angles of each leg joint. A 2D
AutoCAD model was created to compare the results with the inverse kinematics calculation. The
leg position was measured to match the 2D AutoCAD model and the inverse kinematics system
proved to be successful.
The hexapod was tested to be able to avoid head-on obstacles by constantly scanning the front
area using infrared sensors. The hexapod was able to lift up its body and scan the height of the
obstacle to determine if it was able to climb over the obstacle or not. The tripod gait walking
method works great on even terrain. Unfortunately, the robot was having trouble climbing over
obstacles due to instability when in high mode and underrated servo torques.
The force sensors did not perform well and stopped working due to long term usage.
Overall, the hexapod has achieved its main objective to autonomously walk and differentiate the
size of obstacles to either avoid or climb over. For that reason, this project has been deemed a
success.
-
7/31/2019 UVic Hexapod 2012
31/31
9 Works Cited
[1] Meriam-Webster Inc., "Robot - Deffinition and more from the free Merriam-Webster
Dictionary," 2012. [Online]. Available: http://mw1.merriam-webster.com/dictionary/robot.
[Accessed 20 March 2012].[2] RaBoe/Wikipedia, "Bundeswehr Manipulator," 24 March 2012. [Online]. Available:
http://commons.wikimedia.org/wiki/File:Bundeswehr_manipulator_04.jpg. [Accessed 3 April
2012].
[3] PROSPECTOR, "Robot Gossip: Jumping Robot Leg," 13 September 2006. [Online].
Available: http://robotgossip.blogspot.ca/2006/09/jumping-robot-leg.html. [Accessed 4 April
2012].
[4] Wikimedia Foundation Inc., "ASIMO," 28 March 2012. [Online]. Available:
http://en.wikipedia.org/wiki/ASIMO. [Accessed 4 April 2012].