Professional Documents
Culture Documents
Of
BACHELOR OF ENGINEERING
By
Mohammed Saifuddin 160313739007
Alauddin 160313739014
Syed Hammad Rasheed Quadri 160313739015
1
CERTIFICATE
This is to certify that the dissertation work, “Robotic Arm
Using C++” is work done by
(External Examiner)
2
ACKNOWLEGEMENT
We are beholden to Mr. Kamel Ali Khan Siddiqui, Associate Professor, EIE,
Deccan College of Engineering and Technology, Osmania University, our
guide for assisting us in exigent task. His perpetual supervision and vital
suggestions during the perplexing stages of the project has made this
arduous task, an accomplishment. Without the aid and motivation this
would not have been attainable.
We also want to convey our gratitude to our project coordinator Mr. GULAM
AMER, H.O.D., EIE, Deccan College of Engineering and Technology,
Osmania University, whose support and recommendations have assisted us
at this project.
We will continue our thanks to both Teaching Faculty & the Non-
Teaching Faculty for their help as they provisioned us for all the
necessities for this project.
We are thankful to Our Friends for their aspiring guidance, invaluably
constructive criticism and friendly advice during the project work. We are
sincerely grateful to them for sharing their truthful and illuminating views
on a number of issues related to the project.
We would like to thank ALMIGHTY ALLAH and Our Parents for their love,
care and support which we would not have been able to complete the
project.
Mohammed Saifuddin
Alauddin
Syed Hammad Rasheed Quadri
3
ABSTRACT
Mankind has always strived to give life like qualities to its artifacts in an
attempt to find substitutes for himself to carry out his orders and also to
work in a hostile environment. The popular concept of a robot is of a
machine that looks and works like a human being.
Here how a pick and place robot can be designed for a workstation where
loading and packing of lead batteries is been presented. All the various
problems and obstructions for the loading process has been deeply analyzed
and been taken into consideration while designing the pick and place robot.
4
INDEX
1. CHAPTER 1…………………………..…INTRODUCTION 9
3. CHAPTER 3……………………………..METHODOLOGY 15
3.1 WHAT IS AND WHAT NOT IS A ROBOT? 15
3.2 COMPONENTS OF ROBOT 24
3.3 FACTORS TO BE CONSIDERED 34
3.3.1 CONTROLS 34
3.3.2 AUTONOMY LEVELS 35
3.3.3 BASIC METHODS OF PROGRAMMING 36
ROBOTS 36
3.3.3A TEACH METHOD 38
3.3.3B LEAD THROUGH 38
3.3.3C OFF-LINE PROGRAMMING 38
3.3.3D PROGRAMMING USING ROBOT LOADER 42
VIA UART CONNECTOR 43
3.3.4 STARTING THE ROBOT 55
3.3.5 PROGRAMMING LANGUAGES 62
3.4 KAREL 63
3.4.1 VISUAL LANGUAGE 64
3.4.2 SCRIPTING LANGUAGE 64
3.4.3 PARALLEL LANGUAGE 65
3.4.4 MATLABS 66
3.4.5 C LANGUAGE 67
3.4.6 C++ LANGUAGE 67
3.4.7 VISUAL BASIC .NET 72
3.5 SFETY REQUIREMENTS 74
3.6 SELECTION OF PRODUCT 75
3.7 DESIGNING OF WORK SPACE 75
3.8 DEGREE OF FREEDOM 78
3.9 SELECTION OF PARTS 78
3.10 COMPLETION OF MODEL 78
3.11 PROGRAMMING 85
3.12 INTERFACING WITH THE COMPUTER
5
4. CHAPTER 4…………………………………………. SCOPE 86
4.1 INDUSTRIAL ROBOTS 86
4.2 MOBILE ROBOTS 93
4.3 AGRICULTURE ROBOTS. 97
4.4 TYPES OF ROBOTS AS PER APPLICATIONS 100
4.5 SERVICE ROBOTS 106
4.6 TYPES OF ROBOTS BY LOCOMOTION & 108
KINEMATICS 115
4.6.1 CARTESIAN ROBOT/GANTRY ROBOT 115
4.6.2 CYLINDRICAL ROBOT 116
4.6.3 SPHERICAL/POLAR ROBOT 116
4.6.4 SCARA ROBOT 117
4.6.5 ARTICULATED ROBOT 117
4.6.6 PARALLEL ROBOT
6
LIST OF FIGURES & TABLES
FIGURES
1.1 KEY COMPONENTS OF ROBOTS.
1.3 ACTUATORS.
1.4 SENSORS.
1.5 GRIPPER
2.2 TELE-ROBOT.
2.4 SPACE.
7
3.1 PICK & PLACE ROBOT.
5.2DEGREE OF FREEDOM.
8
CHAPTER 1
INTRODUCTION
9
INTRODUCTION
In this highly developing society time and man power are critical constrains
for completion of task in large scales. The automation is playing important
role to save human efforts in most of the regular and frequently carried
works. One of the major and most commonly performed works is picking
and placing of jobs from source to destination.
10
The pick and place robot is a microcontroller based mechatronic system
that detects the object, picks that object from source location and places at
desired location. For detection of object, infrared sensors are used which
detect presence of object as the transmitter to receiver path for infrared
sensor is interrupted by placed object.
11
CHAPTER 2
LITERATURE SURVEY
12
Etymology
The word robotics was derived from the word robot, which was introduced to
the public by Czech writer Karel Capek in his play R.U.R. (Rossum's
Universal Robots), which was published in 1920. The word robot comes
from the Slavic word robota, which means labour. The play begins in a
factory that makes artificial people called robots, creatures who can be
mistaken for humans – very similar to the modern ideas of androids. Karel
Capek himself did not coin the word. He wrote a short letter in reference to
an etymology in the Oxford English Dictionary in which he named his
brother Josef Čapek as its actual originator.
According to the Oxford English Dictionary, the word robotics was first used
in print by Isaac Asimov, in his science fiction short story "Liar!", published
in May 1941 in Astounding Science Fiction. Asimov was unaware that he
was coining the term; since the science and technology of electrical devices
is electronics, he assumed robotics already referred to the science and
technology of robots. In some of Asimov's other works, he states that the
first use of the word robotics was in his short story Runaround (Astounding
Science Fiction, March 1942). However, the original publication of "Liar!"
predates that of "Runaround" by ten months, so the former is generally cited
as the word's origin.
13
Arbeit may be descended from a word that meant "slave labor," and later
generalized to just "labor."
14
1. A robot should not injure a human being or, through inaction,
allow a human to be harmed.
3. A robot must protect its own existence unless that conflicts with the
First or Second law.
These are very general laws and apply even to other machines and
appliances. They are always taken care of in any robot design.
Asimov once added a "Zeroth Law"—so named to continue the pattern where
lower-numbered laws supersede the higher-numbered laws—stating that a
robot must not harm humanity. The robotic character R. Daneel Olivaw was
the first to give the Zeroth Law a name in the novel Robots and
Empire; however, the character Susan Calvin articulates the concept in the
short story "The Evitable Conflict".
15
In the final scenes of the novel Robots and Empire, R. Giskard Reventlov is
the first robot to act according to the Zeroth Law. Giskard is telepathic, like
the robot Herbie in the short story "Liar!", and tries to apply the Zeroth Law
through his understanding of a more subtle concept of "harm" than most
robots can grasp. However, unlike Herbie, Giskard grasps the philosophical
concept of the Zeroth Law allowing him to harm individual human beings if
he can do so in service to the abstract concept of humanity. The Zeroth Law
is never programmed into Giskard's brain but instead is a rule he attempts
to comprehend through pure metacognition. Though he fails – it ultimately
destroys his positronic brain as he is not certain whether his choice will
turn out to be for the ultimate good of humanity or not – he gives his
successor R. Daneel Olivaw his telepathic abilities. Over the course of many
thousands of years Daneel adapts himself to be able to fully obey the Zeroth
Law.
16
CHAPTER 3
METHODOLOGY
17
3.1 WHAT IS AND WHAT IS NOT A ROBOT?
18
Figure 2 : PCB
Figure 3 Keyboard
19
Figure 4 Finger A
Figure 5 Finger B
20
Figure 9 Servo Extension Lead
21
Figure 12 Arm
22
Figure 14 Circuit Diagram of Robotic Arm
23
Specifications:
- ATMEGA64 processor
- Various available I/Os [Inputs/Outputs]
- I2C Bus
- Torque clutch
- 6 Servos (4 Pcs. S06NF and 2 Pcs. S05NF)
- 100% metal
- Arm length: 390 mm
- Height: 460 mm
- Base diameter: 210 mm
- Power supply: 9 -14V/3-4A
24
● Flexible expansion system, based on the I²C-Bus
◊ Only two signals required (TWI -> “Two Wire Interface”)
◊ Transfer speed up to 400kBit/s
◊ Master->Slave architecture
◊ Up to 127 Slaves may be connected to the bus simultaneously
◊ Very popular bus-system. The market provides a lot of standard ICs,
sensors and other components, which may often be connected directly.
25
On the robot arm mainboard are a few LEDs, here follows a short
explanation:
The yellow LED “main _pwr” shows if there is an external voltage and if the
robot is switched on.
If the Red Led “Servo_Pwr” only burns when the DC/DC convertor for the
servo power is switched on by the microprocessor. This is controlled by the
software.There are four blue status Leds “SL1-4” which are controlled
directly by the microprocessor.
We can use these Leds for our own program applications.
Common people are easily influenced by science fiction and thus imagine
a robot as a humanoid that can walk, see, hear, speak, and do the desired
work. But the scientific interpretation of science fiction scenario
propounds a robot as an automatic machine that is able to interact with
and modify the environment in which it operates. Therefore, it is
essentialto define what constitutes a robot. Different definitions from
diverse sources are available for a robot.
26
3.2 COMPONENTS OF ROBOT:-
1. STRUCTURE
2. POWER SOURCE
At present mostly (lead-acid) batteries are used, but potential power sources
could be:
• Pneumatic (compressed gases)
• Hydraulics (compressed liquids)
• Flywheel energy storage
• Organic garbage (through anaerobic digestion)
• Still untested energy sources (e.g. Nuclear Fusionreactors)
3. ACTUATION
Actuators are like the "muscles" of a robot, the parts which convert stored
energy into movement. By far the most popular actuators are electric motors
that spin a wheel or gear, and linear actuators that control industrial robots
in factors. But there are some recent advances in alternative types of
actuators, powered by electricity, chemicals, or compressed air.
27
FIG 1.2 ACTUATORS
4. TOUCH
Current robotic and prosthetic hands receive far less tactile information
than the human hand. Recent researchhas developed a tactile sensor array
that mimics the mechanical properties and touch receptors of human
fingertips. The sensor array is constructed as a rigid core surrounded by
conductive fluid contained by an elastomeric skin. Electrodes are mounted
on the surface of the rigid core and are connected to an impedance-
measuring device within the core. When the artificial skin touches an object
the fluid path around the electrodes is deformed, producing impedance
changes that map the forces received from the object.
5. VISION
28
In most practical computer vision applications, the computers are pre-
programmed to solve a particular task, but methods based on learning are
now becoming increasingly common.
Electric motors
Electric motor
The vast majority of robots use electric motors, often brushed and brushless
DC motors in portable robots or AC motors in industrial robots
and CNC machines. These motors are often preferred in systems with lighter
loads, and where the predominant form of motion is rotational.
Linear actuators
Main article: Linear actuator
Various types of linear actuators move in and out instead of by spinning,
and often have quicker direction changes, particularly when very large forces
are needed such as with industrial robotics. They are typically powered by
compressed and oxidized air (pneumatic actuator) or an oil (hydraulic
actuator).
29
Air muscles
Pneumatic artificial muscles, also known as air muscles, are special tubes
that expand (typically up to 40%) when air is forced inside them. They are
used in some robot applications.
Muscle wire
Muscle wire, also known as shape memory alloy, Nitinol or Flexinol wire, is a
material which contracts (under 5%) when electricity is applied. They have
been used for some small robot applications.
Electroactive polymers
EAPs or EPAMs are a new plastic material that can contract substantially
(up to 380% activation strain) from electricity, and have been used in facial
muscles and arms of humanoid robots, and to enable new robots to
float, fly, swim or walk.
Piezo motors
Piezoelectric motor
Recent alternatives to DC motors are piezo motors or ultrasonic motors.
These work on a fundamentally different principle, whereby tiny piezo
ceramic elements, vibrating many thousands of times per second, cause
linear or rotary motion. There are different mechanisms of operation; one
type uses the vibration of the piezo elements to step the motor in a circle or
a straight line. Another type uses the piezo elements to cause a nut to
vibrate or to drive a screw. The advantages of these motors
are nanometer resolution, speed, and available force for their size. These
motors are already available commercially, and being used on some robots.
Elastic nanotubes
30
deform elastically by several percent, with energy storage levels of perhaps
10 J/cm3 for metal nanotubes. Human biceps could be replaced with an
8 mm diameter wire of this material. Such compact "muscle" might allow
future robots to outrun and out jump humans.
6.MANIPULATION
Robots which must work in the real world require some way to
manipulate objects; pick up, modify, destroy, or otherwise have an effect.
Thus the 'hands' of a robot are often referred to as end effectors, while the
arm is referred to as a manipulator. Most robot arms have replaceable
effectors, each allowing them to perform some small range of tasks. Some
have a fixed manipulator which cannot be replaced, while a few have one
very general purpose manipulator, for example a humanoid hand.
2.Vacuum Grippers: Pick and place robots for electronic components and
for largeobjects like car windscreens, will often use very simple vacuum
grippers. These are very simple astrictive devices, but can hold very large
loads provided the pretension surface is smooth enough to ensure suction.
31
BLOCK DIAGRAM OF ATmega644PA MICROCONTROLLER
32
flexible Timer/Counters with compare modes and PWM, two serial
programmable USARTs , one byte-oriented 2-wire Serial Interface (I2C), a 8-
channel 10-bit ADC with optional differential input stage with
programmable gain, a programmable Watchdog Timer with internal
Oscillator, an SPI serial port, IEEE std. 1149.1 compliant JTAG test
interface, also used for accessing the On-chip Debug system and
programming and six software selectable power saving modes. The Idle
mode stops the CPU while allowing the SRAM, Timer/Counters, SPI port,
and interrupt system to continue functioning. The Power-down mode saves
the register contents but freezes the Oscillator, disabling all other chip
functions until the next interrupt or hardware reset. In Power-save mode,
the asynchronous timer continues to run, allowing the user to maintain a
timer base while the rest of the device is sleeping. The ADC Noise Reduction
mode stops the CPU and all I/O modules except asynchronous timer and
ADC to minimize switching noise during ADC conversions. In Standby
mode, the crystal/resonator oscillator is running while the rest of the device
is sleeping. This allows very fast start-up combined with low power
consumption. In Extended Standby mode, both the main oscillator and the
asynchronous timer continue to run. Atmel offers the QTouch library for
embedding capacitive touch buttons, sliders and wheels functionality into
AVR microcontrollers. The patented charge-transfer signal acquisition offers
robust sensing and includes fully debounced reporting of touch keys and
includes Adjacent Key Suppression (AKS™) technology for unambiguous
detection of key events. The easy-to-use QTouch Suite tool chain allows you
to explore, develop and debug your own touch applications. The device is
manufactured using Atmel’s high density non-volatile memory technology.
The On-chip ISP Flash allows the program memory to beL reprogrammed In-
System through an SPI serial interface, by a conventional nonvolatile
memory programmer, or by an On-chip Boot program running on the AVR
core. The Boot program can use any interface to download the application
program in the Application Flash memory. Software in the Boot Flash
section will continue to run while the Application Flash section is updated,
providing true Read-While-Write operation. By combining an 8-bit RISC CPU
with In-System Self-Programmable Flash on a monolithic chip, the Atmel
ATmega644PA is a powerful microcontroller that provides a highly flexible
33
and cost effective solution to many embedded control applications. The
ATmega644PA is supported with a full suite of program and system
development tools including: C Compilers, Macro Assemblers, Program
Debugger/Simulators, In-Circuit Emulators, and Evaluation kits.
PIN CONFIGURATIONS
VCC
Digital supply voltage.
GND
Ground.
34
Port A (PA [7:0])
35
Port D (PD [7:0])
RESET
Reset input. A low level on this pin for longer than the minimum pulse
length will generate a reset, even if the clock is not running. Shorter pulses
are not guaranteed to generate a reset.
XTAL1
Input to the inverting Oscillator amplifier and input to the internal clock
operating circuit.
XTAL2
Output from the inverting Oscillator amplifier.
AVCC
AVCC is the supply voltage pin for Port A and the Analog-to-digital
Converter. It should be externally connected to VCC, even if the ADC is not
used. If the ADC is used, it should be connected to VCC through a low-pass
filter.
AREF
This is the analog reference pin for the Analog-to-digital Converter.
36
3.3 FACTORS TO BE CONSIDERED
3.3.1 CONTROLS
37
The processing phase can range in complexity. At a reactive level, it
may translate raw sensor information directly into actuator commands.
Sensor fusion may first be used to estimate parameters of interest (e.g. the
position of the robot's gripper) from noisy sensor data. An immediate task
(such as moving the gripper in a certain direction) is inferred from these
estimates. Techniques from control theory convert the task into commands
that drive the actuators.
At longer time scales or with more sophisticated tasks, the robot may
need to build and reason with a "cognitive" model. Cognitive models try to
represent the robot, the world, and how they interact. Pattern recognition
and computer vision can be used to track objects. Mapping techniques can
be used to build maps of the world. Finally, motion planning and other
artificial intelligence techniques may be used to figure out how to act. For
example, a planner may figure out how to achieve a task without hitting
obstacles, falling over, etc.
1. Direct interaction is used for hap tic or tale-operated devices, and the
human has nearly complete control over the robot's motion.
38
Another classification takes into account the interaction between
human control and the machine motions.
4. Full autonomy: - The machine will create and complete all its tasks
without humaninteraction.
There are three basic methods for programming Industrial robots but
currently over 90% are programmed using the teach method.
The logic for the program can be generated either using a menu based
system or simply using a text editor but the main characteristic of this
method is the means by which the Robot is taught the positional data. A
teach pendant with Controls to drive the robot in a number of different co-
ordinate systems is used to manually drive the robot to the desired
locations. These locations are then stored with names that can be used
within the robot program. The co-ordinate systems available on a standard
jointed arm robot are:-
39
Joint Co-ordinates
The robot joints are driven independently in either direction.
Global Co-ordinates
The tool centre point of the robot can be driven along the
X, Y or Z axes of the Robots global axis system. Rotations of the
tool around these axes can also be performed
• Tool Co-ordinates
Similar to the global co-ordinate system but the axes of this
one are attached to the tool centre point of the robot and therefore move
with it. This system is especially useful when the tool is near to the work
piece.
This system of programming was initially popular but has now almost
disappeared. It is still however used by many paint spraying robots. The
robot is programmed by being physically moved through the task by an
operator. This is exceedingly difficult where large robots are being used and
sometimes a smaller version of the robot is used for this purpose. Any
hesitations or inaccuracies that are introduced into the program cannot be
edited out easily without reprogramming the whole task. The robot
controller simply records the joint positions at a fixed time interval and then
plays this back.
40
3.3.3C OFF-LINE PROGRAMMING
Similar to the way in which CAD systems are being used to generate
NC programs for milling machines it is also possible to program robots from
CAD data. The CAD models of the components are used along with models
of the robots being used and the fixturing required. The program structure
is built up in much the same way as for teach programming but intelligent
tools are available which allow the CAD data to be used to generate
sequences of location and process information. At present there are only a
few companies using this Technology as it is still in its infancy but its use is
increasing each year. The benefits of this form of programming are:-
The FT232R is the latest device to be added to FTDI’s range of USB UART
interface Integrated Circuit Devices. The FT232R is a USB to serial UART
interface with optional clock generator output, and the new FTDIChip-ID™
security dongle feature. In addition, asynchronous and synchronous bit
bang interface modes are available. USB to serial designs using the FT232R
have been further simplified by fully integrating the external EEPROM, clock
circuit and USB resistors onto the device.
41
Functional Block Descriptions
USB Transceiver
The USB Transceiver Cell provides the USB 1.1 / USB 2.0 full-speed
physical interface to the USB cable. The output drivers provide 3.3V level
slew rate control signalling, whilst a differential receiver and two single
ended receivers provide USB data in, SEO and USB Reset condition
detection. This Cell also incorporates internal USB series resistors on the
USB data lines, and a 1.5kΩ pull up resistor on USBDP.
42
USB DPLL - The USB DPLL cell locks on to the incoming NRZI USB data
and provides separate recovered clock and data signals to the SIE block.
Serial Interface Engine (SIE) - The Serial Interface Engine (SIE) block
performs the Parallel to Serial and Serial to Parallel conversion of the USB
data. In accordance to the USB 2.0 specification, it performs bit stuffing /
un-stuffing and CRC5 / CRC16 generation / checking on the USB data
stream.
USB Protocol Engine - The USB Protocol Engine manages the data stream
from the device USB control endpoint. It handles the low level USB protocol
(Chapter 9) requests generated by the USB host controller and the
commands for controlling the functional parameters of the UART.
FIFO TX Buffer (128 bytes) - Data from the USB data out endpoint is
stored in the FIFO TX buffer and removed from the buffer to the UART
transmit register under control of the UART FIFO controller.
FIFO RX Buffer (256 bytes) - Data from the UART receive register is stored
in the FIFO RX buffer prior to being removed by the SIE on a USB request
for data from the device data in endpoint.
43
UART FIFO Controller - The UART FIFO controller handles the transfer of
data between the FIFO RX and TX buffers and the UART transmit and
receive registers.
UART Controller with Programmable Signal Inversion and High
Drive - Together with the UART FIFO Controller the UART Controller
handles the transfer of data between the FIFO RX and FIFO TX buffers and
the UART transmit and receive registers. It performs asynchronous 7 / 8 bit
Parallel to Serial and Serial to Parallel conversion of the data on the RS232
(RS422 and RS485) interface. Control signals supported by UART mode
include RTS, CTS, DSR , DTR, DCD and RI. The UART Controller also
provides a transmitter enable control signal pin option (TXDEN) to assist
with interfacing to RS485 transceivers. RTS / CTS, DSR / DTR and X-On /
X-Off handshaking options are also supported. Handshaking, where
required, is handled in hardware to ensure fast response times. The UART
also supports the RS232 BREAK setting and detection conditions. A new
feature, programmable in the internal EEPROM allows the UART signals to
each be individually inverted. Another new EEPROM programmable feature
allows a high signal drive strength to be enabled on the UART interface and
CBUS pins.
Baud Rate Generator - The Baud Rate Generator provides a x16 clock
input to the UART Controller from the 48MHz reference clock and consists
of a 14 bit prescaler and 3 register bits which provide fine tuning of the
baud rate (used to divide by a number plus a fraction or “sub-integer”). This
determines the Baud Rate of the UART, which is programmable from 183
baud to 3 million baud.
The FT232R supports all standard baud rates and non-standard baud rates
from 300 Baud up to 3 Megabaud. Achievable non-standard baud rates are
calculated as follows -
Baud Rate = 3000000 / (n + x)
where n can be any integer between 2 and 16,384 ( = 214 ) and x can be a
sub-integer of the value 0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, or 0.875.
44
When n = 1, x = 0, i.e. baud rate divisors with values between 1 and 2 are
not possible.
This gives achievable baud rates in the range 183.1 baud to 3,000,000
baud. When a non-standard baud rate is required simply pass the required
baud rate value to the driver as normal, and the FTDI driver will calculate
the required divisor, and set the baud rate. See FTDI application note
AN232B-05 for more details.
45
3.3.4 Starting the Robot
Starting the Robot
1. First check all mechanical assembly and electronic of the
robot arm.
2. Connect the power 12V (18 V = absolute max.).
3. Switch the robot on with the main On/Off switch.
Voltage supply
Power adaptor
There are 2 options to power the robot. The easiest solution is to
connect the included power adaptor with an output voltage of 12V/3Amps
to the DC input. This way, the voltage is connected to the INPUT of
the voltage regulator.
46
Batteries
The second solution is to connect a battery to the battery terminal(9-14V). If
the voltage drops below < 6.7 V, a warning is displayed.
As soon as the Robot Arm is connected to a power supply, the servosmove
slightly and the yellow LED (Power LED) lights up.
47
So, the start was not that and it looks as if the job is but the really
challenging work has only begun...
Software Installation
Let’s do the software installation now. A properly installed software is of
paramountimportance for all following chapters.
As you need administrator rights, you have to log into your system as an
administrator.
The user must have basic knowledge of Windows or Linux based computers
and be familiar with current programs such as file managers, web browsers,
text editors, file compression software (WinZip, WinRAR, unzip and
others)and eventually Linux shell etc. If your computer knowledge is very
limited, youshould learn more about systems before you start using the
Robot Arm. Thismanual is not intended as an introduction to computers
which would go muchfarther. It is only aimed at the Robot Arm, its
programming and the specificsoftware required.
We will start with the installation of WinAVR.
WinAVR is a collection of many usefuland necessary programs for the
software development for AVR micro controllersin C language. In addition to
the GCC for AVR (designated by the term “AVR-GCC”,WinAVR includes the
convenient source texteditor “Programmers Notepad 2” that we will also use
for the program developmentof the Robot Arm.
RobotLoader
The RobotLoader has been developed to easily load new programs and all
extension modules onto the Robot ArmRobotLoader.exe file that you can
start with a double-click.
Just unpack them directly into a directory at your convenience on the hard
disk. It is recommended to unpack the example programs into a folder on a
48
data partition. Or in the “My files” folder in a sub-folder “Robot
Arm\Examples\"or else under Linux into the Home directory. It’s entirely up
to you.
49
possible. The driver is also in unpacked format on the CD.
If you are in this situation, a dialogue appears (under Windows) to
install the new driver. You have to indicate the path to the system
where it can find the driver. Under Windows 2k/XP you need to
select first the manual installation and not to look for a web service.
On our CD the driver is in the above mentioned directories.
So, just indicate the directory for your Windows version and eventually
A few other files that the system doesn’t find automatically
(they are all in the directories mentioned below) ...
Under Windows XP and later versions there is often a message that
the FTDI drivers are not signed/verified by Microsoft (normally not
here as the FTDI drivers are signed). This is irrelevant and can be
confirmed without any problem.
Operation
For 32 and 64 Bit Windows 7, XP, Vista, Server 2003 and
2000 systems:
USB_DRIVER\Win2k_XP\CDM20600.exe
For older Windows 98SE/Me systems:
USB_DRIVER\Win98SE_ME\FTDI_D2XX\
After the installation of the driver a re-start of the computer may be
necessary
with older versions like Win98SE. PLEASE NOTE: Under Win98/Me only
one of the two drivers is working: Either Virtual Comport or the D2XX driver
from FTDI! Unfortunately there is no driver that offers both functions.
Normally
there is no virtual comport available as the RobotLoader under Windows
uses as a standard the D2XX drivers (you can change this - please contact
our support team).
Check the Connection of the Device
To check if the device has been correctly installed you can use the
device manager as an alternative to the RobotLoader under Windows
XP, 2003 and 2000: Right click on My Computer --> Properties
50
--> Hardware --> Device manager
OR alternatively: Start --> Settings --> Control panel --> Performance
And Maintenance --> System --> Hardware --> Device
manager and check there in the tree view under “Connections (COM
and LPT)” if you find a “USB-Serial Port (COMX)” - the X replacing
the port number, or look under “USB serial bus controller“ for a
“USB Serial Converter“. Driver must be 10/22/09 and 2.6.0.0
51
Select the USB port. As long as no other
USB->Serial Adaptor with FTDI controller
is connected to the PC, you will see only
one single entry that you have to select.
If more ports exist, you can identify the port via the name “Robot
USB Interface“ (or "FT232R USB UART"). Behind the port name the
programmed serial number is displayed.
If no ports are displayed, you can refresh the port list via the menu
item “RobotLoader-->Refresh Portlist
SELFTEST
The yellow voltage LED lights up when the Robot Arm is switched on.
The status LED blinks when a HEX file is uploaded.
If this worked, you can execute a small selftest program to test the
functioning of all robot systems. Please click on the button “Add” on
the bottom of the Robot Loader window and select the file
RobotArmExamples
[R680], "Example_11_Selftest\RobotArm_Selftest.hex“
in the example directory. This file contains the selftest program in
hexadecimal format - that’s why this kind of program file is called
“hex file”. The file just selected appears afterwards in the list. This
way you can add other hex files from your own programs and from
the examples programs (see screen shot where some hex files have
already been added). The Robot Loader is able to manage several
categories of hex files.
This allows you to sort the files in a clear way e.g. if several programmable
52
extension modules are mounted on the robot or different program
versions are used. The list is automatically saved at the end of the
program. Of course only the paths to the hex files are saved, not the
hex files themselves. If you work on a program, you just need to add
and select the hex file once. Then you can load the new program into
the microcontroller after every re-compiling of the program. (you can
also use the key combination [CTRL+D] or [CTRL+Y], to start the
program directly after the transfer). The path names are of course totally
different under the various operating systems. Nevertheless the
RobotLoader suits both, Windows and Linux, without any changes, as
there is a separate list for Windows and Linux.
Now you can execute the selftest and the calibration of the Robot
Arm. Press the switch Start/Stop Reset on the Robot Arm to start
the program. Later you can do this alternatively via the RobotLoader
menu --> Start or the key combination [CTRL]+[S]. However this
53
time you can test if the switch works properly.
If an error occurs in the selftest, switch the robot off immediately
and start searching for the mistake
Calibration
Start the calibration program to calibrate the robot.
To this end, please click on the button “Add” at the bottom of the
RobotLoader window and select the file RobotArmExamples [MINI],
"Example_11_Selftest\RobotArm_Selftest.hex“ in the example
directory.This file contains the selftest program in hexadecimal format. The
just selected file will appear subsequently in the list.
54
Calibration position
55
Keyboard Test
The set is supplied with a keyboard that can be connected to the Robot Arm.
It is a good option for simple demonstrations and allows us to practice the
control of a robot arm via a keyboard. The keyboard is fitted with 6 control
keys and 4 special keys for later extensions. If we want to test the Robot
Arm via the keyboard, we need to transfer the appropriate hex program into
the robot’s microprocessor. Please click on the button “Add” on the bottom
of the RobotLoader window and select the file RobotArmExamples,
“RobotArm_Key_ Board.hex“ in the example directory. Select the file
"RobotArm_Key_Board.hex“ in the list and press subsequently the “Upload!“
button on the top right side below the progress bar.
56
5. Select the new interface
57
purposes. Source text is pure text without any formatting. The compiler is
not interested in font size and color...
For a human being, it is of course much clearer if some keywords or kinds
of text are automatically highlighted by colors. These functions and some
more are contained in Programmers Notepad 2 (abbeviated hereafter by
“PN2”) that is the source text editor that we will use (ATTENTION: Under
Linux you need to use another editor that offers about the same functions
as PN2. Usually, several editors are pre-installed. (e.g. kate, gedit, exmacs or
similiar)). In addition to the highlighting of keywords and others (called
“syntax highlighting”) it offers also a rudimentary project management. This
allows you to organize several source text files in projects and to display in a
list all files related to a project. Moreover you can easily retrieve programs
like the AVR-GCC in PN2 and get the programs conveniently compiled via a
menu item. Normally the AVR-GCC is a pure command line program
without graphic interface.
Open and compile an example project
58
On the left hand side are shown all example projects, on the right hand side
the source text editor (with the mentioned syntax highlighting) and at the
bottom the tools output (in this case the output of the compiler). You can
convert many other things in PN2 and it offers many useful features.
59
We will explan this in detail a bit further down (there is also a version of this
program WITHOUT comments so that you can see how short the program is
in fact. The comments inflate it a lot but are necessary for the
understanding. The uncommented version is also useful to copy the code in
your own programs). PN2 retrieves now the above mentioned “make_all.bat“
batch file. This will on its turn retrieve the program “make“. More info about
“make“ will follow later. The example program will now be compiled. The
generated hex file contains the program in the translated format for the
microcontroller and can be uploaded and executed later. The compilation
process generates a lot of temporary files (suffixes like “.o, .lss, .map, .sym,
.elf, .dep“). Just ignore them. The newly set up tool “make clean” will erase
them all. Only the hex file is of interest for us. By the way, the function
“make clean” will not erase this file.
60
After the activation of the menu item MAKE ALL, the following output
should display (below in a considerably shortened version. Some lines may
look of course a bit different):
> “make.exe” all
-------- begin --------
avr-gcc (WinAVR 20100110) 4.3.3.
Size before:
AVR Memory Usage
----------------
Device: atmega64
Program: 3074 bytes (4.7% Full)
(.text + .data + .bootloader)
Data: 68 bytes (1.7% Full)
(.data + .bss + .noinit)
EEPROM: 14 bytes (0.7% Full)
(.eeprom)
Compiling C: Robot Arm_Leds.c
avr-gcc -c -mmcu=atmega64 -I.
-gdwarf-2 -DF_CPU=16000000UL -Os -funsigned-char -funsigned-bitfields -
fpackstruct
-fshort-enums -Wall
-Wstrict-prototypes -Wa,-adhlns=./Robot Arm_Leds.lst -std=gnu99 -MMD -
MP -MF
.dep/Robot Arm_Leds.o.d Robot Arm_Leds.c -o Caterpillar_Leds.o
Linking: Robot Arm_Leds.elf
avr-gcc -mmcu=atmega16 -I. -gdwarf-2 -DF_CPU=16000000UL -Os -
funsigned-char -funsignedbitfields
Creating load file for Flash: Robot Arm_Leds.hex
Creating load file for EEPROM: Robot Arm_Leds.eep
avr-objcopy -j .eeprom --set-section-flags=.eeprom=”alloc,load” \
--change-section-lma .eeprom=0 --no-change-warnings -O ihex Robot
Arm_Leds.elf
Robot Arm_Leds.eep || exit 0
61
Size after:
AVR Memory Usage
----------------
Device: atmega64
Program: 3074 bytes (4.7% Full)
(.text + .data + .bootloader)
Data: 68 bytes (1.7% Full)
(.data + .bss + .noinit)
EEPROM: 14 bytes (0.7% Full)
(.eeprom)
-------- end -------->
Process Exit Code: 0
> Time Taken: 00:04
The “Process Exit Code: 0“ at the end is most important. It means that no
error occurred during compilation. If another code appears there, the
sourcecode contains an error that must be corrected before it will work. In
this case, the compiler will output various error messages that give some
more information. Please note however that the “Process Exit Code: 0“ is not
a guarantee of a fully error-free program! The compiler will not find flawed
thinking in your program and it can’t prevent the robot from running into a
wall ;-)
IMPORTANT: You might find warnings and other messages further above.
These are often very helpful and always indicate important problems! That’s
why these always need to be solved. PN2 highlights warnings and errors by
colours to make the identification easier. Even the line number is indicated
that the compiler is criticizing. If you click on the coloured error message,
PN2 skips in the relevant editor directly to the faulty line.
The indication at the end “AVR Memory Usage“ is also very useful.
----------------
Size after:
AVR Memory Usage
----------------
62
Device: atmega64
Program: 3074 bytes (4.7% Full)
(.text + .data + .bootloader)
Data: 68 bytes (1.7% Full)
(.data + .bss + .noinit)
This means for the Atmega64 processor that our program has a size of 3074
bytes and that 68 bytes of RAM are reserved for static variables (you have to
add to this the dynamic ranges for heap and stack but this would go too
far... just keep always at least a few hundred bytes of memory free). We
dispose in total of 64kb (65536 bytes) of Flash ROM and 2kb (2028 bytes) of
RAM. On the 64kb, 2k are occupied by the bootloader - so we can only use
62kb. Make always sure that the program fits into the available memory
space. (The RobotLoader doesn’t transfer the program if it is too big)
This means that the example programs above leave 60414 bytes of free
space. The relatively short example program Example_01_Leds.c is only so
big because the Robot ArmBaseLibrary is includedSo, don’t worry, there is
enough space for your programs and so small programs usually don’t need
so much memory space. The function library on its own needs several kb of
Flash memory but makes your job much easier and therefore your own
programs will generally be quite small compared to the Robot
ArmBaseLibrary. The just compiled program can now be uploaded via the
RobotLoader into the robot. To do that, you have to add the newly generated
hex file into the list in the RobotLoader via the button “Add”, select it and
click on the “Upload” button exactly as you did for the selftest program.
After that you can switch back to the terminal and look at the output of the
program. Of course you need to launch the execution of the program. The
easiest way to do it in the terminal is to press the key combination
[]+[S] on the keyboard or to use the menu (or just to send an “s” - after
a reset you have to wait a little bit though until the message “[READY]” is
displayed in the terminal!). The key combination []+ [Y] is also very
convenient as the currently selected program is uploaded into the Robot
Arm and immediately started. This avoids to click on the “Flash Loader” tab
63
in the terminal or to use the menu. The example program is very simple
and is only composed of a small LED running light and some text output.
3.4 KAREL
Principles
4. pick beeper (Karel lifts a beeper off the square he is standing at),
The software system for the Lego Mindstorms NXT robots is worthy of
mention. It is based on and written by Labview. The approach is to start
with the program rather than the data. The program is constructed by
dragging icons into the program area and adding or inserting into the
64
sequence. For each icon you then specify the parameters (data). For example
for the motor drive icon you specify which motors and by how much they
move. When the program is written it is downloaded into the Lego NXT
'brick' (microcontroller) for test.
65
3.4.4 MATLABS
66
MATLAB has many advantages compared to conventional computer
languages (e.g.
3.4.5 C LANGUAGE
C++ is also the language from which both Java and C# are derived.
Simply stated, to be a professional programmer implies competency in C++.
It is the gateway to all of modern programming. The purpose of this module
is to introduce C++, including its history, its design philosophy, and several
of its most important features. By far, the hardest thing about learning a
67
programming language is the fact that no element exists in isolation.
Instead, the components of the language work together. This
interrelatedness makes it difficult to discuss one aspect of C++ without
involving others. To help overcome this problem, this module provides a
brief overview of several C++ features, including the general form of a C++
program, some basic control statements, and operators. It does not go into
too many details, but rather concentrates on the general concepts common
to any C++ program.
Visual Basic 2008 is a development tool that you can use to build
software applications that perform useful work and look great within a
variety of settings. Using Visual Basic 2008, you can create applications for
the Windows operating system, the Web, hand-held devices, and a host of
other environments and settings. The most important advantage of Visual
Basic is that it has been designed to increase productivity in your daily
development work especially if you need to use information in databases or
create solutions for the Internet but an important additional benefit t is that
once you become comfortable with the development environment in
Microsoft Visual Studio 2008, you can use the same tools to write programs
for Microsoft Visual C++ 2008, Microsoft Visual C# 2008, Microsoft Visual
Web Developer 2008, and other third-party tools and compilers.
68
RobotLoader
As said, the RobotLoader has been developed to upload easily new
programs into the Robot Arm and onto all our robots (provided that
they contain a compatible bootloader).
69
There are a few very usefull additional functions integrated like a simple
terminal program
70
RACS(Robot Arm Control Software):
Robot Arm Control Software is the easiest way to program and control the
robot arm. Programming via tha RACS requires Robot Loader and the USB
Programming adaptor. Using the Robot Loader Software we need to upload
the RACS.Hex file into the flash memory of the Robot Arm Processor.
The Robot Arm can be controlled very easily via the RACS software. A link is
established between the programming/control lead and then the motors of
the Robot Arm react to the slider positions set via the mouse. The current
positions can be saved, changed and erased in the list box in the lower part
of the user interface. This generates a list containing the individual positions
that can be saved as a file on the computer by clicking on the button “Save”.
This step list can be uploaded any time.
71
RACS Wireless:
With the RACS software and the ARL WRL (APC 220) set, we can control the
robot arm wirelessly.
72
Android-Program
The ARX-BT3 set enables you to control the Robitc Arm by Bluetooth or an
Android Application.
Connection:
-Connect the Bluetooth Module to the PCB of the Robotic Arm.
-Upload the Android Hex data into the Robot Arm processor.
-Upload the Android Apk data into your smartphone or tablet.
1. The Robot should not be programmed such that it should damage the
Battery while holding it in its gripper.
73
3.6 SELECTION OF PRODUCT
74
3.7 DESIGNING OF WORKSPACE
The design of work space includes a Belt conveyor which brings the
charged batteries from the plant and it is been transferred to the
Packing centre Using the Robotic arm. There is moment of 90
degrees; the robot picks a packed Battery from the packed centre
after placing the unpacked Battery. Then the robots proceed towards
the Box packing centre where it unloads the Battery and further
moves towards the Belt conveyor to repeat the same procedure.
75
We can use the arm to get the idea of degrees of freedom.
Keeping the arm straight, moving it from shoulder, we can move in
three ways. Up-and-down movement is called pitch. Movement to the
right and left is called yaw. By rotating the whole arm as screwdriver
is called roll.
The Shoulder Has Three Degree Of Freedom.
76
Moving the arm from the elbow only, holding the shoulder in
same position constantly. The elbow joint has the equivalent of pitch
in shoulder joint, thus the elbow has one degree of freedom. Now
moving the wrist straight and motion less, we can bend the wrist and
up and down, side to side and it can also twist a little. The lower arm
has the same three degrees of freedom. Thus the robot has totally
seven degrees of freedom. Three degrees of freedom are sufficient to
bring the end of a robot arm to any point within its workspace, or
work envelope in three dimensions.
77
3.9 SELECTION OF PARTS
3.11 PROGRAMMING
78
are enough similarities between the different robots that it is possible to gain
a broad-based understanding of robot programming without having to learn
each manufacturer's proprietary language.[1]
VAL was one of the first robot ‘languages’ and was used
in Unimate robots.[3] Variants of VAL have been used by other
manufacturers including Adept Technology. Stäubli currently use VAL3.
Example program:
PROGRAM PICKPLACE
1. MOVE P1
2. MOVE P2
3. MOVE P3
4. CLOSEI 0.00
5. MOVE P4
6. MOVE P5
7. OPENI 0.00
8. MOVE P1
79
.END
begin
movej(p1,tGripper,mNomSpeed)
movej(appro(p3,trAppro),tGripper,mNomSpeed)
movel(p3,tGripper,mNomSpeed)
close(tGripper)
movej(appro(p5,trAppro),tGripper,mNomSpeed)
movel(p5,tGripper,mNomSpeed)
open(tGripper)
movej(p1,tGripper,mNomSpeed)
end
Function PickPlace
Jump P1
Jump P2
Jump P3
On vacuum
Wait .1
Jump P4
Jump P5
Off vacuum
Wait .1
Jump P1
Fend
80
ROBOFORTH (a language based on FORTH).
: PICKPLACE
P1
P3 GRIP WITHDRAW
P5 UNGRIP WITHDRAW
P1
;
(With Roboforth you can specify approach positions for places so you do not
need P2 and P4.)
Clearly the robot should not continue the next move until the gripper is
completely closed. Confirmation or allowed time is implicit in the above
examples of CLOSEI and GRIP whereas the On vacuum command requires a
time delay to ensure satisfactory suction.
Scripting languages
A scripting language is a high-level programming language that is used to
control the software application, and is interpreted in real-time, or
"translated on the fly", instead of being compiled in advance. A scripting
language may be a general-purpose programming language or it may be
limited to specific functions used to augment the running of an application
or system program. Some scripting languages, such as RoboLogix, have data
81
objects residing in registers, and the program flow represents the list of
instructions, or instruction set, that is used to program the robot.
ABB RAPID
Comau PDL2
Fanuc Karel
Kawasaki AS
Kuka KRL
Stäubli VAL3
Yaskawa Inform
Parallel languages
Another interesting approach is worthy of mention. All robotic applications
need parallelism and event-based programming. Parallelism is where the
robot does two or more things at the same time. This requires appropriate
hardware and software. Most programming languages rely on threads or
complex abstraction classes to handle parallelism and the complexity that
comes with it, like concurrent access to shared resources. URBI provides a
higher level of abstraction by integrating parallelism and events in the core
of the language semantics.
82
whenever(face.visible)
&
The above code will move the headPan and headTilt motors in parallel to
make the robot head follow the human face visible on the video taken by its
camera whenever a face is seen by the robot.
Safety considerations
Programming errors represent a serious safety consideration, particularly in
large industrial robots. The power and size of industrial robots mean they
are capable of inflicting severe injury if programmed incorrectly or used in
an unsafe manner. Due to the mass and high-speeds of industrial robots, it
is always unsafe for a human to remain in the work area of the robot during
automatic operation. The system can begin motion at unexpected times and
a human will be unable to react quickly enough in many situations, even if
prepared to do so. Thus, even if the software is free of programming errors,
great care must be taken to make an industrial robot safe for human
83
workers or human interaction, such as loading or unloading parts, clearing
a part jam, or performing maintenance. The ANSI/RIA R15.06-1999
American National Standard for Industrial Robots and Robot Systems -
Safety Requirements (revision of ANSI/RIA R15.06-1992) book from the
Robotic Industries Association is the accepted standard on robot safety. This
includes guidelines for both the design of industrial robots, and the
implementation or integration and use of industrial robots on the factory
floor. Numerous safety concepts such as safety controllers, maximum speed
during a teach mode, and use of physical barriers are covered.
84
In the industrial design field of human-machine interaction, the user
interface is where interaction between humans and machines occurs. The
goal of interaction between a human and a machine at the user interface is
effective operation and control of the machine, and feedback from the
machine which aids the operator in making operational decisions.
After completion of the model of the pick and place robot and selection of
programming language both should be interfaced.the interfacing of robot
and computer using the software is the most important thing in the project.
It should be interfaced using trial and error method, and then final
movement should be set using the software’s. The movement of robot should
be precisely managed causing no harm to the operator, and also the
batteries which are to be moved from one station to another.
85
CHAPTER 4
SCOPE
86
SCOPE
The earliest known industrial robot, conforming to the ISO definition was
completed by "Bill" Griffith P. Taylor in 1937 and published in Meccano
Magazine, March 1938. The crane-like device was built almost entirely
using Meccano parts, and powered by a single electric motor. Five axes of
movement were possible, including grab and grab rotation. Automation
was achieved using punched paper tape to energise solenoids, which
would facilitate the movement of the crane's control levers.
The robot could stack wooden blocks in pre-programmed patterns. The
number of motor revolutions required for each desired movement was
first plotted on graph paper. This information was then transferred to the
87
paper tape, which was also driven by the robot's single motor. Chris
Shute built a complete replica of the robot in 1997.
George Devol applied for the first robotics patents in 1954 (granted in
1961). The first company to produce a robot was Unimation, founded by
Devol and Joseph F. Engelberger in 1956. Unimation robots were also
called programmable transfer machines since their main use at first was
to transfer objects from one point to another, less than a dozen feet or so
apart. They used hydraulic actuators and were programmed
in joint coordinates, i.e. the angles of the various joints were stored
during a teaching phase and replayed in operation. They were accurate to
within 1/10,000 of an inch (note: although accuracy is not an appropriate
measure for robots, usually evaluated in terms of repeatability - see later).
Unimation later licensed their technology to Kawasaki Heavy
Industries and GKN, manufacturing Unimates in Japan and England
respectively. For some time Unimation's only competitor was Cincinnati
Milacron Inc. of Ohio. This changed radically in the late 1970s when
several big Japanese conglomerates began producing similar industrial
robots.
Industrial robotics took off quite quickly in Europe, with both ABB
88
Robotics and KUKA Robotics bringing robots to the market in 1973. ABB
Robotics (formerly ASEA) introduced IRB 6, among the world's
first commercially available all electric micro-processor controlled robot.
The first two IRB 6 robots were sold to Magnusson in Sweden for grinding
and polishing pipe bends and were installed in production in January
1974. Also in 1973 KUKA Robotics built its first robot, known
as FAMULUS, also one of the first articulated robots to have six
electromechanically driven axes.
Controlling movement
For a given robot the only parameters necessary to completely locate the
end effector (gripper, welding torch, etc.) of the robot are the angles of
89
each of the joints or displacements of the linear axes (or combinations of
the two for robot formats such as SCARA). However, there are many
different ways to define the points. The most common and most
convenient way of defining a point is to specify a Cartesian coordinate for
it, i.e. the position of the 'end effector' in mm in the X, Y and Z directions
relative to the robot's origin. In addition, depending on the types of joints
a particular robot may have, the orientation of the end effector in yaw,
pitch, and roll and the location of the tool point relative to the robot's
faceplate must also be specified. For a jointed arm these coordinates
must be converted to joint angles by the robot controller and such
conversions are known as Cartesian Transformations which may need to
be performed iteratively or recursively for a multiple axis robot. The
mathematics of the relationship between joint angles and actual spatial
coordinates is called kinematics. See robot control
90
Drive – some robots connect electric motors to the joints via gears; others
connect the motor to the joint directly (direct drive). Using gears results in
measurable 'backlash' which is free movement in an axis. Smaller robot
arms frequently employ high speed, low torque DC motors, which
generally require high gearing ratios; this has the disadvantage of
backlash. In such cases the harmonic drive is often used.
Compliance - this is a measure of the amount in angle or distance that a
robot axis will move when a force is applied to it. Because of compliance
when a robot goes to a position carrying its maximum payload it will be at
a position slightly lower than when it is carrying no payload. Compliance
can also be responsible for overshoot when carrying high payloads in
which case acceleration would need to be reduced.
Robot programming and interfaces
91
machine and a robot. The various machines are 'integrated' and
controlled by a single computer or PLC. How the robot interacts with
other machines in the cell must be programmed, both with regard to their
positions in the cell and synchronizing with them.
Software:
There are two basic entities that need to be taught (or programmed):
positional data and procedure. For example, in a task to move a screw
from a feeder to a hole the positions of the feeder and the hole must first
be taught or programmed. Secondly the procedure to get the screw from
the feeder to the hole must be programmed along with any I/O involved,
for example a signal to indicate when the screw is in the feeder ready to
be picked up. The purpose of the robot software is to facilitate both these
programming tasks.
Teach pendant: Robot positions can be taught via a teach pendant. This
is a handheld control and programming unit. The common features of
such units are the ability to manually send the robot to a desired
position, or "inch" or "jog" to adjust a position. They also have a means to
change the speed since a low speed is usually required for careful
positioning, or while test-running through a new or modified routine. A
large emergency stop button is usually included as well. Typically once
the robot has been programmed there is no more use for the teach
pendant.
92
while another person enters a command which de-energizes the robot
causing it to go into limp. The user then moves the robot by hand to the
required positions and/or along a required path while the software logs
these positions into memory. The program can later run the robot to
these positions or along the taught path. This technique is popular for
tasks such as paint spraying.
Offline programming is where the entire cell, the robot and all the
machines or instruments in the workspace are mapped graphically. The
robot can then be moved on screen and the process simulated. A robotics
simulator is used to create embedded applications for a robot, without
depending on the physical operation of the robot arm and end effector.
The advantages of robotics simulation is that it saves time in the design of
robotics applications. It can also increase the level of safety associated
with robotic equipment since various "what if" scenarios can be tried and
tested before the system is activated. Robot simulation software provides
a platform to teach, test, run, and debug programs that have been written
in a variety of programming languages.
93
The operator can switch from program to program, make adjustments
within a program and also operate a host of peripheral devices that may
be integrated within the same robotic system. These include end effectors,
feeders that supply components to the robot, conveyor belts, emergency
stop controls, machine vision systems, safety interlock systems, bar
code printers and an almost infinite array of other industrial devices
which are accessed and controlled via the operator control panel.
94
and gripper assembly (or end effector), attached to a fixed surface.
Classification
Mobile robots may be classified by:
95
vehicles (AUVs)
Polar robots, designed to navigate icy, crevasse filled environments
The device they use to move, mainly:
Legged robot : human-like legs (i.e. an android) or animal-like legs.
Wheeled robot.
Tracks.
Guarded tele-op
A guarded tele-op robot has the ability to sense and avoid obstacles but
will otherwise navigate as driven, like a robot under manual tele-op. Few
if any mobile robots offer only guarded tele-op. (See Sliding Autonomy
below.)
Line-following Car
Some of the earliest Automated Guided Vehicles (AGVs) were line
following mobile robots. They might follow a visual line painted or
embedded in the floor or ceiling or an electrical wire in the floor. Most of
these robots operated a simple "keep the line in the center sensor"
algorithm. They could not circumnavigate obstacles; they just stopped
and waited when something blocked their path. Many examples of such
vehicles are still sold, by Transbotics, FMC, Egemin, HK Systems and
many other companies. These types of robots are still widely popular in
well known Robotic societies as a first step towards learning nooks and
96
corners of robotics.
97
finding sunlight and water for potted plants were created by
artist Elizabeth Demaray in collaboration with engineer Dr. Qingze Zou,
biologist Dr. Simeon Kotchomi, and computer scientist Dr. Ahmed
Elgammal.
Designs
98
End effectors
An end effector in an agricultural robot is the device found at the end of
the robotic arm, used for various agricultural operations. Several different
kinds of end effectors have been developed. In an agricultural operation
involving grapes in Japan, end effectors are used for harvesting, berry-
thinning, spraying, and bagging. Each was designed according to the
nature of the task and the shape and size of the target fruit. For instance,
the end effectors used for harvesting were designed to grasp, cut, and
push the bunches of grapes.
For spraying, the end effector consists of a spray nozzle that is attached
to a manipulator. In practice, producers want to ensure that the chemical
liquid is evenly distributed across the bunch. Thus, the design allows for
an even distribution of the chemical by making the nozzle to move at a
constant speed while keeping distance from the target.
The final step in grape production is the bagging process. The bagging
end effector is designed with a bag feeder and two mechanical fingers. In
the bagging process, the bag feeder is composed of slits which
continuously supply bags to the fingers in an up and down motion. While
the bag is being fed to the fingers, two leaf springs that are located on the
upper end of the bag hold the bag open. The bags are produced to contain
the grapes in bunches. Once the bagging process is complete, the fingers
99
open and release the bag. This shuts the leaf springs, which seals the bag
and prevents it from opening again.
Gripper
The gripper is a grasping device that is used for harvesting the target
crop. Design of the gripper is based on simplicity, low cost, and
effectiveness. Thus, the design usually consists of two mechanical fingers
that are able to move in synchrony when performing their task. Specifics
of the design depend on the task that is being performed. For example, in
a procedure that required plants to be cut for harvesting, the gripper was
equipped with a sharp blade.
Manipulator
The manipulator allows the gripper and end effector to navigate through
their environment. The manipulator consists of four-bar parallel links
that maintain the gripper's position and height. The manipulator also can
utilize one, two, or three pneumatic
actuators. Pneumatic actuators are motors which
produce linear and rotary motion by converting compressed
air into energy. The pneumatic actuator is the most effective actuator for
agricultural robots because of its high power-weight ratio. The most cost
efficient design for the manipulator is the single actuator configuration,
yet this is the least flexible option.
Applications
100
their role to a consistent and particular standard.
101
4.4 TYPES OF ROBOTS AS PER APPLICATIONS
102
Devices designed to allow the operator to control a robot at a distance are
sometimes called telecheric robotics.
Two major components of telerobotics and telepresence are the visual and
control applications. A remote camera provides a visual representation of the
view from the robot. Placing the robotic camera in a perspective that allows
intuitive control is a recent technique that although based in Science Fiction
(Robert A. Heinlein's Waldo 1942) has not been fruitful as the speed,
resolution and bandwidth have only recently been adequate to the task of
being able to control the robot camera in a meaningful way. Using a head
mounted display, the control of the camera can be facilitated by tracking the
head as shown in the figure below.
This only works if the user feels comfortable with the latency of the system,
the lag in the response to movements, the visual representation. Any issues
such as, inadequate resolution, latency of the video image, lag in the
mechanical and computer processing of the movement and response, and
optical distortion due to camera lens and head mounted display lenses, can
cause the user 'simulator sickness' that is exacerbated by the lack of
vestibular stimulation with visual representation of motion.
The same technology can control the robot, but then the eye–hand
coordination issues become even more pervasive through the system, and
user tension or frustration can make the system difficult to use.
Ironically, the tendency to build robots has been to minimize the degrees of
freedom because that reduces the control problems. Recent improvements in
computers has shifted the emphasis to more degrees of freedom, allowing
robotic devices that seem more intelligent and more human in their motions.
This also allows more direct teleoperation as the user can control the robot
with their own motions.
Interfaces
103
Telerobotics driven by internet connections are often of this type. A valuable
modification to MMK is a joystick, which provides a more intuitive
navigation scheme for planar robot movement.
Future interfaces will merge fully immersive virtual reality interfaces and
port real-time video instead of computer-generated images. Another example
would be to use an omnidirectional treadmill with an immersive display
system so that the robot is driven by the person walking or running.
Additional modifications may include merged data displays such as Infrared
thermal imaging, real-time threat assessment, or device schematics.
Applications
Space
104
With the exception of the Apollo program most space exploration has been
conducted with telerobotic space probes. Most space-based astronomy, for
example, has been conducted with telerobotic telescopes. The
Russian Lunokhod-1 mission, for example, put a remotely driven rover on
the moon, which was driven in real time (with a 2.5-second lightspeed time
delay) by human operators on the ground. Robotic planetary exploration
programs use spacecraft that are programmed by humans at ground
stations, essentially achieving a long-time-delay form of telerobotic
operation. Recent noteworthy examples include the Mars exploration
rovers (MER) and the Curiosity rover. In the case of the MER mission, the
spacecraft and the rover operated on stored programs, with the rover drivers
on the ground programming each day's operation. The International Space
Station (ISS) uses a two-armed telemanipulator called Dextre. More recently,
a humanoid robot Robonauthas been added to the space station for
telerobotic experiments.
NASA has proposed use of highly capable telerobotic systems for future
planetary exploration using human exploration from orbit. In a concept
for Mars Exploration proposed by Landis, a precursor mission to Mars could
be done in which the human vehicle brings a crew to Mars, but remains in
orbit rather than landing on the surface, while a highly capable remote robot
is operated in real time on the surface.Such a system would go beyond the
simple long time delay robotics and move to a regime of virtual telepresence
on the planet. One study of this concept, the Human Exploration using
Real-time Robotic Operations (HERRO) concept, suggested that such a
mission could be used to explore a wide variety of planetary destinations.
105
iRobot Ava 500, an autonomous roaming telepresence robot.
The prevalence of high quality video conferencing using mobile devices,
tablets and portable computers has enabled a drastic growth in telepresence
robots to help give a better sense of remote physical presence for
communication and collaboration in the office, home, school, etc. when one
cannot be there in person. The robot avatar can move or look around at the
command of the remote person.
There have been two primary approaches that both utilize videoconferencing
on a display 1) desktop telepresence robots - typically mount a phone or
tablet on a motorized desktop stand to enable the remote person to look
around a remote environment by panning and tilting the display or 2)
drivable telepresence robots - typically contain a display (integrated or
separate phone or tablet) mounted on a roaming base. Some examples of
desktop telepresence robots include Kubi by Revolve Robotics, Galileo by
Motrr, and Swivl. Some examples of roaming telepresence robots include
Beam by Suitable Technologies, Double by Double Robotics, RP-Vita
by iRobot and InTouch Health, Anybots, Vgo, TeleMe by Mantarobot, and
Romo by Romotive. More modern roaming telepresence robots may include
an ability to operate autonomously. The robots can map out the space and
be able to avoid obstacles while driving themselves between rooms and their
docking stations.
106
much lower cost robot. The desktop telepresence robots, also called head
and neck Robots allow users to look around during a meeting and are small
enough to be carried from location to location, eliminating the need for
remote navigation.
Marine applications
Marine remotely operated vehicles (ROVs) are widely used to work in water
too deep or too dangerous for divers. They repair offshore oil platforms and
attach cables to sunken ships to hoist them. They are usually attached by a
tether to a control center on a surface ship. The wreck of the Titanic was
explored by an ROV, as well as by a crew-operated vessel.
Telemedicine
Medical robot
Additionally, a lot of telerobotic research is being done in the field of medical
devices, and minimally invasive surgical systems. With a robotic
surgery system, a surgeon can work inside the body through tiny holes just
big enough for the manipulator, with no need to open up the chest cavity to
allow hands inside.
Other applications
Remote manipulators are used to handle radioactive materials.
107
Types
Industrial
Industrial service robots can be used to carry out simple tasks, such as
examining welding, as well as more complex, harsh-environment tasks, such
as aiding in the dismantling of nuclear power stations. Industrial
robots have been defined by the International Federation of Robotics as "an
automatically controlled, reprogrammable, multipurpose manipulator
programmable in three or more axes, which may be either fixed in place or
mobile for use in industrial automation applications".
Domestic Robot
The Roomba vacuum cleaner is one of the most popular domestic service
robots.
Domestic robots perform tasks that humans regularly perform in non-
industrial environments, like people's homes such as for cleaning floors,
mowing the lawn and pool maintenance. People with disabilities, as well as
people who are older, may soon be able to use service robots to help them
live independently. It is also possible to use robots as assistants or butlers.
Scientific
Robotic systems perform many functions such as repetitive tasks performed
in research. These range from the multiple repetitive tasks made by gene
samplers and sequencers, to systems which can almost replace the scientist
in designing and running experiments, analyzing data and even forming
hypotheses. The ADAM at the University of Aberystwyth in Wales can
"[make] logical assumptions based on information programmed into it about
108
yeast metabolism and the way proteins and genes work in other species. It
then set about proving that its predictions were correct."[5]
Rolling robots
109
a robot to navigate in confined places that a four-wheeled robot would not be
able to.
Six-wheeled robots
Using six wheels instead of four wheels can give better traction or grip in
outdoor terrain such as on rocky dirt or grass.Tracked robots
110
TALON military robots used by the United States Army
Tank tracks provide even more traction than a six-wheeled robot. Tracked
wheels behave as if they were made of hundreds of wheels, therefore are very
common for outdoor and military robots, where the robot must drive on very
rough terrain. However, they are difficult to use indoors such as on carpets
and smooth floors. Examples include NASA's Urban Robot "Urbie".
ZMP technique
111
In this way, the two forces cancel out, leaving no moment (force causing the
robot to rotate and fall over).However, this is not exactly how a human
walks, and the difference is obvious to human observers, some of whom
have pointed out that ASIMO walks as if it needs the lavatory. ASIMO's
walking algorithm is not static, and some dynamic balancing is used (see
below). However, it still requires a smooth surface to walk on.
Hopping
Several robots, built in the 1980s by Marc Raibert at the MIT Leg
Laboratory, successfully demonstrated very dynamic walking. Initially, a
robot with only one leg, and a very small foot could stay upright simply
by hopping. The movement is the same as that of a person on a pogo stick.
As the robot falls to one side, it would jump slightly in that direction, in
order to catch itself. Soon, the algorithm was generalised to two and four
legs. A bipedal robot was demonstrated running and even
performing somersaults. A quadruped was also demonstrated which
could trot, run, pace, and bound. For a full list of these robots, see the MIT
Leg Lab Robots page.
Passive dynamics
Perhaps the most promising approach utilizes passive dynamics where
the momentum of swinging limbs is used for greater efficiency. It has been
shown that totally unpowered humanoid mechanisms can walk down a
gentle slope, using only gravity to propel themselves. Using this technique, a
robot need only supply a small amount of motor power to walk along a flat
surface or a little more to walk up a hill. This technique promises to make
112
walking robots at least ten times more efficient than ZMP walkers, like
ASIMO.
Two robot snakes. Left one has 64 motors (with 2 degrees of freedom per
segment), the right one 10.
A modern passenger airliner is essentially a flying robot, with two humans
to manage it. The autopilot can control the plane for each stage of the
journey, including takeoff, normal flight, and even landing. Other flying
robots are uninhabited and are known as unmanned aerial vehicles (UAVs).
They can be smaller and lighter without a human pilot on board, and fly into
dangerous territory for military surveillance missions. Some can even fire on
targets under command. UAVs are also being developed which can fire on
targets automatically, without the need for a command from a human. Other
flying robots include cruise missiles, the Entomopter, and the Epson micro
helicopter robot. Robots such as the Air Penguin, Air Ray, and Air Jelly have
lighter-than-air bodies, propelled by paddles, and guided by sonar.
Snaking
Several snake robots have been successfully developed. Mimicking the way
real snakes move, these robots can navigate very confined spaces, meaning
they may one day be used to search for people trapped in collapsed
buildings.The Japanese ACM-R5 snake robot can even navigate both on
land and in water.
Skating
A small number of skating robots have been developed, one of which is a
multi-mode walking and skating device. It has four legs, with unpowered
113
wheels, which can either step or roll. Another robot, Plen, can use a
miniature skateboard or roller-skates, and skate across a desktop.
114
Swimming (Piscine)
It is calculated that when swimming some fish can achieve
a propulsive efficiency greater than 90%. Furthermore, they can accelerate
and maneuver far better than any man-made boat or submarine, and
produce less noise and water disturbance. Therefore, many researchers
studying underwater robots would like to copy this type of
locomotion. Notable examples are the Essex University Computer
Science Robotic Fish G9, and the Robot Tuna built by the Institute of Field
Robotics, to analyze and mathematically model thunniform motion. The
Aqua Penguin, designed and built by Festo of Germany, copies the
streamlined shape and propulsion by front "flippers" of penguins. Festo have
also built the Aqua Ray and Aqua Jelly, which emulate the locomotion of
manta ray, and jellyfish, respectively.
115
Sailing
116
milling and drawing machines where a pen or router translates across an x-
y plane while a tool is raised and lowered onto a surface to create a precise
design. Pick and place machines and plotters are also based on the principal
of the cartesian coordinate robot.
In 1981, Sankyo Seiki, Pentel and NEC presented a completely new concept
for assembly robots. The robot was developed under the guidance of Hiroshi
Makino, a professor at the University of Yamanashi. The robot was called
Selective Compliance Assembly Robot Arm, SCARA. Its arm was rigid in the
Z-axis and pliable in the XY-axes, which allowed it to adapt to holes in the
XY-axes.
117
The second attribute of the SCARA is the jointed two-link arm layout similar
to our human arms, hence the often-used term, Articulated. This feature
allows the arm to extend into confined areas and then retract or"fold up" out
of the way. This is advantageous for transferring parts from one cell to
another or for loading/ unloading process stations that are enclosed.
Most SCARA robots are based on serial architectures, which means that the
first motor should carry all other motors. There also exists a so-called
double-arm SCARA robot architecture, in which two of the motors are fixed
at the base. The first such robot was commercialized by Mitsubishi Electric.
Another example of a dual-arm SCARA robot is Mecademic's DexTAR
educational robot.
When people speak of industrial robots today, they are usually talking about
articulated robots. These are the robots that are most commonly in use in
factories worldwide. There are many different companies that produce
articulated robots, including FANUC, Motoman, KUKA and ABB
robotics companies.Used for assembly operations, die-casting, fettling
machines, gaswelding, arc welding and spray painting. It's a robot whose
arm has at least three rotary joints.
118
Articulated robotic systems usually have four to six axes, but they can have
up to 10. These robots have more degrees of freedom than any other robots
on the market, which gives the manufacturer more versatility and makes
them more appealing. An articulated robot can be used for dozens of
different welding, material handling, dispensing and material
removal applications
Design features
119
serial manipulator. Errors in one chain's positioning are averaged in
conjunction with the others, rather than being cumulative. Each actuator
must still move within its own degree of freedom, as for a serial robot;
however in the parallel robot the off-axis flexibility of a joint is also
constrained by the effect of the other chains. It is this closed-loop stiffness
that makes the overall parallel manipulator stiff relative to its components,
unlike the serial chain that becomes progressively less rigid with more
components.
Applications
flight simulators
120
automobile simulators
in work processes
photonics / optical fiber alignment[4]
They also become more popular:
Two examples of popular parallel robots are the Stewart platform and
the Delta robot.
Anthropomorphism
Name
Both have ancient roots as storytelling and artistic devices, and most
cultures have traditional fables with anthropomorphized animals as
characters. People have also routinely attributed human emotions and
behavioural traits to wild as well as domestic animals.
121
CHAPTER 5
SELECTION OF TASK
122
5.1 TASKS
The various tasks which a pick and place robot can perform are as follows:-
5.1.1 Robot pick-and-place
The use of robots for placing products in cartons and transfer of cartons
and products between different stations in the packaging lines is very
common in all industries. High speed pick-and-place robots for placing
small items like candy and cookies in packages are often combined with a
visual observation system for identifying products.
Pick-and-place applications comprise both primary handling—putting
individual pieces of product into a tray or carton—and case packing.
Advances in materials of construction, controlling software and hardware,
vision systems and other aspects have made robots, of various types, an
increasinglyviable option for pick-and-place.
The type of robot most appropriate for a given pick-and-place application
depends on the speed required, the size of the payload and other factors.
For most applications, only one type of robot will be appropriate. But there
are many borderline applications where more than one type could be used,
and the end user (or his/her system integrator) must prioritize the factors.
In the past, operating a robot would have required integration between the
robot’s motion controller and the programmable logic controllers (PLCs)
that coordinate the robot’s actions with the rest of the line. But the trend
has been to combine those functions, as much as possible, into common
123
controllers. This eliminates software coding that would otherwise have
been required to coordinate the separate controllers.
Several kinds of robots can be used for upstream pick-and-place:
• Delta-style robots that operate from overhead with three or four long, thin
arms that meet at the effector head;
• SCARA (selective compliant articulated robot arm) models, which are
fixed-base robots with three vertical-axis (horizontal-motion) rotary arms;
and
• Multi-axis articulated robots, which can have up to six axes, with joints
that can rotate in any direction.
Choosing among these three kinds of robots depends largely on speed and
payload size. (The payload includes the weight of both the product or
package and the end-of-arm tooling needed to grip it.) Generally speaking,
delta-style robots go twice as fast as SCARA robots, which in turn go twice
as fast as six-axis articulated robots. Conversely, six-axis robots can
handle the heaviest payloads, followed by SCARA robots and delta-style
models.
124
Pick-and-place applications are fertile ground for robotic equipment. As
technology and other developments make such equipment increasingly
viable, end users who pick the right machines will find themselves in a
good place.
Flexible packaging material is the generic term for soft packages made of
film, foil or paper sheeting. Popular forms are stand-up pouches, bags,
sachets and envelopes. These packages are often formed, filled and sealed
in a vertical or horizontal form-fill-seal machine. The package is then finally
put into a case by top loading.
125
5.1.4 Rotary cartoners
126
5.1.5 PALLETIZING AND DEPALLETIZING
Vacuum and suction cups are used to pick and open paper and plastic
bags. Suction cups with stiffer bellows and a soft sealing lip are preferred
in these quite often high-speed applications.
127
5.2 SELECTION OF TASK
From the various tasks which can be done using the pick and place
robots we have particularly meshed the two process of picking &
placing along with pallezting process.
So both the picking & placing along with the packing procedure can
be accompanied using this pick and place robot.
We have selected the pick and place robots for this particular process due to
the following reasons:-
Using of Human labour for the loading and unloading of the Batteries
and also for packing purpose will consume more time.
Moreover the work can be done easily using a single pick and place
robot, which is used for both loading and unloading and pallezting
purpose.
128
5.4 DEFINING WORK STATION
The work station for this operation of pick & place and pallezting is been
designed in such a way that:-
The unpacked battery coming from the belt conveyor is been sensed by a
sensor and the moment of the conveyor is been controlled by the sensor.
As one by one the battery comes, the Robot picks one battery and moves
towards the packing station, keeps the battery on the conveyor there.
Then picks the Packed Battery from there and moves towards the Box-
packing center and places the Battery for Box-packaging.
129
• Advantages
Robots are outfitted with wide reaches and slim arms, steady
repeatability and precise tooling - all of which allows them to be
extremely accurate. This high precision capability makes them a good
match for pick and place applications.
Pick and place robot systems have the ability to improve product
quality and cycle time. Robotic movements are regulated, so the results
are always the same. Quality is improved because of this regularity.
Furthermore, this consistency allows the processes to take place.
Because they are designed with compact bases, pick and place robots
are ideal if you are looking to conserve floor space. Robots can be
programmed to move within strict work envelope limits - leading to
even better use of space.
130
4.Robots Maximize Safety:
Pick and place applications can be physically demanding. They are labor-
intensive, repetitive, and monotonous. Depending on the weight and size of
a part, moving it from one place to another can be very demanding work.
Pick and place robots are unaffected by the stresses of the application. They
are able to work without taking breaks or making mistakes.
Incorporating pick and place robots can effectively cut your costs. Robotic
precision and reliability allow for less wasted material and more efficient use
of time. Plus, the initial investment in robots is quickly recouped - making
pick and place robots an extremely cost-effective solution.
131
Chapter 6
LIMITATIONS
132
The Disadvantages of Industrial Robots:
1. Expense:
2. ROI:
3. Expertise:
4. Safety:
Robots may protect workers from some hazards, but in the meantime,
their very presence can create other safety problems. These new dangers
must be taken into consideration.
133
Robot By Application
1. Material handling
2. packaging
3. Wrapping
134
Estimation
Sr
no Name Nos Rate Total
6100
135
CHAPTER 7
CONCLUSION
136
Conclusion:
This is the most efficient way to implement Robotic Arm in the Industry for
Pick and Place operations and a detailed description is provided on how to
assemble , interface, install and program the Robotic Arm and how it can be
used for other applications aswell.
The paper provides information in detail of how the Robotic Arm can be
designed and Programmed. The next step forward is how to make
autonomous Robots who can make decisions on their own without human
intervention or assistance. It can be achieved by enhancing the robot by
adding more sensors and more intelligent processors and controllers, artificial
intelligence. Efficient programming is necessary to make sure the robotic arm
performs the actions precisely without errors. The paper also shows how we
can use the Robotic Arm with a wired keyboard, wirelessly with a Bluetooth
connection.
This work has been published in the SMJ journal (Science and Math Journal)
This paper has increased our interests in robotics and autonomous design,
knowledge which will serve useful throughout our professional careers. We
feel that this form of thinking and engineering will be prevalent in the modern
world and beyond as new applications.
137
CHAPTER 8
REFERENCES
138
References:
The MathWorks Inc. MATLAB 7.0 (R14SP2). The MathWorks Inc., 2005.
www.asmedl.org/robotics
www.wikipedia.org/wiki/Robotics
http://www.robologix.com
www.seattlerobotics.org/encoder/aug97/basics.html
139