Download as pdf or txt
Download as pdf or txt
You are on page 1of 50

INDIANA UNIVERSITY-PURDUE UNIVERSITY FORT WAYNE

Semi-Autonomous
Wireless Controlled Robot
Capstone Senior Design Project
Group Members
Tam Nguyen
Josh Slonaker
Mohammed Kadous

5/3/2012
Contents
Acknowledgement ........................................................................................................................................ 3
Abstract ......................................................................................................................................................... 4
Requirements and Specifications.................................................................................................................. 5
Design Variables ........................................................................................................................................ 5
Limitations and Constraints ...................................................................................................................... 6
Additional Consideration .......................................................................................................................... 6
Original Design .............................................................................................................................................. 7
Figure 1 - Original Robot Block Diagram ............................................................................................... 7
Hardware ...................................................................................................................................................... 8
Microcontroller ......................................................................................................................................... 9
Figure 2 - Arduino Uno Development Board and Programming Environment ..................................... 9
Figure 3 - Microcontroller Connections .............................................................................................. 10
Range Sensors ......................................................................................................................................... 11
Figure 4 - SRF04 Timing Diagram ........................................................................................................ 11
Figure 5 - The Forward Facing Ultra-Sonic Range Sensors.................................................................. 12
Servos and Camera Mounting System .................................................................................................... 13
Figure 6 - Camera Mounting System................................................................................................... 13
Voltage Regulator ................................................................................................................................... 14
Figure 7 - Voltage Regulator ............................................................................................................... 14
Temperature and Humidity Sensor......................................................................................................... 15
Figure 8 - Communication Bus Between DHT11 and MCU ................................................................. 16
Figure 9 - Temperature/Humidy Sensor Program Flowchart ............................................................. 16
Software ...................................................................................................................................................... 17
Microcontroller Program ........................................................................................................................ 18
Figure 10 - Microcontroller Program Flowchart ................................................................................. 19
Figure 11 - Robot's Microcontroller Communication Program Flowchart ......................................... 20
GPS Program ........................................................................................................................................... 21
Figure 12 - Example GPS Message Strings .......................................................................................... 21
Figure 13 - GPS Program Flowchart .................................................................................................... 22
Sending Xbox Commands........................................................................................................................ 23
Figure 14 - Format of Command String Sent to Robot ....................................................................... 23

1|Page
Obstacle detection .................................................................................................................................. 23
Auto-Navigation program ....................................................................................................................... 23
Acquires Instructions .............................................................................................................................. 24
Figure 15 - 'Coords.txt' file on the Base Station.................................................................................. 24
Direction Decision ................................................................................................................................... 25
Equation 1 – Formula to Calculate Angle Relative to North from Robot to Target ............................ 25
Figure 16 - Direction Decision to Face the Target ............................................................................... 25
Position Decisions ................................................................................................................................... 26
Equation 2 - Haversine Formula.......................................................................................................... 26
Auto Navigation ...................................................................................................................................... 27
Figure 17 - Navigation Program Flowchart ......................................................................................... 28
Start Up Procedures .................................................................................................................................... 29
Robot Setup ............................................................................................................................................ 30
Base Station Setup .................................................................................................................................. 30
Connect the base station computer to the router ................................................................................. 30
Configure the base station’s IP address on the robot ............................................................................ 30
Configure the robot’s IP address on the base station ............................................................................ 31
Run the Xbox application ........................................................................................................................ 31
Configure the “Coords.txt” file ............................................................................................................... 31
Run AutoNavigation application ............................................................................................................. 31
Charging the battery ............................................................................................................................... 32
Testing and Recommendations .................................................................................................................. 33
Testing ..................................................................................................................................................... 34
Figure 18 - Final Robot ........................................................................................................................ 35
Recommendations .................................................................................................................................. 36
Appendix ..................................................................................................................................................... 37
Arduino UNO – ATMega328.................................................................................................................... 38
SRF04 Range Sensors .............................................................................................................................. 40
Hitec HS-485HB ....................................................................................................................................... 41
SPT100 Direct Pan and Tilt System ......................................................................................................... 42
Pololu D15V35F5S3 ................................................................................................................................. 43
DFRobot DHT11 Temperature and Humidity Sensor .............................................................................. 44

2|Page
Acknowledgement

This project would not have been possible without the support of many people. Special thanks to Dr.
Elizabeth Thompson for being our project advisor and helping us with everything we need especially
keeping us in touch with the previous design team. Thanks to Dr. James Isaacs who was abundantly
helpful and offered invaluable assistance, support, and guidance. We would also like to convey thanks to
members of previous senior design team Ryan Kingsley and Justin Hagan for providing helpful
knowledge and assistance on this project.

3|Page
Abstract

Robots are a staple in modern society. Their applications are far reaching and can encompass a variety
of different missions. They are used in the manufacturing industry to perform repetitive or difficult
tasks, in the military to travel and operate in dangerous areas, and in the medical industry to assist in
procedures. There are a multitude of different situations where the use of a robot is a necessity, such as
traveling in hazardous conditions where a human would be incapable of surviving or performing jobs
that a human is unable to achieve without assistance. These robots can be either operated through the
use of a remote system, or can be completely autonomous, capable of operating without any user input
to accomplish a set of tasks. The advantage of an autonomous robot is that it doesn’t need to be
constantly monitored and controlled by a human operator, which allows people to complete multiple
tasks simultaneously. The main goal of this project is to add a degree of autonomy to an already
functioning user controlled robot.

In order for a robot to be autonomous, it must be able to sense its surroundings and act accordingly to
any obstruction preventing it from accomplishing its task. This robot comes equipped with ultra-sonic
proximity range sensors that are able to detect objects in its path. These sensors must be properly
interfaced with the robot’s computer in order to be able to function properly. It is also equipped with a
GPS device which will be used to determine the robot’s position and navigate it to a designated area.

4|Page
Requirements and Specifications

Sensors – The robot must have a way to determine if any obstructions are in its path and be able
to navigate around them. Ultra-sonic range sensors are installed on the platform, but they are
not yet operational.
Autonomy – The robot must be able to use to installed GPS system in order to navigate to
specified coordinates without user control.
Camera – The camera installed on the robot needs to be able to be controlled by the user to pan
and tilt in order for the operator to gather visual data on the environment.
Bugs – The previous design team encountered bugs in the coding that resulted in unreliable
performance. These problems in the code must be found and corrected.

Design Variables

Hardware
Servos – The servos used to pan and tilt the camera must be able to move the camera
easily and can be interfaced with the robot’s onboard computer.
Sensors – Various sensors which are able to gather data from the robot’s position must
be chosen so that they can be connected to the computer, while being small and light
enough to maintain the robot’s portability. They must also fit into the constraints of the
project’s budget.

Software

Autonomy – In order for the robot to be able to navigate on its own, a program needs to
be written such that it can arrive at a designated coordinate without hitting any
obstructions. This involves using the robot’s GPS system and its ultra-sonic range
sensors. The robot must be able to navigate within 10 meters of a designated
coordinate.
Servo control – With the camera mounted on servos, a way of allowing a user to control
its motion with the controller needs to be developed.

5|Page
Limitations and Constraints

In order to organize the project more effectively the following constrains will set as a framework for the
cost, time, power consumption, and accuracy.

Power consumption – Since the system requires battery to operate, power consumption will
need to be optimized.
Cost – Each group is subjected to limited funding, therefore, the design has to be within
determined budget.
Time – Students only have until the end of the second semester to finish the design. Therefore
planning, designing, building and implementation on the robot must be done in a timely
manner.
Accuracy – Data errors must be eliminated or minimized as much as possible.

Additional Consideration
Design factors that need to take into consideration include safety, reliability, and mobility.

Safety – Consideration for overall safety must be taken into account in order to reduce potential
injuries. Hazardous material must be minimized.
Reliability - Since communication between the robot and the controller is wireless, robot must
perform commands effectively.
Mobility – The new design must allow the robot to be manipulatable.

6|Page
Original Design
The original design consisted of the robot base, a Garmin GPS 60CSx, a Sabertooth motor driver
featuring regenerative drive, and two 12V lead acid batteries for power. The motor driver is controlled
by a FT232RL USB to serial breakout board. The camera is an AXIS M1101 network camera with a
resolution of 640x480 and capable of recording up to 30fps. The computer is an ARK-6310 with the
openSUSE Linux operating system. Commands and data are sent wirelessly using an ASUS RT-N16
wireless N router. An Xbox controller is used to control the direction of the robot. The overall design is
shown inFigure 1.

Figure 1 - Original Robot Block Diagram

7|Page
Hardware
Microcontroller
The robot uses an Arduino Uno with an ATMega328 microcontroller development board. This
microcontroller is used to control the position of the two camera servos, take readings from the
onboard sensors, and send these readings back to the robot’s computer via USB. It is programmed
using the open-source Arduino environment. The code is written in C++. The board and the
development software are shown in Figure 2

The microcontroller operates at 5V and is powered by a recommend input of 7-12V or USB. The design
for this project makes use of the USB powering scheme as this also allows the robot’s computer to use
the USB transmit and receive lines in addition to providing power. It has 14 digital I/O pins and 6 analog
input pins. Six of the digital pins can be used as PWM output. Each of these pins is capable of sourcing
up to 40mA each. Of these, 7 digital pins are used in the design: one for each of the two camera servos,
two for each of the two range sensors, and one for the temperature/humidity sensor. It operates at
16Mhz using a crystal oscillator. The microcontroller has 32kB of available flash memory for storing the
program. The final layout of the board is shown in Figure 3

In order to communicate with the computer, the development board makes use of an ATMega8U2
microcontroller programmed as a USB to serial converter. This allows the user to simply plug the board
into a computer using a standard USB Type A to Type B cable.

Figure 2 - Arduino Uno Development Board and Programming Environment


Figure 3 - Microcontroller Connections

10 | P a g e
Range Sensors
The robot uses the two SRF04 ultra sonic range sensors that were already installed by the previous
design team, but they were unable to get them functioning. They have an approximate range of 3 to
300 cm. These sensors require a 5V input voltage and draw 30mA typically but up to 50mA maximum.
They operate by sending a 10 µs high pulse to the trigger pin and then resetting the trigger pin to low (0
V). The device sets the echo pin to low then sends out a 40 kHz tone and waits for the signal to bounce
back or the device to time out which occurs after approximately 36 ms. Once an object is detected or
the device times out, the sensor sets the echo pin to low. The distance can then be calculated by
measuring the time it takes for the device to set the trigger pin to low. The timing diagram for the
sensor is shown inFigure 4. The attached devices are shown in Figure 5

Figure 4 - SRF04 Timing Diagram

11 | P a g e
Figure 5 - The Forward Facing Ultra-Sonic Range Sensors

12 | P a g e
Servos and Camera Mounting System
In order to add pan and tilt capabilities to the robot, the camera was mounted onto a SPT100 Direct Pan
and Tilt System. The SPT100 Pan and Tilt System is capable of supporting cameras up to 0.23 kg and can
be mounted both upright and upside down. Any standard sized servos are capable of controlling the
device. The recommend HS-485HB servos were chosen in order to fill this role.

The two servos can operate at 4.8 – 6.0 V. The specifications of the devices change based on the input
voltage. The operating speed is 0.22 – 0.18 sec/60° rotation. They consume between 8-8.8 mA during
idle and between 150-180 mA under no load operation. They have a stall torque between 4.8 – 6.0
kg•cm.

The two servos are screwed into the SPT100. The entire system is then mounted by using 4 6-32
threaded rods. These rods are long enough such that the camera is able to clear the GPS receiver which
is mounted adjacent to the camera. The system provides 180° pan capabilities and 90° tilt capabilities
from straight ahead to straight up. The system is shown in Figure 6.

Figure 6 - Camera Mounting System

13 | P a g e
Voltage Regulator
With the addition of the range sensors, the two servos, and the temperature sensor, a 5 V supply was
needed. The previous robot design contained a 5 V DC regulator in order to provide power to the
network camera. However, research on the device yielded no information about its characteristics. A
new voltage regulator was purchased whose specifications were known.

The Pololu D15V35F5S3 buck converter was chosen for this purpose. This board uses a switching
regulator to convert the voltage and is 90% efficient. It is capable of taking an input voltage of between
4.5 and 24 V and providing a 5 V or 3.3 V output by connecting the 3V3 SEL pins. It can deliver up to 3.5
A without any heat sinking which is more than enough for the current design’s requirement of 1.7 A
under worse case conditions. The board has under voltage and short-circuit protection in addition to a
thermal shutdown to prevent overheating and reverse-voltage protection. The connected board is
shown in Figure 7.

Figure 7 - Voltage Regulator

14 | P a g e
Temperature and Humidity Sensor
DHT11 Temperature & Humidity Sensor features a temperature and humidity sensor complex with a
calibrated digital signal output. DHT11 measures temperatures between 0°C and +90°C (with an error of
±2 °C) as well as humidity from 20% to 90% with + 5 % RH. The temperature and humidity sensor with
signal conditioning, ADC, calibration and communication interface all built inside it greatly simplifies the
design and reduces the overall cost. It uses the exclusive digital-signal-acquisition technique for
temperature & humidity sensing technology. This sensor includes a resistive-type humidity
measurement component and an NTC temperature measurement component, and connects to an 8-bit
microcontroller.

The calibration coefficients are stored as programmed in the OTP memory, which are used by the
sensor’s internal signal detecting process. The single-wire serial interface makes system integration
quick and easy. It has low power consumption and can transmit signal up to 20 meters. The component
is 4-pin single row pin package.

DHT11’s power supply is 3-5.5V DC. When power is supplied to the sensor, no instruction can be sent to
the sensor within a second in order to pass the unstable status. A 100 nF capacitor could be added
between VDD and GND for power filtering.

The communication type used in DHT11 is a single-bus data format for communication and
synchronization between MCU and DHT11 sensor. The single communication method process is about
4ms.

From Figure 8, pin number 3 – Null; MCU = Micro-computer Unite or single chip Computer When the
connecting cable is shorter than 20 meters, a 5K pull-up resistor is recommended; when the connecting
cable is longer than 20 meters, appropriate to pull-up resistor is to be chosen as needed.

The data consists of decimal and digital parts. A complete data transmission takes 40bit with higher
priority for higher data. That means the sensor sends the higher data bit first.

Data format: 8bit integral RH data + 8bit decimal RH data + 8bit integral T data + 8bit decimal T data +
8bit check sum. The check- sum should be the last 8bits of : 8bit integral RH data + 8bit decimal RH data
+ 8bit integral T data + 8bit decimal T data.

When MCU sends a start signal, DHT11 changes from low-power-consumption mode to the running-
mode, waiting for the MCU comparing the start signal. Once it is completed, DHT11 sends 40-bit data
that include the relative humidity and temperature information to MCU. Once data is collected, DHT11
will not give the response signal to MCU. Once data is collected, DHT11 will change to the low-power-
consumption mode until it receives a start signal from MCU again. The flowchart for this program is
shown in Figure 9.

15 | P a g e
Figure 8 - Communication Bus Between DHT11 and MCU

Figure 9 - Temperature/Humidy Sensor Program Flowchart

16 | P a g e
Software
Microcontroller Program
The microcontroller is divided into two parts: The code on the microcontroller itself and the code on the
robot’s computer which both sends and receives data from the board via USB. The code on the robot
computer sends the servo position data to the microcontroller and receives the sensor data containing
the range sensor readings. The code on the microcontroller controls the position of the two servos
using pulse width modulation based on the data sent from the robot. It also triggers both range sensors
and converts the sensor readings into the distance from the detected object.

The microcontroller code begins by setting the baud rate to 9600, attaching the two servo objects to
their specified pins, and configuring the I/O pins for the sensors. The two servos are then sent their
default position data set for straight ahead. This startup procedure occurs every time the device is
powered on. After power up, the microcontroller then checks the serial buffer for the two byte array
containing the servo position data sent from the robot. If it has received this array, it then sets the
servos to their appropriate positions then flushes the serial buffer. If the buffer does not contain any
data, the microcontroller then triggers each of the range sensors and waits for their readings. The two
sensors are triggered subsequently in order to prevent one sensor from reading the other’s ping. This
procedure is shown in Figure 10.

On the robot, another program was created to send and receive data from the microcontroller. It
begins by creating a serial port object with the location of the ATMega328’s port (/dev/ttyACM0) and
sets the communication baud rate to 9600. In order to send data to the microcontroller, it must be
converted into a byte array. This byte array has a length of two, one byte for the pan servo position and
another byte for the tilt servo position. If this conversion is unsuccessful, due to an error in transmission
or any other reason, the program creates a default position byte array which tells the microcontroller to
set the servos to their straight ahead position. The program then begins reading in data via the USB
connection. It reads one line at a time and first checks the tag of the data to differentiate between the
two range sensor readings. The received strings are then converted into integers in order to be able to
be used by other subroutines. This program operates in its own thread so it is able to continually
transmit and receive data in near real-time. This procedure is shown inFigure 11.
Start

Setup:
Set baud rate to
9600
Attach Servos
Set default position
to servos
Configure I/O Pins

Begin right sensor


Is serial data Separate the two
ranging and send No Yes
available? received bytes
value to computer

Begin left sensor


Map the values to
ranging and send
servo control
values

Send servo position


data to servos

Figure 10 - Microcontroller Program Flowchart

19 | P a g e
Configure Arduino
port
/dev/ttyACM0
9600 baud
Open port

Convert Xbox data


into byte array

Send byte array to Is conversion Create default


Yes No
microcontroller successful? position byte array

Send default
position array to
microcontroller

Read data sent from


microcontroller

Does data Does data


No No
contain “l”? contain “r”?

Yes Yes

Remove tag
Remove tag
Assign distance
Assign distance
variable to
value to leftrange
rightrange
Convert to integer
Convert to Integer

Figure 11 - Robot's Microcontroller Communication Program Flowchart

20 | P a g e
GPS Program
The GPS and compass data is received from the Garmin GPS 60CSx via an RS232 interface. The GPS
receiver transmits its data in strings according to the NMEA 0183 standard which has a baud rate of
4800, 8 data bits, zero parity bits, and one stop bit. Each of the messages from the receiver has a
different tag which represents the different information contained within that message. The tags of
interest to this project are $GPGLL, which contains the latitude and longitude coordinates, and $HCHDG,
which contains the compass heading. This is shown in Figure 12.

The program begins by creating a serial port object with the location of the GPS port (/dev/ttyS0) and a
baud rate of 4800. It then begins to read in the data one message at a time. The program searches for
the appropriate tags for the needed information. If the read in string contains one of those tags, it splits
the string into a string array. The information is then extracted by referring to the correct index in the
newly formed array. The string is then converted into a double in order for other classes to use it. This
program runs in its own thread so that it can continually monitor and update the data. This procedure is
shown in Figure 13.

Figure 12 - Example GPS Message Strings

21 | P a g e
Configure GPS port
/dev/ttyS0
4800 baud
Open Port

Read in data

Split ‘,’ delimited Does data


string to a string Yes contain
array “$GPGLL”?

No

Assign index 1 of
Does data Split ‘,’ delimited
string array to
contain Yes string into string
Latitude and convert
“$HCHDG”? array
to double

No
Assign index 3 of Assign index 1 of
array to Longitude array to Compass
and convert to and convert to
double double

Figure 13 - GPS Program Flowchart

22 | P a g e
Sending Xbox Commands
This program sends Xbox commands from the base-station to the robot to pan and tilt the camera. The
commands consist of three different components. The first component contains the Xbox’s Dpad
command which is used to control the robot movement, followed by the pan data, and finally the tilt
data to pan and tilt the camera on the robot. The format of the command string is shown in Figure 14.

Button, pan, tilt


Figure 14 - Format of Command String Sent to Robot

When the robot receive the command string, it will separate the string into three different parts and call
the function check() which will process the ‘button’ string and use it to control the robot movement. The
remaining data, ‘pan’ and ‘tilt’ string will be processed separately to output values to the Ardunio board
to control the camera servos.

Obstacle detection
This program checks the range sensors for any objects that are blocking the robot movement. The robot
then carries out necessary actions to get around the object. Two SRF04 ultrasonic range sensors are
mounted in front of the robot to detect obstacles. Readings obtained from the sensors indicate the
distance of the obstacle away from the robot and if the distance returned from the microcontroller falls
below certain value, the robot will call a class in the Auto-navigation program to instruct the robot to get
around the object.

Auto-Navigation program
The Auto-Navigation program is used to autonomously navigate the robot to different targets. The three
main components of this program are: Acquires/Performs instruction, Direction decision, and Position
decision. The program first establishes the connection between the robot and the base-station to obtain
the file that contains information of different targets from the base-station. It then begins its navigation
by determining which direction it’s heading, then turning to the appropriate direction before moving
toward the target for a short distance. Direction and position decision are repeated indefinitely until the
robot arrives at the target.

23 | P a g e
Acquires Instructions
The Acquire Instructions program enables the robot to receive data from the base-station and act
accordingly. The data consists of different pre-defined targets that the robot is assigned to arrive at. The
“Coords.txt” file on the base-station contains the coordinates of the targets. When the button “X” on
the Xbox controller is pressed, the base-station sends the “Coords.txt” file to the robot. Once the robot
receives the data, the robot can enter the Autonomous Mode to navigate to targets by pressing “A” on
the Xbox controller. The “Coords.txt” file on the robot can be updated anytime by pressing “X” on the
Xbox controller.

Instructions are performed line by line. Each line in the “Coords.txt” file contains the information about
a specific target. In the first line, the first value represents the latitude and the second value represents
the longitude of the first target. Once the robot arrives at the first target, it will perform the next
instruction which is the second line in the “Coords.txt” file which contains the second target’s
coordinates. The robot will continue to get through every line until the last instruction is finished. The
“Coords.txt” file is shown in Figure 15.

Figure 15 - 'Coords.txt' file on the Base Station

24 | P a g e
Direction Decision
The first step toward getting to the target is to have the robot facing the direction of the target. It uses
the “get GPS readings” program to obtain the value of the compass reading then compares the value to
the calculated bearing angle. Next, the robot will rotated clockwise (CW) or counter clockwise (CCW)
depending on the bearing angle until the compass reading matches the bearing angle which indicates
that the robot is heading the right direction and it’s ready to move forward. The equation to calculate
the bearing angle is shown in Equation 1.

Equation 1 – Formula to Calculate Angle Relative to North from Robot to Target

In Figure 16, the robot is represented in the red square and the target is represented in the red star.
ɸcompass is the direction of the robot relative to north (which is also the compass reading) and ɸ is the
angle relative to north of the robot and the target. As shown in Figure 16, when the ɸcompass is equal to
ɸ, the robot is heading the direction of the target. The Direction Decisions program allows the robot to
decide which direction to turn (CW/CCW) to face the target.

Figure 16 - Direction Decision to Face the Target

25 | P a g e
Position Decisions
Next, the robot will move forward for a short distance. While doing so, it will compute the distance
between its’ current location and the target. Given the robot current coordinates (from the GPS
readings) and the target coordinates (from the “Coords.txt” file), the distance to the target is obtained
by using Haversine Formula as shown in Equation 2 (R is Earth’s radius).

Equation 2 - Haversine Formula

After moving forward for a short distance, if the distance calculated between the robot current location
and the target is above certain value, the robot is not at the target and it has to call Direction Decisions
program again to adjust its heading toward the target. The robot will keep cycling through the Direction
and Position Decision programs until the distance between it and the target is less than 6.5 meters
which indicates that the robot has arrived at the target. Once the robot reaches the target, it will load
the next target from the “Coords.txt” file and go through the same procedure to get to this target until it
reach the last target assigned from the file.

26 | P a g e
Auto Navigation
Figure 17 shows how the Auto-Navigation program works. The robot first obtains its’ current
coordinates from the GPS readings. Next, the robot computes its’ distance away from the target. If the
distance is less than 6.5 meters, the robot will determine that it has arrived at the target. On the other
hand, if the distance is greater than 6.5 meters the robot will get the compass reading from the GPS
then compare the compass reading with the calculated bearing angle. If the angles are matched, the
robot will proceed to the next command to check for obstacles in front of it. If the angles are not
matched, the robot will makes necessary adjustment by rotating clockwise or counter clockwise to face
the target.

Next the robot will check for the reading from the range sensors. If either the left or right range sensor
returns a value less than 100, which indicates that there is an obstacle in front of the robot within 1
meter, the robot will call the Avoid Object program to instruct the robot to get around the object and
move forward for a short distance. If there are no obstacles in front of the robot, it will move forward
for a short distance without turning around an object. Then the robot will return to the beginning of the
Auto-Navigation program, update its’ current coordinate and repeat the entire procedure until it arrived
at the target.

27 | P a g e
Figure 17 - Navigation Program Flowchart

28 | P a g e
Start Up Procedures
Robot Setup
1. Connect robot to keyboard, monitor, and mouse FIRST
2. Turn the power button of the robot’s computer on
3. Click on the Dolphin File Manger icon
4. Click and open the folder “GPS Program3” then “Socket” and click on the file “socket.sln”
5. The backup file “GPS Program3.zip” is in Dolphin File Manager
6. Under the Solution window on the left, open the “app.config” file

Base Station Setup


1. Turn the base-station computer on
2. Plug the Xbox controller to the base-station’s computer
3. Find and open the “SeniorDesign2012” folder on the desktop
4. Next, open the /Testing folder and another /Testing folder
5. Find and open the file “Testing.csproj”
6. Change view mode from “Default” to “Visual Design”
7. Next, open the “Config2.cs” file under the Solution window to the right.

Connect the base station computer to the router

1. Connect the wireless receiver to the base station computer


2. Click on the Wireless Network Connection icon on the botom of the screen
3. Under “Choose a wireless network”, select Kings and connect
4. Passwords to Kings network is zigbee123
5. Next, go to Start>>Run. Then type “cmd” and enter
6. On the command window type “ipconfig” to get the IPAddress of the router
7. The IPAddress of the router is next to “Default Gateway” (ex. 192.168.x.x)
8. Go to a web browser and type in the IPAddress of the router
9. User name and password to the router are: admin/admin
10. In the Network Map, click on the computer icon “Client:x”
11. Under Client Status/ Client List/ are all of the devices that are connected to the router
12. “axis-00408ca2becc”, “linux-1amm” and “etcs-bf16951bf1” are the IPAddress of the camera, the
robot, and base-station respectively
13. “linux-1amm” and “etcs-bf16951bf1” IPAddress are used to configure the robot and base-
station IPAddresses

Configure the base station’s IP address on the robot


1. On the robot, with the “app.config” file open, change the values in between
<IPBase> value </IPBase> to the “etcs-bf16951bf1” IPAddress found in the previous step
2. In other words value= “etcs-bf16951bf1” LAN IP. Ex: <IPBase>192.168.2.4</IPBase>
3. Save the file
Configure the robot’s IP address on the base station
1. On the base-station, with the “Config2.cs” file open, change the values of “IPRobotx” to the
“linux-1amm” IPAddress found in the previous step
2. In other words IPRobotx = “linux-1amm” LAN IP. Ex: IPRobotx = "192.168.2.3"
3. Save the file

Run the Xbox application


1. On the robot, from Monodevelop environment, open “Main.cs” file to make sure that
“AutoNavigation.AutoNav()” is commented out and “xAccept2.AcceptXbox()” is uncommented.
2. Save the file
3. Next, click on the “Run” menu then click on “Run (or Ctrl+F5)”
4. External Console window will open
5. On the base-station, in Microsoft Visual Studio, go to the “Debug” menu then click on “Start
Debugging” or (F5)
6. The MonoDevelope External Console Window on the robot computer should see commands
being executed with controller

Configure the “Coords.txt” file


1. On the robot, go to Dolphin File Manager>>GPS Program3>>socket>>socket
2. Open the file “Coords.txt” which contains the coordinates of the targets
3. Obtain two target coordinates that you want the robot to move to by using the GPS to record
the coordinates of the targets
4. Use the recorded values to replace the values in the “Coords.txt” file
5. Make sure that the distance between the two targets are at least 15 meters apart
6. Save the file. (Note: the program load the file line by line, having a blank line or spaces will
result in an error when the file is loaded)

Run AutoNavigation application


1. On the robot, from Monodevelop environment, open “Main.cs” file to make sure that
“AutoNavigation.AutoNav()” is uncommented and “xAccept2.AcceptXbox()” is commented out.
2. Save the file
3. Go to “Application Launcher” icon on the robot, which is at the bottom left of the screen
4. Click on “Terminal” to open the command window
5. Next, type “su” on the command window. Ex: ittrobot@linux-1amm:~> su
6. Password: ITTRobot (note: case sensitive)
7. To open the USB port (power to the motors) type:
chmod [space] a+rw [space] /dev/ttyUSB0 [zero]

Ex: linux-1amm:/home/ittrobot # chmod a+rw /dev/ttyUSB0

8. To open the Ardunio port (control the servos and get readings from the sensors) type:
chmod [space] a+rw [space] /dev/ttyACM0[zero]

31 | P a g e
Ex: linux-1amm:/home/ittrobot # chmod a+rw /dev/ttyACM0

9. To open the RS232 port (get readings from GPS) type:


chmod [space] a+rw [space] /dev/ttyS0[zero]

Ex: linux-1amm:/home/ittrobot # chmod a+rw /dev/ttyS0

10. Make sure that the GPS has signal and is connected to the robot
11. Next, start the program

Charging the battery


1. Connect battery charger
2. Turn both red switches off and both blue switches on
3. After charge complete turn both blue swtiches off

32 | P a g e
Testing and Recommendations
Testing
Due to the accuracy of ±5 meters on the GPS, the robot is unable to locate the target accurately as the
user would like. As the result, the robot is often stopping at 2 to 3 meters away from the target. The
accuracy of the compass readings as well as the coordinate’s readings has a great impact on the robot’s
auto-navigation performance. Especially when the robot got closer to the target, it has a hard time
deciding which direction to take.

When moving to the target, depending on the terrain, the robot’s vibration will cause the compass to
return inaccurate data. Thus, the robot was programed to stop for about 2 seconds every turn or move
to allow the compass readings to settle down as well as allow additional time for the GPS readings to
update. The level of the area that the robot is operated on also affect the compass readings. Therefore,
the actual compass reading accuracy is about ±15 degrees. It is recommended to test the robot when
the sky is clear and at a level area to ensure the best result.

The robot was programmed to stop when it is less than 6.5 meters away from the target. There are
cases when the robot moved passed the target. This problem occurs due to the compass accuracy that
causes the robot to head the wrong direction which causes it to miss its’ target. To solve the problem,
the robot was programed to keep track of the distance between it and the target to ensure that this
distance is decreasing. The robot will stop and jump to the next target as soon as the newest calculated
distance is greater than the previously calculated distance. The increasing in distance indicates that the
robot is not less than 6.5 meters away from the target but close enough to be considered that it has
arrived at the target. The final robot design is shown in Figure 18.
Figure 18 - Final Robot

35 | P a g e
Recommendations

1. Battery replacement: The batteries, particularly the one connected to the motors, have a
relatively short life and will need to be replaced.
2. Laptop: Need a laptop to use as a base station in order to communicate with the robot
outdoors.
3. Improved base design: The addition of all terrain wheels and a lower, wider stance will improve
the robot’s terrain capabilities.
4. GPS and compass: Better GPS and compass module to get reading faster and more accurate
5. Improve the AutoNavigation program: Enable the robot to get to the targets faster and more
accurately.

36 | P a g e
Appendix
Arduino UNO – ATMega328

Microcontroller ATMega328
Operating Voltage 5V
Input Voltage (recommended) 7-12 V
Input Voltage (limits) 6-20 V
Digital I/O Pins 14 (6 PWM)
Analog Input Pins 6
DC Current per I/O Pin 40 mA
DC Current for 3.3V Pin 50 mA
Flash Memory 32 kB
SRAM 2 kB
EEPROM 1 kB
Clock Speed 16 MHz
Programming language C++
39 | P a g e
SRF04 Range Sensors

Voltage 5V
Current 30 mA Typical, 50 mA Maximum
Frequency 40 kHz
Maximum range 3m
Minimum range 3 cm
Input trigger 10 µs minimum, TTL level pulse
Echo pulse Positive TTL level signal, proportional to range
Weight 0.4 oz
Sensitivity Detect a 3 cm diameter stick at > 2 m

40 | P a g e
Hitec HS-485HB

Specs 4.8 V 6.0 V


Speed 0.22 s/60° 0.18 s/60°
Stall Torque 4.8 kg/cm 6.0 kg/cm
Dimensions 40 x 20 x 36 mm
Weight 45 g

41 | P a g e
SPT100 Direct Pan and Tilt System

Weight (w/o servos) 42.5 g


Tray Swing 135°
Servos 2 standard size
Maximum Payload weight 362.9 g
Position Hanging, upright, sideways

42 | P a g e
Pololu D15V35F5S3

Minimum operating voltage 4.5 V


Maximum operating voltage 24 V
Maximum output current 4.5 A1
Minimum output voltage 3.3 V
Maximum output voltage 5V
Continuous output current 3.5 A2
Reverse voltage protection? Yes
Maximum quiescent current 25 mA

1
Threshold for over-current protection. Output current is also limited by thermal dissipation.
2
Typical. Actual continuous output current limited by thermal dissipation.

43 | P a g e
DFRobot DHT11 Temperature and Humidity Sensor

44 | P a g e
45 | P a g e
46 | P a g e
47 | P a g e
Technical Specifications:

Item Measureme Humidity Temperature Resolution Package


nt Range Accuracy Accuracy
DHT11 20-90%RH ±5%RH ±2℃ 1 4 Pin Single
0-50 ℃ Row

Power and Pin


DHT11’s power supply is 3-5.5V DC. When power is supplied to the sensor, do not send any
instruction to the sensor in within one second in order to pass the unstable status. One capacitor valued
100nF can be added between VDD and GND for power filtering.

48 | P a g e
49 | P a g e

You might also like