Lucrare de licen ță [600769]
Lucrare de licen ță
Robotică
UNIVERSITATEA TEHNICĂ DIN CLUJ -NAPOCA
FACULTATEA DE CONSTRUCȚII DE MAȘINI
DEPARTAMENTUL DE INGINERIA PROIECTĂRII ȘI ROBOTICĂ
ROBOTICS
BACHELOR THESIS
STUDENT: [anonimizat]
2016
Lucrare de licen ță
Robotică
Lucrare de licen ță
Robotică
UNIVERSITATEA TEHNICĂ DIN CLUJ -NAPOCA
FACULTATEA DE CONSTRUCȚII DE MAȘINI
DEPARTAMENTUL DE INGINERIA PROIECTĂRII ȘI ROBOTICĂ
SPECIALIZAREA ROBOTICĂ
BANDI PETER LORAND
ARTICULATED ARM
Coordonator științific
SL. Dr. Ing. MIHAI STEOPAN
Lucrare de licen ță
Robotică
Lucrare de licen ță
Robotică
Declarație de originalitate din partea student: [anonimizat]:
Declar c ălucrareade licențăcu titlul:
ARTICULATED ARM
Reprezint ă contribuț ia mea original ăși nu a fost plagiat ă.
Lucrarea a fost elaborat ăde mine sub îndrumarea SL. Dr. Ing. MIHAI STEOPAN
și am primit concursul persoanelor nominalizate mai josdrept consultan ți.
Consultant: CONF.DR.ING. EMILIA BRAD
Mențiuni speciale (dacă este cazul) :
Data:
________________________
(semn ăturastudent: [anonimizat]:
ARTICULATED ARM
realizat ădedomnul:BANDI PETER LORAND
confirm prin prezenta cănuam cuno ștințăca realiz ările prezentate înlucrare s ăfie copiatesau s ăreprezinte
contribu țiile unei alte persoane dec ât autorul nominalizat.
Mențiuni speciale (dacă este cazul) :
Data:
________________________
(semn ăturacoordonatorului )
Lucrare de licen ță
Robotică
Încadrarea lucrării de licențăîn domeniul de specialitate
Vă rugăm să introduceți în caseta adecvată litera Ppentru subdomeniul principal în care se încadrează lucrarea de licență(se optează pentru un singur
subdomeniu principal) și litera Cpentru subdomeniile complementare (dacă este cazul; se poate opta pent ru mai multe subdomenii complementare .
Programarea în robotică Acționareasistemelor robotice C
Interfețe om -robot C Managementul lanțului de furnizori pentru producți arobotizat ă
Tele-service și tele -monitorizare în robotică Comanda și controlul sistemelor robotice C
Realitate virtuală în robotică Managementul informației în sisteme robotice
Optimizarea proceselor de fabricație robotizate Sisteme inteligente de fabricație
Mecanică avansată în robotică Optimizare în robotică
Modelare și simulare în robotică Sisteme robotice de mare precizie
Planificarea producție irobotizate / automatizate Mini și m icro-robotică P
Aplicații client -server în robotică Sisteme flexibile de fabricație
Asigurarea calității în procesele automatizate Proiectare mecanică în robotică
Sisteme robotice autonome Aplicații de cooperare om -robot și multi -robot
Sisteme de viziune în robotică Altele (precizați):
Auto-aprecierea lucrării de licență
Acest spațiu este alocat pentru student: [anonimizat] Nivelul 1 2 3 4 5
Calitatea exprimării în limba română / engleză
Aspectul estetic al lucrării
Actualitatea temei
Claritatea documentației scrise
Originalitatea
Calitatea tehnică (corectitudine solu ție, calcule etc.)
Calitatea documentării bibliografice
Calitatea plan șelor desenate
Relevanța pentru mediul social sau economic
Semnătura student: [anonimizat]: _____________________________
Aprecierea lucrării de licențăde către coordonatorul științific
Acest spațiu este alocat pentru coordonatorul științific
Nesatisfăcătoare Satisfăcătoare Bună Ridicată Foarte ridicată
Criteriul Nivelul 1 2 3 4 5
Calitatea exprimării în limba română / engleză
Aspectul estetic al lucrării
Actualitatea temei
Claritatea documentației scrise
Originalitatea
Calitatea tehnică (corectitudine solu ție, calcule etc.)
Calitatea documentării bibliografice
Calitatea plan șelor desenate
Relevanța pentru mediul social sau economic
Semnătura coordonatorului științific: ______________________________
Lucrare de licen ță
Robotică
Lucrare de licen ță
Robotică
1Contents
FOREWORD ………………………….. ………………………….. ………………………….. ……………………… 7
ACKNOWLEDGEMENTS ………………………….. ………………………….. ………………………….. …..9
REZUMATUL LUCRĂRII DE LICEN ȚĂ………………………….. ………………………….. ………..11
SUMMARY OF THE BSc FINAL DEGREE PROJECT ………………………….. ………………… 13
CHAPTERS RESUME ………………………….. ………………………….. ………………………….. ……….15
GENERAL OBIECTIVES ………………………….. ………………………….. ………………………….. …..17
SPECIFIC OBIECTIVES ………………………….. ………………………….. ………………………….. ……19
1.INTRODUCTION ………………………….. ………………………….. ………………………….. ………………… 21
1.1Basics regarding the project domain ………………………….. ………………………….. ………………. 21
1.2Highlights on the technological developments in the field of the project ……………………… 24
2PROJECT PLANNING ………………………….. ………………………….. ………………………….. ………….29
2.1Issuesto be resolved ………………………….. ………………………….. ………………………….. …………29
2.2Working Methodology ………………………….. ………………………….. ………………………….. ……..30
2.2.1. Steps towards the success of the project. ………………………….. ………………………….. …..30
2.2.1Theories, methods and instruments used ………………………….. ………………………….. …..32
2.2.2Technologies, experiments and test used ………………………….. ………………………….. …..32
3CONCEPTS AND INITIAL DESIGNS ………………………….. ………………………….. ……………….. 35
4MODELLING THE ROBOT ………………………….. ………………………….. ………………………….. …..47
5CREATING THE CONTROL ENVIRONMENT ………………………….. ………………………….. ….49
5.1Arduino………………………….. ………………………….. ………………………….. ………………………….. 49
5.2Processing ………………………….. ………………………….. ………………………….. ………………………. 54
5.3Establishing connection ………………………….. ………………………….. ………………………….. …….56
6MAKING THE FIRST MOVEMENTS ………………………….. ………………………….. ……………….. 59
6.1The servomotors ………………………….. ………………………….. ………………………….. ……………… 59
7BUILDING THE ROBOT ………………………….. ………………………….. ………………………….. ………63
8TESTING AND TROUBLESHOOTING ………………………….. ………………………….. …………….. 67
9SYNTHESIS OF THE FIRST THREE MAJOR CHALLANGES IN THE PROJECT ………..69
10CONCLUSIONS ………………………….. ………………………….. ………………………….. …………………… 71
11TABLE OF FIGURES ………………………….. ………………………….. ………………………….. …………… 73
12BIBLIOGRAPHY ………………………….. ………………………….. ………………………….. …………………. 75
13APPENDIX ………………………….. ………………………….. ………………………….. ………………………….. 77
13.1For Arduino: ………………………….. ………………………….. ………………………….. ……………….. 77
13.2For Processing sketch ………………………….. ………………………….. ………………………….. ……79
13.3For Processing gui ………………………….. ………………………….. ………………………….. ………..80
Lucrare de licen ță
Robotică
Lucrare de licen ță
Robotică
7
FOREWORD
I raised my hands as the teacher was listing the available thesis titles asI heardArticulated
Arm. I was excited for I was dreaming of building a mini robot that could mimic a human gestures
since the very first days I stepped in the university.
Later, as we were discussing about the details and requirements of the project, my teacher said
that it would be nice if this could be an educational purpose robot, to have it in the laboratory for the
students to play with. I remembered tha t I haven’t touched an actual robot until the third year of study
so naturally I said yes, it will definitely be a simple, but sturdy enough robot to behandled byall kind
ofstudents.
And so the id ea was born, I had the tools, materials and knowledge necessary to create a robot
that can help the younger students in visualizing the main components of a robot and how they work,
but also to have the freedom to touch it, play with it, without the risk of damaging a pricey robot.
Lucrare de licen ță
Robotică
8
Lucrare de licen ță
Robotică
9
ACKNOWLEDGEMENTS
I would like to take this opportunity to thankall of the beautiful people who have helped me,
in a way or another, throughthese long years of study.
First of all, I would like to say thanks to my famil y for giving me the moral and financial support
I neededthroughthe years, without failure or judgement. Big thank s toyou!
Another big thanks goes out to my brother Nandor for his help and tips he offered during the
project. Thank you!
I would also like tosay thanks to all the teachers who have helped me in becom ing a better person,
who shaped my way of thinking andlearning, teachers who I could look up to. Than k you!
Special thanks go tomy leading teacher SL. Dr. Ing. Mihai Steopan for all his time and help he
offeredme during the creation of this thesis. Thank you!
Lucrare de licen ță
Robotică
10
Lucrare de licen ță
Robotică
11
REZUMATUL LUCRĂRII DE LICENȚĂ
Scopultemei de cercetare propuse
Scopul temei de cercetare propuseeste realizarea unui brațarticulatin 3D care apoi sa fie
creat si practic in scop educa țional.
Obiectivul general
Amdorit să creez un robot care să replice mișcareaunui braț uman dar totodată să fie ș i
simplu, ușor de asamblat și de controlat chiar ș i destudenți.
Obiective specifice
Direcțiamajora a fost crearea unui robot serial acționatelectric din materiale simple
Metodologie/Abordare/Proiectare
Modelarea 3D s -a realizat in Catia, programarea controllerului in Arduino iar crearea interfeței
in Processing. Unele parțicomponente sunt printate 3D.
Rezultatele majore
Avândin vedere bugetul limitat si structura simplista am ales ca material principal al r obotului
sa fie o carcasa de CD -Rom,câtevarotidințatedintr-o imprimanta veche si servomotoare obținute
de la domnul profesor.
Implicațiide altă natură
Cel mai mare impactva fi asupra studențilorcare, văzândstructura unui robot in mod
simplificat, îșivor crea o idee mai buna despre componentele si modul lui de funcționare.
Originalitatea/valoarea
Acest robot a fost conceput din dorințade a creste gradul de implicare a studențilorinlucrările
de laborator având șansade a manevra un robot încădin primii ani, nu doar de a -iadmira.
Lucrare de licen ță
Robotică
12
Lucrare de licen ță
Robotică
13
SUMMARY OF THE BScFINALDEGREE PROJECT
Project scope
The scope of this project is to create a 3D model of anarticulated arm, that is to be created
later also practically for educational purposes.
General objective
I wanted to create a robot that could mimic the human arm but also to be simple, easy to
assembleand control even by students.
Specific objectives
The major objective was a creating an electric actuated serial robot out of simple materials.
Methodology/Approach/Design
The 3D modelling was done in Catia, the controller programming in Arduino andtheuser
interface in Processing. Some parts were 3D printed.
Major results
Taking into consideration the limited budget available, I have chosen the main materials to be
out of an old CD-ROMcase, some gearing out of an old printer and the servomotors obtained from
the teacher.
Other implications (e.g. social, scientific: if it is applicable)
The greatest impact will be upon the students, who, seeing the simplified internal structure of
the robot, will have a greater understanding of the main components and their functioning methods.
Originality/value
This robot was conceived out of the need to have a greater involvement of students in the
laboratories, having the chance to maneuver the robot, not only to admire it from distance.
Lucrare de licen ță
Robotică
14
Lucrare de licen ță
Robotică
15
CHAPTERS RESUME
In the first chapter I will present a brief introduction of the domain in which my project i s
situated, with a few highlights of the current situation in this area.
In the second chapter I will present my plan and its main steps trough which this project will
be finished.
In the third chapter I will present the initial phase of the project, whi ch is the development of
the concepts.
In the fourth chapter I will present the modelling of the final concept in a 3D design
environment.
In the fifth chapter I will present the program to control the robot and its functionalities.
In the sixth chapter I will present the first movements achieved by the robot
In the seventh chapter I will present the actual robot and its movements.
In the eights chapter I will present some issues that popped up during the testing and
troubleshooting of the robot.
In the last chapter the source code is given for both Arduino and Processing.
Lucrare de licen ță
Robotică
16
Lucrare de licen ță
Robotică
17
GENERAL OBIECTIVES
The general objective of this project is to develop, model and create a robot that is capable of
replicating a human arm gesture. This will require an in -depth study of the human arm, its main
components like actuators and controls. Keeping that in mind, a similar robot is to be developed, with
similar mai n components.
First off, just like a human arm, this robot needs a l ightweight structure, but strong enough to
be able to achieve thedesired goals of moving an object . This will require a material analysis,
choosing the best materials keeping in mind also the allowed budget. The 3D design will help creating
a realistic model ofthe robot, troubleshooting possible problems before the actual robot will be
constructed.
Our robot will also need a controller, just like the humans need a brain to control the muscles.
The teacher was kind enough to lend me and ArduinoLeonardo controller board, with the help of
which, Iwillbe able to control the motors.
Actuators, just like our muscles generate the power to move our pa rts, so does our robot need
the servomotors to move its articulations. Once again, my kind teacher helps me out with 5 small,
cheap servomotors that will suit the robot just fine. But having already the specific motors means that
Ihave to design the struc ture light enough for the servomotors to be able to move them. That will be
achallenge to overcome.
The robot should be simple,easy to control with intuitive interface so that all students can
control the robot after just a few minutes of looking at i t. It is said that student will always find a way
to break stuff, so the design should minimize their chances of breaking it.
These would be the main objectives set at thebeginning of the project, but just as every project
changes during development , Ibelieve so will mine.
Lucrare de licen ță
Robotică
18
Lucrare de licen ță
Robotică
19
SPECIFIC OBIECTIVES
This robot will have some specificobjectivesconcerning the movements, material, user
interfaces and many more.
Since it is a general objective for this robot to be an educational purpose robot, it is a specific
objective for the robot to be able to be disassembled andassembled many times by the students,
keeping in mind that they are not trained technicians . Thismeans that the parts must be solid and
sturdy, it will alsohelp to have as many standardized parts as possible, reducing the cost of spare
parts.
Counting the number of possible movements of the humanarm, I deduced that at least 5
actuators are needed t o be able to replicate the majority of the movements of the human arm. This
means that at least5 servomotors will be needed, one for each joint.
The user interface will have to allow to control each servomotor separately, to save a given
position, loa d a set of positions, play back a set of positions, precise control of the servomotors , at
least a high and a low positioning speed , a big stop button and the ability to set an initial starting point
within a program. All of this within a nice and simple i nterface.
Another specific objective for the robot is to have on open source programming platform ,
granting the legal freedom of modifying and sharing theirown code . This will be done using Arduino
and Processing, both of them being open source platforms .
Lucrare de licen ță
Robotică
20
Lucrare de licen ță
Robotică
21
Part I
General aspects
1.INTRODUC TION
1.1Basics regarding the project domain
First of all let us define bionic. The Merriam -Webster dictionary defines Articulated as
„ acomprising or made up of artificial body parts that enhance or substitute for a natural biological
capability ” which means, regarding our robot, that it is an artificial body part like mechanism that has
better capabilities than a human arm and/or can substitute a human arm.
Well, our coal was not to substitute a human arm, but to have the same capabilities, for now.
I can only hope that in the future, the next generations will have the ability to create real prosthesis
for disabled people.
I find it easier to present the basics of my project if I c onduct a comparison between a real
human arm and my articulated arm.
Let usanalysesthe human arm and find out how it works and what its main components are.
Looking at the let’ssay mechanical part of the arm, we find that the main components are the b ones,
muscles and tissues. The bones have the role of supporting the structure, the muscles to act upon the
bonesgenerating movements andtorque and the tissues for protection against the environment and
to house the thousands of nerves that act as sensor s. Of course there are many more components that
make up the arm but these are the most important ones that we are interested in, in order to be able
conduct a real comparison.
It is all nice and clear what the arm looks like but wemustaskanotherimportantquestion,
that is why and how does it work? The answer is not that simple because it is not found entirely in
the arm. Another part, an external one, comes in play when we want to find out why andhow it works.
Thenervous system is responsible for controlling the muscles. The nervous system can be divided
into two major divisio ns: central nervous system , and theperipheral nervous system .
The central nervous system contains the brain and the spinal cord and the peripher al nervous
system contains the sensory nerves and the motor nerves. The nerves act like electric conductors that
deliver signals between differentbody parts.
The motor nerves that run from the brain through the spinal cord down to the muscles deliver
thesignalsfor movement to the arm, respectively the muscles, while the sensory nerves deliver the
signal the opposite way, from the sensors found in the tissue, throughthe spinal cord back to the brain
as seen in figure1.1.1.(Krieger, 2009)
Lucrare de licen ță
Robotică
22
Figure1.1.1 The Nervous System
Now, back to the question of how it works, if we consider a simple act of touching an object,
first the sensors in our tissues send a signal through the sensory nerve to the brain that something is
right next to it. O ur brain takes a decision based on this information and others gathered from our
eyes, nose, and taste budsand sends a signal trough the motor nerves to the muscles to take action.
The muscles in our arms are actuated by the receivedelectric impulse and so they contract or
relax. We can achieve a controlled motion of our arm if we send signals only to given muscles, and
relaxing the others. This is how one can grab safely a cup of coffee, without spilling it all over himself.
Lucrare de licen ță
Robotică
23
Sincethearticulated arm is supposed to look and move like a real arm, we need to have the
samearchitecture in our robot. We start by replacing parts after parts with mechanical and electrical
analogies of what we saw as biological.
Having all these in mind, we can see that we have an actuating group and a control group.
If I want to compare it to the robot, we see that we have present the same groups. The control group
in our robot represents the Arduino controller combined with the programmed software that runs on
it, having the analogy of the brain and spinal cord and the multitude of cables that connect the motors
to the controller that represent the nervous system . The actuating group has the servomotorswhich
represent the muscles.
To continue our comparison, leaving behind the architectural points of view, we have to
analysesthe working methods of each part in order to understand howthey work.
An important aspect of the functionality of both arms is the ability to learn new things .
Both arms are capable of learning and memorizing new thing or positions but there area few
differences that willset them apart, thus proving that one is better at some aspects t hanthe other.
First, let us consider the ability to remember a given position, th e human brain will have only
a vast but limited number of positions, while the controller will outperform a human brain in this
respect, being able to precisely memorize almostanunlimited number of positions.
If we consider repeatability a key factor, we can see that our robot wins this domain also,
being able to memorize the exact angles soeach servomotor, it will be able to reproduce the exact
movements as many times as need.
If we consider precision a key factor, in our case, I would s ay they are on par, the robots
precision is greatly influenced by the characteristics of the servomotor.
The user interface was designed with these main tasks in mind, respectively to be able to
controleach servomotor separately, to save they positions, add, edit and combine already saved
positions and play them how and whenever we like it.
As I presented some key factors, we can observe that the robot is indeed an enhanced version
of a human arm, so one can ask the question if so, why do we have our b iological arm the way we
have it and not the way I designed it.I believe the answer is that we have to look beyond the
performance characteristics and look at the whole system, which we are.
Lucrare de licen ță
Robotică
24
1.2Highlights on the technological developments in the fi eld of the project
Teach-robot
The Teach -robot is a 5 -axis robot, specially developed for educational purposes like mine .
The controls can function independently, and the drives and encoders are accessible. The parts are
madeout ofglassfiberreinforced plastic. Replacement of parts is easy and doesn’ttakemuch time.
The Teach -robot is maintenance free robot suitable for children and or students .
The (blue) Teach -robot has its "own" bus system and the (orange) Teach -robot Plus ha s the
Modbus system as seen in figure1.2.1 and figure1.2.2.
Technical specifications :
Numberof axis: 5
Number of drives: 6
Type of drives: DC -motors
Weight 2,5kg
Work area:
Vertical reach: 550 mm
Horizontal reach: 450 mm
Turning circle: 270° (www.roboticstrends.com/)
Lynx Robotic Arm
This robot arm is amazing. It delivers accurate, fast as well as repeatable movements. It hasa
single plane shoulder, elbow, wrist movement, base rotation, an optional wrist rotate and a functional
gripper. To assemble and operate the robot, you will need RIOs and for SSC -32 servo controller, a
Figure1.2.1Teach-RobotOrange Figure1.2.2 Teach -Robot Blue
Lucrare de licen ță
Robotică
25
windows program. These things are included in the kit.
The arm is madewith Servo Erector Set components. The expandability and flexibility of this
arm is outstanding. The kit features aluminium tubing and hubs, black anodized aluminium brackets,
precision laser -cut Lexan components and custom i njection molded components. This system is also
cheaper than its counterparts. (www.roboticstrends.com/)
Figure 1 represents the Lynx robot.
Figure1-1Lynx1
Lucrare de licen ță
Robotică
26
Robotic Arm Trainer
Riding the wings of the award winning Robotic Arm Trainer, OWI has made robotic arm
technology more affordable without compromising quality. With Robotic Arm Edge, command the
gripper to open and close, wrist motion of 120 degrees, an extensive el bow range of 300 degrees,
base rotation of 270 degrees, base motion of 180 degrees, vertical reach of 15 inches, horizontal reach
of 12.6 inches, and lifting capacity of 100g. Some of the added features include a search light design
on the gripper and a sa fety gear audible indicator is included on all five gear boxes to prevent any
potential injury or gear breakage during operation. How does this equate to fun? Total command and
visual manipulation using the 5s: five switch wired controller, five motors, an d five joints. Night time
play is possible and extended life on the gearbox to prolong your control and predictions of the robot’s
behavior. (www.roboticstrends.com/)
Figure1-2OWI2
Lucrare de licen ță
Robotică
27
Robot Arm Bartender
Ever wish you had a robot that could doll out the shots? The future of partying is here with the Robot
Arm Bartender! Serve up drinks in style, and impress your guests with the press of a button! This
project utilizes a RobotGeek Snapper Arm with a Pumping Station to move some delicious liquids
from container to glass! We will be using the Arm Link Software to program the arm's movements.
(www.roboticstrends.com/)
Figure1-3Bartender3
Lucrare de licen ță
Robotică
28
Lucrare de licen ță
Robotică
29
2PROJECT PLANNING
2.1Issues to be resolved
At the beginning of this project, we have to determine the main issues that will appear.
But in order to determine the appearable issues, we hav e to determine the key parameters of our
project.
So we have to agree upon a main structure typeof the robot and select a controller.
Regarding the structure, we have to determine the main characteristics regarding the
architecture type whether a parallel or serial robot is being built, the number and type of joints in said
architecture ,the order of joint and thisdistances from one to another, the material of the frame and
its preliminary dimensions. Selecting the right bearings a ndscrews will be another issu e that will
have to be overcome.
Regarding the actuators necessary for this project, we have to chooseanddimension the
motors that will be able to move our robot and its parts, the gearing to transfer the motion from the
motor to the part, the power source for the motors and the cable type and lengths.
Regarding the controller, we have to chooseacontroller that allows to control in real time all
our needed motors at once, which can be programmed to facilitate all our nee ds for the well-
functioning of the robot control.
Documentation for all our electronic components will be necessary in forehand, allowing us
tofamiliarize ourselves with the programming language of the controller, the technical parameters of
the motors and the controller, and their overall compatibility has to be checked.
The project will have to be carefully planned regarding the timeframe, eachpart ofthe project
will have to have a finishing date in order to have a continuity in the project. Checkpo ints will have
to set up on specific dates to compare the actual standing to the projected one.
Lucrare de licen ță
Robotică
30
2.2Working Methodology
2.2.1.Steps towards the success of the project.
This project will be completed using 5 main steps .
In thefirst step we will have to create a sketch of out robot regarding thearchitecture type,
chose the joint types and position them on the sketch. If we agree upon a sketch we will create a 3D
model in any chosen 3D modelling software. At this stage modificat ions will be done if some issues
will arise that were not foreseen in the sketch. A structural analysiswill be generated on the structure,
tocheck for possible faults in the model and determine the w eights of the parts.
In the second step we will addresstheactuating section of the robot. We will have to choose
the appropriate motors for each joint, making sure their power is enough to actuate the parts, size and
weight will also count. In the 3D model, we will position the motors on the structure and check for
collisions and if they fit well. The approximate positions of the connection cables will have to be
determined, so that they will not obstruct the free movements of the arm.
In the third step we will focus on the controller. We will have to select a controller that will
be able to satisfy our necessities. The controller must be able to control all motors and have connection
possibilities to a computer. We have to establish a connection between the controller and the
computer. We will make a list of the options necessary for the fullcontrol of our robot. After we
familiarized ourselves with the programming language needed by the controller we will write the
control softwa re with all the options in the before generated list. We willhave to test out our software
with the motors connected to the controller. If problems arise, we will troubleshoot our software until
all the functions work properly.
The fourth step is allocated to the practical part of our project and that is buildin g the robot
structure itself. We will have to analyzeall the required components and chose the right methodfor
assembly. If we are satisfied with the looks of our structure we can print out in 3D our complex parts
or manufacture them. After all our parts are completed we can assemble them to have the complete
robot. First assemble the mechanical structure of the robot, then attach the motors and the cables.
The fifth and final step will be testing all the functionalities of the robot and fixing the issu es
found, if there will be any.
Lucrare de licen ță
Robotică
31
Lucrare de licen ță
Robotică
32
2.2.1Theories, methods and instruments used
In this project we need a basic understandi ng of mechanics, electronics, javaprogramming
language and 3d modelling software.
For research purposes I used some books from the library , asked the help of my teacher and the
almighty internet.Iusedmechanics to analyzeand define the joint types, calculate the right motors
and design the lightest structure for my robot. The electronics knowledge came in handy when I
needed to connect al the motors to the controller . My programming knowledge was helpful when
creating the control panel for the robot and the modelling of the structure was easier because of our
exceptional training in 3D modelling throughout these years .
I started the project with a pen and a paper for sketches and drafts using my ima gination and
engineering senses. I transferred the newly born ideasin a 3D model using the modelling knowledge
accumulated in t hese years of study, on a computer. Print ed out some parts with the help of a 3D
printer and assembled the structure with the help of screwdrivers and wrenches. Some parts were
made out of old household electronics cases, which were cut using an angle grinder, some parts were
bored using a drillingmachine.
2.2.2Technologies , experiments and test used
Throughout the project I used various technologies in achieving thedesired results. If I was
to start to list the softwarefrom the beginning, I would start with the 3D modelling software, namely
Catiapublished by Dassault Systems, than it would followArduino, theproprietary Arduino
programming environment for programming the controller andfinallyfor the user interface of the
control panel I used the Processin gsoftware, which is can communicate with Arduino. All these
software will be presented later on, in their respective chapter.
Lucrare de licen ță
Robotică
33
Part II
Personal contributions
Lucrare de licen ță
Robotică
34
In this part I will present you the sketc h of the main steps that I will have to follow in order to
finish my project. It is quite simple, I will start by drawing a sketch with the desired design on a paper.
If my teacher agrees with the concept design, I will transfer it on the computer using a 3D
capable drawing software like Catia. Moving on, the control part of the project must be created,
knowing the number of motors I will have to control and all the needed functions, a profound
documentation will be needed. Thi s control panel will be test edwith the servomotors before the
supporting frame will be assembled. If all the needed functionalities will be achieved I will continue
to the next step, that is assembling the frame of the robot.
After the assembly, a testing process will be mandatory , the test al the functionalities and
limits of the robot. If, during the construction of the frame, a new idea, or even a problem will arise
that will lead to changing the structure of the robot, the 3D model of the robot will also be updated
with the new est solutions.
I created this flowchart seen in figure 2-1 to aid me during this project and to have an overview
of the things I have to accomplish.
Figure2-1Project workflow
Lucrare de licen ță
Robotică
35
3CONCEPTS AND INITIAL DESIGNS
Qualica QFD is a toolkit designed to help you organize QFD projects, analyze QFD results,
and create and distribute QFD documentation. Although primarily designed to support QFD, it can
be used for many other methods as w ell, including but not limited to Benchmarking, Target Costing,
Value and Risk Analysis and Design For Six Sigma
In this project I will use it to aid me in the analysis of the project, and to have a comprehensive
documentation.
First, the CTQ table must be completed with the key measurable characteristics of a product
and the VOC table that indicates the specifications the customer needs in the product as shown in
figures 3-1 and 3-2.
Figure3-1VOC
Figure3-2CTQ
Lucrare de licen ță
Robotică
36
In the next step the correlations between the two tables are made to obtain the relationship
between each elements. After adding a correlation value for each pair of elements we obtaining the
House of Quality as shown in figure 3 -3 with some statistics that will be useful later on.
Figure3-3House of Quality
Lucrare de licen ță
Robotică
37
If we have successfully identified all the components of our project, we move on to the next
step, that is the design step. In this step we fill in all the constraints and function tables as shown in
figure 3-4 and 3-5.
At this stage we can complete the House of Quality including the VOC table with respect to
the desired functions found in the Functions table, giving again each pair a value of correlation
strength. This step is repeated with the next House of Quality table, where we comp are the correlation
between the CTQ and Function tables. The new QFS tables can be sorted by the importance factor as
shown in figures 3 -6 and 3-7.
Figure3-4Constraints
Figure3-5Functions
Figure3-6QFD1*
Lucrare de licen ță
Robotică
38
Figure3-7QFD2
These tables will show the most important functions and characteristics that we will need to
focus later on.
The next step will be of creating a few concepts that could possibly have the majority o f the
needed characteristics. In this step we will try out different robot architecture types, with different
actuating solutions. These new concepts will be that put in the table 3 -1where they will be evaluated
with respect to their performances. After th is evaluation, the best solution will be selected. This
solution will be the one with which the project will continue. In our case the electric actuated robot
will have the necessary characteristics to fulfill the clients’ needs.
Next is the optimization phase where we will list all the elements needed in the project.
These will go in the design element table as shown in figure 3 -8.
Lucrare de licen ță
Robotică
39
Table3-1Concepts
Now it’s time to define the correlation between each part of the project and how important
that element is to achieving a fu nction. This is done by giving each pair a value from 0 to 9 that
represents how strong the connection is as shown in figure 3 -9.
Figure3-8Design elements
Figure3-9DE over function
Lucrare de licen ță
Robotică
40
There is a table called BOM that stand for bill of materials, in which all the elements are listed
and we have to fill out the number of pieces we need in the project and their prices, also other
information like the supplier, material and manufacturing cost. This is shown in figure 3 -10.
Now that we h ave the prices figured out, we can find out how much a particular function
would cost. This information can be found back in the VOC prioritization table in phase 1 and it looks
like figure 3 -11.
Figure3-10BOM
Figure3-11VOC Priority
Lucrare de licen ță
Robotică
41
Another useful information that we can find is how important any given part of the
project is with regard to their cost. Based on this table wecandecide if it is worth the implem entation
of that part or another solution will be ne cessary.In the figure 3 -12 is shown an example regarding
our project parts.
Initially, each project is given a cost bracket in which we need to fit in. for this, we can
generate tables 3 -2 and 3-3.
Figure3-12DE Importance
Table3-2DE over Cost
Lucrare de licen ță
Robotică
42
Inthese two tables we can see each part or function listed with detailed information regarding
their costs, cost percentages with respect to their importance and if the fir in the target zone or not.
This is an overview of the costs of the project, based on this we can select parts or functions tha t are
not profitable and bring changes or new solutions.
Finally for a better understanding of the projects situation we can generate 2 charts that
highlight the function target costs and the parts target costs. The closer the functions or parts are to
the diagonal the better. As we can observe in figure 3 -13 and 3-14 there are part and functions that
are way more off the diagonal than others, for these we need to find cheaper or better solutions.
Table3-3Function over Cost
Figure3-13DE target Chart
Lucrare de licen ță
Robotică
43
Figure3-14Fn target chart
Lucrare de licen ță
Robotică
44
The first concept was created directly in a 3D environment, but ended up being abandoned. I
have realized that it had flaws that needed to be corrected fast. The frame was too thin and it would
be flamboyant at higher movement speeds. But the number and th e type of joints remained in my
mind. The first concept is shown in figure3-1.
The next concept was drawn on paper with another type of structure, which is of two parallel
sheet metal pieces fixed together creating a square. Being satisfied with the pr operties of this new
frame type, I added a base for that, doubled the squares and added the joints so I had a robot design
that had 5 DoF. The teacher agreed with my latest design so I went on creating it on the 3D
environment. The figures 3-2 tofigures 3-5 depict the sketches I have made with the Front and Side
views, the base and an early control panel concept.
Figure3-15First Concept
Lucrare de licen ță
Robotică
45
Figure3-17C2 SideFigure3-16C2 Base
Figure3-18C2 Front Figure3-19C2 Control Panel
Lucrare de licen ță
Robotică
46
Lucrare de licen ță
Robotică
47
4MODELLING THE ROBOT
The modelling of the robot was done in Catia, a well known 3D Design software. This
software was vey familiar for me, because I was tought how to use it in many courses during my
years in the university. The aquired knowledge was helpful ebcause it took me little time to create the
model from my early sketch. In this model I have det ailed the characteristics of the pieces, their size,
material and thickness. After these steps, I had the ro bot model but with no movement as shown in
figure4-13.
The next step was to go into the DMU Knematics module of Catia and apply the kin ematic
constraints for all the parts. I could now simulate the movements of the robot even before the actual
assembly. I could check for possible design flaws, pieces that could interfere with eachother and
correct them. It was really helpful when I needed to know tha angle of movements for each motor, I
had all that information in the simulator.
Figure4-12Joints
Figure4-3Axle1
Lucrare de licen ță
Robotică
48
Figure4-13Assembled Robot
Figure4-14Simulated
Lucrare de licen ță
Robotică
49
5CREATING THE CONTROL ENVIRONMENT
In this chapter I will present you the tools and methods I used in creating the control panel
form my robot. First, the controller that I used is an Arduino Leonard o, supplied by my guide teacher
and another software was also needed for real time control, called processing. In the following, I will
introduce soma basic information about Arduino and Processing.
5.1Arduino
Whatexactlyis Arduino? Well, according to their website (arduino.cc ):
“An open-source electronics prot otyping platform based on flex ible, easy -to-use hardware
and software. It’s intended for artists, designers, hobbyists, and anyone interested in creating inter –
active objects or environments. ”
In simplewords, the Arduino is a smallcomputer system that can be programmed with your
instructions to interact with various forms of input and output. The current Ardu ino board model, the
Uno, isverysmall in size compared to the human hand, as you can see in figure5-1.
Figure5-1Arduino Uno4
Even though it might not look like much to the new viewer , the Arduino system allows you
to create devices that can interact with the environment aroundyou. By using an almost unlimited ly
Lucrare de licen ță
Robotică
50
widerange of input and output devices like sensors,indicators, displays, motors, and more, you can
program the exact interactions requir ed to create a functional device. For example, peoplehave
created installations with patterns of blinking lights that respond to the movements of by passers , high
school students have built autonomous robots that can sensean openfire and extinguish it, and
geographers have designed solutions that monitor thetemperature and humidity and send this data
back to their servers via text message. In fact, you’ll find analmost infinite number of examp les with
a quick search on the World Wide Web .
Now let’smove on and explore the Arduino Uno hardware (in other words, the “physical
part’)in more detail and see what it has.
Let’s take a quick tour of the board . Starting at the left side of the board, you’ll see two
connectors, as shown in figure5-2.
Figure5-2The power connectors and USB5
On the far left is the Universal Serial Bus (USB) connector. This connects the b oard to your
computer for these reasons: to supply power to the board, to upload your program to the Arduino
board, and to send data to and receive it from a computer. On the right is the power connector.
Through this connector, you can power the Arduino with a standard mains power adapter. At the
lower middle of the boardis the heart: the microcontroller, as shown in figure5-3.
Lucrare de licen ță
Robotică
51
Themicrocontroller is thebrainof theboard. It is a tiny computer that contains a process or
to execute our program, includes various types of memory to hold data and instructions from our
sketches, and provides various waysof sending and receiving data. Just below the microcontroller
are two rows of sma ll sockets, as shown in figure5-4.
Figure5-4The power and analog pins7
The first row offers thepower connections and the meansto use an external RESET button.
The second row offers anothersix analog inputs that are used to measure elect rical signals that can
vary in voltage. Furthermore, the pins A4 and A5 can be used for sending information to and receiving
it from other devices. Along the top of the board are two more socketrows, as shown infigure5-5.
Figure5-5The digital input/output pins8
Figure5-3The ATMEGA328P microcontroller6
Lucrare de licen ță
Robotică
52
Socketsnumbered from0 to 13 are digital input/output pins. They can either detect whether
or not an electrical signal is present or generate a signal when needed . Pins 0 and 1 are also know n as
theserial port , which is used to send and receive data to other devices, such as a computer via the
USBcable. The pins labeled with a tilde signs(~) can also generate a varying electrical signal, which
can be useful for such things as creating lighting effects or controlling in our case the servomotors .
Therearealsosome very useful devices called light-emitting diodes (LEDs) ; these very tiny
devices light up when a current passes through them. The Arduino board has four LEDs: one on the
far right labeled ON, which indicates when the board has power, and three in ano ther group, as shown
infigure5-6.
The LEDs that arelabeledwithTXandRXlight up when data is being transmitted or received
between the Arduino and attached devices via the serial port and USB. The LLED is for your own
use (it is connected to the digital I/O pin number 13). The little black square part to the left of the
LEDs is a tiny microc hipthat controls the USB interface that allows your Arduino to send data to and
receive it from a computer, but you don ’t generally have to think about it.
Figure5-6The onboard LEDs9
And, finally, the R ESET button asis shown in figure5-7.
Figure5-7The RESET button10
Lucrare de licen ță
Robotică
53
As with a normal personal computer, sometimes things will go wrong with the Arduino, and
when all else fails, you might need to r eset the system and restart the board . This simple RESE T
button on the board ( figure5-7) isused to restart the system to solve these problems.
One of the great advantages of this controllersystem is its ease of expandability —that is, it ’s
easy to add more hardware for added functions. The two rows of sockets along each side of the
Arduinoboardallow the connection of a so-calledshield, another circuit board with pins that allow
it tobepluggedinto the Arduino. For examp le, the shield shown in figure5-8 contains an Ethernet
interface that allows the Arduino boardto communicate over networks and the Internet, with plenty
of space for custom circuitry.
Notice how the Ethernet shield also has rows of sockets on the side? These enable you to
insertmanymore shie lds on top. For example, figure5-9 shows that another shield with a large
numeric display, temperature sensor, extra data sto rage space, and a large LED has been attached.
Note that you do need to remember which shield uses which individual pins to ensure that an
overlapping willnot occur. You can also purchase completely blank shields that allow you to add
your own circuitry.
The companion to the Arduino hardware is the software, a collection of instructions that tell
the hardware what to do and how to do it. Two types of software can be used: The first is the integrated
development environment (IDE) and the Arduino sketch you create yourself.
The IDE software is installed on your personal co mputer and is used to compose and send
sketches to the Arduino board.
As shown in figure5-10, the Arduino IDE looks like asimple word processor.
Figure5-9The Ethernet Shield11 Figure5-8Display shield12
Lucrare de licen ță
Robotică
54
The IDE is divided into three main areas: the command area, the text area, and the message
window area.
5.2Processing
“In the previous chapters, you have seen all about using Arduino as a standalone device. A
program is uploaded onto the boardand it carries out thetaskuntil it is told to stop or is shut down.
You arecontrolling the Arduino by simple, clear, electrical signals, and as long as there are no outside
influences or program errors, an d if the components keep up , the Arduino reliab ly repeats the
program. This simplicity is veryuseful for many applications and allows the boardto not only serve
as a great prototyping platform but also work as a reliable tool for interactive products and
installations for longer periods , as it alread y does in many museums.
Although this simplicity is admirable , many applications are outside the rangeofthe
Arduino ’sabilities. One of these (at least for now) is running programs . Although the Arduino is
fundamentally a computer, it ’s not able to run comparably large and complex computer programs in
the same way as your home computer . Many of these programs are highly specialized depending on
the taskthey were developed for . You could benefit immensely if only you could connectthis
software to the real world in the same way your Arduino can.
Because the Arduino can connect to your computer and be controlled over the serial port,
other programs may also be able to do this, in the same way that your computer talks to printers,
scanners, or other perip herals.So by combining the physical world interaction capabilit ies of your
Arduino with the processing powerof your computer, you can tailor your projects with a high variety
of inputs, outputs, and processes.
Many specific programs are made for specifi cjob, but until you want to specialize , it’s best
to find software that you can experiment with —that is, be an all in one tool t he same way that your
Arduino is for the physical world.
An Arduino boardcan communicate over its serial port as a serial d evice, which can be read
by any program on the computer . Many programs are available, but Processing is one of the most
popular.
Figure5-10the Arduino IDE13
Lucrare de licen ță
Robotică
55
Processing has an enormous rangeof applications fromvisualizing data to creating generative
artworkorto performing motion capture using your webcam for digital perf ormances. These are just
a few examples , but you can find a varietyof exampl es on the Processing exhibition.
Processing is based on Java-alanguage that looks very similar to C++andC (on which
Arduino code is b ased). It is available for all major OS -es likeWindows, Mac OS, and Linux. Ben
Fry and Casey Reas developed Processing to allow artists, designers, or anyone to experiment with
code, rather than just developers and engineers.
In the same way that real life ideasare sketched out on paper, Processing i s designed to sketch
software. Your p rograms can be quickly developed and a dapted without a huge waste of time.
Processing is a text -based IDE itlookssimilar to that of Arduino (in fact, it was borrowed by
the Arduino team when the Arduino integrated development environment [IDE] was developed ). A
window displays the Java applet that programcreates. As with Arduino, the strength of Processing is
thegreatcommunity that shares and comments on sketches, helpingthe many other users to benefit
from avarietyof creative solutions. Processing is open source and allows users to modify the software
as well as use itfreely.The Procesing IDE is shown in fig ure 5-11.
Figure5-11Processing GUI
Lucrare de licen ță
Robotică
56
5.3Establishing connection
After a brief documentation, I started creating my first sketch in A rduino. First I had to declare
the servomotor names I will use, some variables and attach the servos to corresponding pins. This is
done in the first part of the code, the setup part. Then there is a loop part that will keep running
continuously until the c ontroller is unplugged. In this part the Arduino will have to transfer the
received information from the Processing application to the servomotors.
A serial connection is established through a USB cable between the Arduino board and the
computer, on whic h the Processing program is running.
The reason why I chose to use processing was that I wanted to control my servos in real time,
but Arduino could only run a limited predefined program in loops. So another application was needed.
In processing I created a user interface with the help of a graphic library toolset called G4P as
represented in figure 5 -12.
In this tool I created a frame in which I inserted eight sliders,two text fields, and some buttons. Each
slider has a determined minimal, and maximal va lue, to prevent clashing of the robot arms.
The main function of the resulted control panel was to be able to control each servomotor
individually with the help of the slider and the + and –buttons for precise control. The other
functionalities of the c ontrol panel include a “Save position “ button, that will save the current position
of each servomotor into a text field. The values in the text field can be edited. With this, a complex
program can be recorded.
Figure5-12G4P GUI Builder
Lucrare de licen ță
Robotică
57
Another function implemented in the control panel is that of a play button. When pressed, it
will play back all the values from the text field. The speed of the playback can be adjusted trough two
sliders, one for the delay between each value and one for the delay between each line.
In case the program is longer, another slider can set the starting line of de playback, this results
in less time wasted in replaying a set of movements.
If the program is saved in a .txt format, it can be loaded later into the current list, thus creating
the possibility of having predefined programs for specific movements.
Another implemented function is the stop function, which should be able to stop the robot
when replay ing a set of commands, but due to the nature of the program, that of working in a single
thread, it cannon get out of the loop until it finishes all the commands. The solution to this is to have
a hardware button connected directly to the power supply of t he Arduino or connected to the Arduino
board. Unfortunately I did not have enough time to overcome this problem, as it was not the priority
listof solutioning it.
A last thing that was implemented was a Home button, so the robot will have a known positio n
to go, when the button is pressed as shown in figure 5 -3.
So, the code works as follows: when the sliders of the servomotors are moved, their slider
number, followed by a delay and the value are sent to the Arduino board. The controller reads the
slider number and assigns the following value to its respective ser vomotor.
Figure5-13Control Panel
Lucrare de licen ță
Robotică
58
That value is than sent to the servo, which will move to that position. But because the sudden
changes in the values of the new position, the servos would undergo high shocks, so a smoothing of
the movements was necessary. This was obtained by inserting a code that would not send the new
value directly, but adding a smaller value until the new value is reached. This result is a smoother
movement of the arms, with smaller shocks a controlled acceleration.
Lucrare de licen ță
Robotică
59
6MAKING THE FIRST MOVEMEN TS
In this chapter we will take a look at the servomotors I used in the project.
6.1Theservomotors
Aservo(short for servomechanism ) contains an electric motor that can be commanded to
rotate to a specific angular position. For example, you might use a servo to control the steering of a
remote control car by connecting the servo to a horn, a small arm or bar that the servo rotates. An
example of a horn is one of the hands on an analog clock.
It’s easy to connect a servo to an Arduino because only three wires are involved. The darkest wire
connects to GND, the center wire connects to 5 V, and the lightest wire (the pulsewire) connects to
a digital pin. If you’re using a different servo, check its data sheet for the correct wiring.”
In this project I ha d to use the servomotors provided by my guide teacher due to the low
budget. These servomotors are small, not powerful but I hope they can move around the arms a little.
Therewere2 types of servomotors, one small and one larger as in figure 6 -2.
Thesmall one was a PowerHD HD 1160A with the specifica tions shown in the table 6 -1.
Table6-11160A
Lucrare de licen ță
Robotică
60
The larger Servomotor was a PowerHD 6001HB
For a quick calculation, I know I have 3 small and 2 larger motors, I am interested in the size
of the power supply thatneedsto power all the motors at once. Looking at the table I candetermine
that the stall current for the small one is around 750mA for 5 V supply, and that the stall current for
the larger servomotor i s 1500mA, it results that at I will need a power supply of at least 5250mA as
shownin 6-1.
6-1Equation
3∗750+2∗1500=5250
Knowing these values, I can start creating the circuit in order to connect everything together.
I found a website called circuits.io that allows creating and testing circuits in the browser.
So I created my circuit that looks like in the figure
Figure6-1Connection schematics
Table6-26001HB
Lucrare de licen ță
Robotică
61
In this figure it can be observed that the power supply of 4 batteries totaling 6 Volts is
connected to the side rails of the breadboard. To the same breadboard are then connected the
servomotors with their respective connectors, matching the polarity of t he power supply.
The Arduino board is connected to the breadboard only with one connector, from the negative
of the power supply to the ground of the controller, in order to have a common reference point.
The servomotors were left with one connector f ree, these connectors will be connected to the
Arduino board’sterminal, the ones that support PWM.
I have needed a separate power supply because the Arduino board is limited to 500mA when
connected through a simple USB cable and to 1000mA when a separat e power supply is used for the
Arduino. Since my servomotors require over 5000mA, this was the solution. Now that the circuit is
completed, I can start putting the pieces together.
Figure6-2Servomotors
Lucrare de licen ță
Robotică
62
Lucrare de licen ță
Robotică
63
7BUILDING THE ROBOT
In this chapter I will present the process of creating this robot.
It was mentioned before that the budget was low on this project, in fact it was actually obsolete, I had
to search for materials that I have already owned.
The first thought was to create the main frame out of plastic materials, like rulers but this idea
was quickly dismissed because it was too flamboyant.
Even though the metal is heavier that plastic, it was my only hope. If I cou ld find a sheet metal
plate that was hardened, I could use it perfectly. So I searched around and found an old CD -ROM
case laying around that I could spare. It wasn’t perfect but it was good enough. The plate was hardened
so it was quite hard to bend.
I stripped down the CD -ROM and took out the case and some gears. I checked with the sketches and
drew the laid out versions of the parts on it with the intention of cutting t he pieces out and folding
them to the desired forms.
I cut outthe pieces with the help of an angle grinder.
Safety was an important factor in this part of the project, I used gloves and protection glasses
duringthe whole time.
Figure7-1Oold CR-ROM case
Lucrare de licen ță
Robotică
64
Now that I had all the pieces I, started folding them to they required forms. After this part, I
had to drill the holes of the parts to join them together. I found that the easiest way to do it is by
riveting them together. The parts that needed freedom to rotate were riveted loosely and the rest were
fixed together. Some parts, like the bearings needed housing. This was provided by 3D printed parts
that one of my colleagues agreed to print me in exchange for a copy of the control software I used in
this project.
At this moment I had the main frame of the robot, but still no servomotors on it. So, the next
step was to mount the servom otors on the frame and fix their shaft to the required frame. Some holes
were drilled to aid in fixing the servos tight and a ll the connections were made so each servomotor
could move its designated part. The housing was fixed, in came the bearings and though the bearings
came the screws that held the next part in place.
For the base I needed a special form so my colleague del ivered again the 3d printed part as
shown in figure7 -3.
At this point my robot had a base, a frame and all the servos mounted. Them my professor
suggested using one of his old gripp ers as the end effector. This decision caused a little problem
because the servomotors were a little weak for it.
Figure7-2Bearing housing
Figure7-3Support
Lucrare de licen ță
Robotică
65
In order to keep the end effector we had to compromise. Lacking better servomotors we had
to give up on one of the rotations, that being the one around the base.
Looking at the new situation I knew I had to create another support for the robot so that the
base is fixed. Due to the heavy weight of the gripper the little servos are struggling to move even in
horizontal position. But the first glimpse of the final assembly looks like shown in figure 7 -4.
Figure7-4First glimpse
Lucrare de licen ță
Robotică
66
After all the work done, finally the project came to an end. This is how my robot looks like
when fully assembled on the support. The figures 7 -5 and 7-6 depict the
Figure7-5Assembled
Figure7-6End-view
Lucrare de licen ță
Robotică
67
8TESTING AND TROUBLESHOOTING
Inthis chapter I will present the testing and troubleshooting of the robot.
The testing of my robot was quite simple. I tried controlling each servomotor individually,
then in pairs and eventually running a program requiring all of them to move at once as shown in
figure 8-1.
This proved two things, first that my robot is movin g according to the program and second,
that my control panel works like required.
There were a few issues thoughthat needed attention.
The first one was dealing with the high shocks. When a command of a new position was given,
the servomotors would tr y to reach the position so fast that they actually got stuck or skipped over
gears causing damage to them.
The solution was to implement a code with the help of which the new positionvalue was
transferred in more but smaller steps rather than one big st ep.This led to the creation of a control
slider in with the help of which the delay between these small step scan be varied.
Figure8-1CP test
Lucrare de licen ță
Robotică
68
Lucrare de licen ță
Robotică
69
9SYNTHESIS OF THE FIRST THREE MAJOR CHALLANGES IN
THE PROJECT
Thefirst major challe nge
Themost challe nging part of the project was creating the user interface. I had to learn and
understand new programs and programming languages. By far, this part is responsible for the majority
of my time spent on this project, but it was worth the time, all the major functions that I wanted to
have in the control panel are imp lemented. The interface is simple intuitive and user friendly.
The second major challenge
The second major challenge was creating a lightweight but rigid enough structure out of
household materials to fit the needs of the robot.
Thethird major challen ge
The third major challenge was fitting al the servomotors into the robot without any
interferences. It was a success.
.
Lucrare de licen ță
Robotică
70
Lucrare de licen ță
Robotică
71
10CONCLUSIONS
Inconclusion, taking a look over the project, I can say that all the major goals targeted at the
beginning, were achieved and in cases even exceeded. In the control part, all I wanted was to control
the servomotors, but now it has the basic functionalities o f a modern robot. Besides the control of the
motors, positions can be saved and replayed at various speeds and all these movements can be stored
and replayed any time. Indeed, these functions may be more limited that a professional software but
for our pur pose it is enough.
This robot will serve an educational purpose in this university for the next generation. Because
it is cheap, there are no worries of breaking a part, most of them are standardized parts. Legal concerns
are also low because all the prog ramming environments are open source, meaning there will be no
charge for licenses.
The students can learn the basics of the functioning principles of robots not by only seeing
what’s inside the robot and its program but also being able to play freely wit h it.
I hope that in this robot will prove useful in time and bring excitement to the laboratories.
Lucrare de licen ță
Robotică
72
Lucrare de licen ță
Robotică
73
11TABLE OF FIGURES
Figure 1-1 Lynx………………………….. ………………………….. ………………………….. ………………………….. .25
Figure 1-2 OWI………………………….. ………………………….. ………………………….. ………………………….. ..26
Figure 1-3 Bartender ………………………….. ………………………….. ………………………….. …………………….. 27
Figure 2-1 Project workflow ………………………….. ………………………….. ………………………….. …………..34
Figure 3-1 VOC………………………….. ………………………….. ………………………….. ………………………….. 35
Figure 3-2 CTQ………………………….. ………………………….. ………………………….. ………………………….. ..35
Figure 3-3 House of Quality ………………………….. ………………………….. ………………………….. …………..36
Figure 3-4 Constraints ………………………….. ………………………….. ………………………….. …………………… 37
Figure 3-5 Functions ………………………….. ………………………….. ………………………….. …………………….. 37
Figure 3-6QFD1*………………………….. ………………………….. ………………………….. …………………………. 37
Figure 3-7 QFD2………………………….. ………………………….. ………………………….. ………………………….. 38
Figure 3-8 Design elements ………………………….. ………………………….. ………………………….. …………… 39
Figure 3-9 DE over function ………………………….. ………………………….. ………………………….. …………..39
Figure 3-10 BOM………………………….. ………………………….. ………………………….. …………………………. 40
Figure 3-11 VOC Priority ………………………….. ………………………….. ………………………….. ……………… 40
Figure 3-12DE Importance ………………………….. ………………………….. ………………………….. ……………. 41
Figure 3-13 DE target Chart ………………………….. ………………………….. ………………………….. …………… 42
Figure 3-14 Fn target chart ………………………….. ………………………….. ………………………….. …………….. 43
Figure 3-15 First Concep t………………………….. ………………………….. ………………………….. ……………… 44
Figure 3-16 C2 Base ………………………….. ………………………….. ………………………….. …………………….. 45
Figure 3-17 C2 Side ………………………….. ………………………….. ………………………….. ……………………… 45
Figure 3-18 C2 Front ………………………….. ………………………….. ………………………….. …………………….. 45
Figure 3-19 C2 Control Panel ………………………….. ………………………….. ………………………….. …………45
Figure 4-1 Bearing2 ………………………….. ………………………….. ………………………….. ……………………… 47
Figure 4-2 Bearng1 ………………………….. ………………………….. ………………………….. ………………………. 47
Figure 4-3 Axle1………………………….. ………………………….. ………………………….. ………………………….. 47
Figure 4-4 Base………………………….. ………………………….. ………………………….. ………………………….. ..47
Figure 4-5 Fork1………………………….. ………………………….. ………………………….. ………………………….. 47
Figure 4-6 Axle2………………………….. ………………………….. ………………………….. ………………………….. 47
Figure 4-7 Bearing1.1 ………………………….. ………………………….. ………………………….. …………………… 47
Figure 4-8 Joint2………………………….. ………………………….. ………………………….. ………………………….. 47
Figure 4-9 Bearing2.1 ………………………….. ………………………….. ………………………….. …………………… 47
Figure 4-10 Fork2 ………………………….. ………………………….. ………………………….. ………………………… 47
Figure 4-11 Sides………………………….. ………………………….. ………………………….. …………………………. 47
Figure 4-12 Joints………………………….. ………………………….. ………………………….. …………………………. 47
Figure 4-13 Assembled Robot ………………………….. ………………………….. ………………………….. ………..48
Figure 4-14 Simulated ………………………….. ………………………….. ………………………….. …………………… 48
Figure 5-1 Arduino Uno ………………………….. ………………………….. ………………………….. ………………… 49
Figure 5-2The power connectors and USB ………………………….. ………………………….. …………….. 50
Figure 5-3 The ATMEGA328P microcontroller ………………………….. ………………………….. …………… 51
Figure 5-4The power and analog pins ………………………….. ………………………….. ……………………. 51
Figure 5-5The digital input/output pins ………………………….. ………………………….. ……………………. 51
Figure 5-6 The onboard LEDs ………………………….. ………………………….. ………………………….. ………..52
Figure 5-7 The RESET button ………………………….. ………………………….. ………………………….. ………..52
Figure 5-8 Display shield ………………………….. ………………………….. ………………………….. ………………. 53
Figure 5-9 The Ethernet Shield ………………………….. ………………………….. ………………………….. ……….53
Figure 5-10 the Arduino IDE ………………………….. ………………………….. ………………………….. …………54
Figure 5-11 Processing GUI ………………………….. ………………………….. ………………………….. …………..55
Lucrare de licen ță
Robotică
74
Figure 5-12 G4P GUI Builder ………………………….. ………………………….. ………………………….. …………56
Figure 5-13 Control Panel………………………….. ………………………….. ………………………….. ……………… 57
Figure 6-1 Connection schematics ………………………….. ………………………….. ………………………….. …..60
Figure 6-2 Servomotors ………………………….. ………………………….. ………………………….. ………………… 61
Figure 7-1 Oold CR -ROM case ………………………….. ………………………….. ………………………….. ………63
Figure 7-2 Bearing housing ………………………….. ………………………….. ………………………….. ……………. 64
Figure 7-3 Support ………………………….. ………………………….. ………………………….. ……………………….. 64
Figure 7-4 First glimpse ………………………….. ………………………….. ………………………….. ……………….. 65
Figure 7-5 Assembled ………………………….. ………………………….. ………………………….. …………………… 66
Figure 7-6 End-view………………………….. ………………………….. ………………………….. …………………….. 66
Figure 8-1 CP test ………………………….. ………………………….. ………………………….. ………………………… 67
Lucrare de licen ță
Robotică
75
12BIBLIOGRAPHY
1.Blum, J. (2013). Exploring Arduino. Indianapolis: John Wiley& Sons.
2.Bobancu, Ș. C. (1998). Tehnici de. Brașov: Ed. Lux Libris, .
3.Bogdanov, I. (1984). Problema conducerii unui robot industrial,. Timișoara.
4.Boxall, J. (2013). Arduino Workshop. San Francisco: William Pollock.
5.Cohen, R. (1992). Conceptual Design of a Mechanical Design,. Journal of.
6.Dudiță, F. D. (1989.). Mecanisme articulate: Inventica cinematică. ED. Tehnică.
7.Ivănescu, M. (1994). Roboți industriali :Algoritmi și sisteme de conducere, . Craiova: Ed.
"Universitaria",.
8.Jula, A. ș. (1978). Montaje cu rulmenți. Brasov: Universitatea din.
9.Jula, A . ș. (1988). Organe de mașini. Brasaov: Universitatea din Brașov,.
10.Karnopp, D. M. (2000). System Dynamics:Modeling and Simulation of Mechatronic Systems.
John Wiley & Sons.
11.Krieger, P. A. (2009). A Visual Guide to Human Anatomy. Morton Publishing.
12.Masaharu , T. ș. (1985). Concept of Total Computer Aided Design System of Robot
Manipulators. Govioeux.
13.Mogan, G. L. (2002). Proiectarea sistemelor mecanice ale produselor tehnice. Brașov,.
14.Munteanu, O. E. (1995). Bazele roboticii Roboți industriali. Brașov,: Ed. L ux Libris.
15.Nussey, J. (2013). Arduino for Dummies. Chichester: John Wiley & Sons.
16.Poole, H. H. (1989). Fundamentals of Robotics Engineering. Van Nostrand.
17.Rivin, E. I. (1988.). Mechanical Design of Robots,. McGraw Hill Book Company.
18.Rosheim, M. E. (1994). Robot Evolution. The Development of Anthrobotics,. John Wiley &
Sons.
19.Rosheim, M. E. (n.d.). Robot Wrist Actuators. John Wiley & Sons.
20.Shah, J. M. (1995). Parametric and Feature -Based CAD/CAM. John Wiley & Sons.
21.Shigley, J. E. (1986). Mechanical Engineeri ng Design,. McGraw -Hill Book.
22.Suciu, M. P. (1986). Microprocesoare, microcalculatoare și roboți industriali,. București,: Ed.
Tehnică,.
23.Talaba, D. (2000). Bazele CAD. Brașov: Universității Transilvania.
24.Vântu, M. (1999). Programarea roboților industriali. Brasov: Aldus.
25.www.circuits.io. (n.d.).
26.www.playground.arduino.cc/. (n.d.).
27.www.processing.org. (n.d.).
28.www.roboticstrends.com/. (n.d.).
29.www.youtube.com/watch?v=hn7xZFqmGeo. (n.d.).
30.www.youtube.com/watch?v=ZySGP4AwGCY. (n.d.).
Lucrare de licen ță
Robotică
76
1.Figure 1-1 Lynx(www.roboticstrends.com/)
2.Figure 1-2 OWI(www.roboticstrends.com/)
3.Figure 1-3 Bartender (www.roboticstrends.com/)
4.Figure 5-1 Arduino Uno (Boxall, 2013)
5.Figure 5-2 The power connectors and USB (Boxall, 2013)
6.Figure 5-3 The ATMEGA328P microcontroller (Boxall, 2013)
7.Figure 5-4 The power and analog pins (Boxall, 2013)
8.Figure 5-5 The digital input/output pins (Boxall, 2013)
9.Figure 5-6 The onboard LEDs (Boxall, 2013)
10.Figure 5-7 The RESET button (Boxall, 2013)
11.Figure 5-9 Display shield (Boxall, 2013)
12.Figure 5-8 The Ethernet Shield (Boxall, 2013)
13.Figure 5-10 the Arduino IDE (Boxall, 2013)
Lucrare de licen ță
Robotică
77
13APPENDIX
13.1For Arduino:
#include <Servo.h>
Servo serv1; Servo serv2; Servo serv3; Servo serv4; Servo serv5; //servos for 1 -5
int input;
int current_pos[5];
int motor_id=0;
int servoPin = 9;
void init_pos(){
current_pos[0]=120;
current_pos[1]=100;
current_pos[2]=110;
current_pos[3]=100;
current_pos[4]=100;
}
void setup() {
init_pos();
serv1.attach(5);
serv2.attach(6);
serv3.attach(9);
serv4.attach(10);
serv5.attach(11);
Serial.begin(9600);
Serial.println("sofarsogood");
}
void loop() {
if (Serial.available()>0) {
input = Serial.read();
if(input==250){
return;
}
motor_id=input;
while(Serial.available()<=0){};
input = Serial.read();
switch(motor_id){
Lucrare de licen ță
Robotică
78
case 1:{Serial.println(input);
int diff=abs(input -current_pos[0]);
while(input!=current_pos[0]&&diff>3){
if(input>current_pos[0]) {serv1.wri te(current_pos[0]+3);current_pos[0]+=3;}
if(input<current_pos[0]) {serv1.write(current_pos[0] -3);current_pos[0] -=3;}
diff=abs(input -current_pos[0]);
delay(50);
}
delay(50);serv1.write(input);}break;
case 2:{Serial.println(input);
int diff=abs(input -current_pos[1]);
while(input!=current_pos[1]&&diff>3){
if(input>current_pos[1]) {serv2.write(current_pos[1]+3);current_pos[1]+=3;}
if(input<current_ pos[1]) {serv2.write(current_pos[1] -3);current_pos[1] -=3;}
diff=abs(input -current_pos[1]);
delay(50);
}
delay(50);serv2.write(input);}break;
case 3:{Serial.println(input);
int diff=abs(input -current_pos[2]);
while(input!=current_pos[2]&&diff>3){
if(input>current_pos[2]) {serv3.write(current_pos[2]+3);current_pos[2]+=3;}
if(input<current_pos[2]) {serv3.write(current_pos[2] -3);current _pos[2]-=3;}
diff=abs(input -current_pos[2]);
delay(50);
}
delay(50);serv3.write(input);}break;
case 4:{Serial.println(input);
int diff=abs(input -current_pos[3]);
while(input! =current_pos[3]&&diff>3){
if(input>current_pos[3]) {serv4.write(current_pos[3]+3);current_pos[3]+=3;}
if(input<current_pos[3]) {serv4.write(current_pos[3] -3);current_pos[3] -=3;}
diff=abs(input -current_pos[3]);
delay(50);
}
delay(50);serv4.write(input);}break;
case 5:{Serial.println(input);
int diff=abs(input -current_pos[4]);
while(input!=current_pos[4]&&diff>3){
Lucrare de licen ță
Robotică
79
if(input>current_pos[4]) {serv5.write(current_pos[4]+3);current_pos[4]+=3;}
if(input<current_pos[4]) {serv5.write(current_pos[4] -3);current_pos[4] -=3;}
diff=abs(input -current_pos[4]);
delay(50);
}
delay(50);se rv5.write(input);}break;
}
}
}
13.2For Processing sketch
// Need G4P library
import g4p_controls.*;
import processing.serial.*;
int m1,m2,m3,m4,m5;
int increment_val=5;
int maximum_val=180;
int speed=200,fine_speed=15;
int home_m1 =90;
int home_m2=100;
int home_m3=110;
int home_m4=120;
int home_m5=130;
String val;
Serial myPort;
//FILE-IO
String [] list={" "};
String [] import_list={};
String text_area_text="";
BufferedReader reader;
boolean StopButton=false;
//
public void setup(){
//println(Serial.list());
myPort = new Serial(this, Serial.list()[0], 9600);
size(800, 600, JAVA2D);
createGUI();
customGUI();
Lucrare de licen ță
Robotică
80
}
void draw(){
background(230);
if(myPort.available() > 0) {
val=myPort.readStringUntil(' \n');
println("got val from arduino "+val);
}
//println(val);
// println(m1);
//println(myPort.read());
}
// Use this method to add additional statements
// to customise the GUI controls
public void customGUI(){
}
13.3For Processing gui
public void slider6_change1(GSlider source, GEvent event) { //_CODE_:slider6:207222:
println("slider6 -GSlider >> GEvent." + event + " @ " + millis());
m1=source.getValueI();
myPort.write(1);
delay(speed);
myPort.write(m1);
} //_CODE_:slider6:207222:
public void slider7_change1(GSlider source, GEvent event) { //_CODE_:slider7:443547:
println("slider7 -GSlider >> GEvent." + event + " @ " + millis());
m2=source.getValueI();
myPort.write(2) ;
delay(speed);
myPort.write(m2);
Lucrare de licen ță
Robotică
81
} //_CODE_:slider7:443547:
public void slider8_change1(GSlider source, GEvent event) { //_CODE_:slider8:787970:
println("slider8 -GSlider >> GEvent." + event + " @ " + millis());
m3=source.getValueI();
myPort.write(3);
delay(speed);
myPort.write(m3);
} //_CODE_:slider8:787970:
public void slider9_change1(GSlider source, GEvent event) { //_CODE_:slider9:228420:
println("slider9 -GSlider >> GEvent." + event + " @ " + millis());
m4=source.getValueI();
myPort.write(4);
delay(speed);
myPort.write(m4);
} //_CODE_:slider9:228420:
public void slider10_change1(GSlider source, GEvent event) { //_CODE_:slider10:702632:
println("slider10 -GSlider >> GEvent." + event + " @ " + millis());
m5=source.getValueI();
myPort.write(5);
delay(speed);
myPort.write(m5);
} //_CODE_:slider10:702632:
public void button11_click1(GButton source, GEvent event) { //_CODE_:button11:751940:
println("button11 -GButton >> GEvent." + event + " @ " + millis());
if(m1-increment_val>=0){m1=m1 -increment_val;}
println("m1 decremented val m1: " +m1);
slider6.setValue(m1);
} //_CODE_:button11:751940:
public void button12_click1(GButton source, GEvent event) { //_CODE_:button12:840768 :
println("button12 -GButton >> GEvent." + event + " @ " + millis());
if(m1+increment_val<=maximum_val){m1=m1+increment_val;}
println("m1 incremented val m1: " +m1);
slider6.setValue(m1);
} //_CODE_:button12:840768:
public void button13_click1(GB utton source, GEvent event) { //_CODE_:button13:486299:
println("button13 -GButton >> GEvent." + event + " @ " + millis());
if(m2-increment_val>=0){m2=m2 -increment_val;}
println("m2 decremented val m2: " +m2);
slider7.setValue(m2);
}//_CODE_:button13:486299:
public void button14_click1(GButton source, GEvent event) { //_CODE_:button14:815432:
println("button14 -GButton >> GEvent." + event + " @ " + millis());
if(m2+increment_val<=maximum_val){m2=m2+increment_val;}
Lucrare de licen ță
Robotică
82
println("m2 incremented val m2: " +m2);
slider7.setValue(m2);
} //_CODE_:button14:815432:
public void button15_click1(GButton source, GEvent event) { //_CODE_:button15:442764:
println("button15 -GButton >> GEvent." + event + " @ " + millis());
if(m3-increment_ val>=0){m3=m3 -increment_val;}
println("m3 decremented val m3: " +m3);
slider8.setValue(m3);
} //_CODE_:button15:442764:
public void button16_click1(GButton source, GEvent event) { //_CODE_:button16:648817:
println("button16 -GButton >> GEvent." + e vent + " @ " + millis());
if(m3+increment_val<=maximum_val){m3=m3+increment_val;}
println("m3 incremented val m3: " +m3);
slider8.setValue(m3);
} //_CODE_:button16:648817:
public void button17_click1(GButton source, GEvent event) { //_CODE_:button17 :395180:
println("button17 -GButton >> GEvent." + event + " @ " + millis());
if(m4-increment_val>=0){m4=m4 -increment_val;}
println("m4 decremented val m4: " +m4);
slider9.setValue(m4);
} //_CODE_:button17:395180:
public void button18_click1(GButton source, GEvent event) { //_CODE_:button18:280500:
println("button18 -GButton >> GEvent." + event + " @ " + millis());
if(m4+increment_val<=maximum_val){m4=m4+increment_val;}
println("m4 incremented val m4: " +m4);
slider9.setValue(m4);
} //_CODE_:button18:280500:
public void button19_click1(GButton source, GEvent event) { //_CODE_:button19:426066:
println("button19 -GButton >> GEvent." + event + " @ " + millis());
if(m5-increment_val>=0){m5=m5 -increment_val;}
println("m5 decremented val m5: " +m5);
slider10.setValue(m5);
} //_CODE_:button19:426066:
public void button20_click1(GButton source, GEvent event) { //_CODE_:button20:894114:
println("button20 -GButton >> GEvent." + event + " @ " + millis());
if(m5+incr ement_val<=maximum_val){m5=m5+increment_val;}
println("m5 incremented val m5: " +m5);
slider10.setValue(m5);
} //_CODE_:button20:894114:
public void button1_click1(GButton source, GEvent event) { //_CODE_:button1:724176:
println("button1 -GButton > > GEvent." + event + " @ " + millis());
list = append(list,m1 + "," +m2+","+m3 + ","+m4+","+m5+" \n");
text_area_text+=m1 + "," +m2+","+m3 + ","+m4+","+m5+" \n";
textarea1.setText(text_area_text);
Lucrare de licen ță
Robotică
83
// m1 + "\t" +m2+"\t"+m3 + " \t"+m4+"\t"+m5+"\n"
} //_CODE_:button1:724176:
public void button3_click1(GButton source, GEvent event) { //_CODE_:button3:717366:
println("button3 -GButton >> GEvent." + event + " @ " + millis());
reader = createR eader(textfield1.getText());
String t_list="not -null";
while(t_list!=null){
try{t_list=reader.readLine();
import_list=append(import_list,t_list);}
catch (IOException e) {
e.printStackTrace();
t_list=null;
}
}
for(int i=0;i<import_list.length -1;i++){text_area_text+=import_list[i]+" \n";}
text_area_text=text_area_text.replaceAll(" \t"," ");
textarea1.setText(text_area_text);
} //_CODE_:button3:717366:
public void textfield1_change1(GTextField source, GEvent event) { //_CODE_:textfield1:997134:
println("textfield1 -GTextField >> GEvent." + event + " @ " + millis());
} //_CODE_:textfield1:997134:
public void textarea1_change1(GTextArea source, GEvent event) { //_CODE_:textarea1:752067:
println("textarea1 -GTextArea >> GEvent." + event + " @ " + millis());
} //_CODE_:textarea1:752067:
public void playbutt__click1(GButton source, GEvent event) { //_CODE_:play_butt:458993:
println("play_butt -GButton >> GEvent." + event + " @ " + millis());
String [] text = split(textarea1.getText()," \n");
StopButton=false;
for(int i=player_slider.getValueI();i<text.length&&StopButton==false;i++){
String[] text_vals=split(text[i],",");
for(int j=0;j<text_vals.length -1&&StopButton==false;j++){
myPort.writ e(j+1);
delay(fine_speed);
myPort.write( Integer.parseInt(text_vals[j]));
println(text_vals[j]);
}
Lucrare de licen ță
Robotică
84
delay(speed);
}
} //_CODE_:play_butt:458993:
public void button2_click1(GButton source, GEvent event) { //_CODE_:STOP:291635:
println("STOP -GButton >> GEvent." + event + " @ " + millis());
StopButton=true;
} //_CODE_:STOP:291635:
public void slider1_change1(GSlider source, GEvent event) { //_CODE_:speedslider:246060:
println("slider1 -GSlider >> GE vent." + event + " @ " + millis());
speed=source.getValueI();
} //_CODE_:speedslider:246060:
public void home_click2(GButton source, GEvent event) { //_CODE_:Home:552320:
println("Home -GButton >> GEvent." + event + " @ " + millis());
slider6.setVa lue(home_m1);
slider7.setValue(home_m2);
slider8.setValue(home_m3);
slider9.setValue(home_m4);
slider10.setValue(home_m5);
} //_CODE_:Home:552320:
public void player_slider1_change2(GSlider source, GEvent event) {
//_CODE_:player_sl ider:579050:
println("slider -GSlider >> GEvent." + event + " @ " + millis());
} //_CODE_:player_slider:579050:
public void slider1_change2(GSlider source, GEvent event) { //_CODE_:slider1:298517:
println("slider1 -GSlider >> GEvent." + event + " @ " + millis());
fine_speed=source.getValueI();
} //_CODE_:slider1:298517:
// Create all the GUI controls.
public void createGUI(){
G4P.messagesEnabled(false);
G4P.setGlobalColorScheme(GCScheme.CYAN_SCHEME);
G4P.setCursor(ARROW);
surface.setTitle("Sketch Window");
slider6 = new GSlider(this, 40, 50, 350, 50, 10.0);
slider6.setShowValue(true);
slider6.setShowLimits(true);
Lucrare de licen ță
Robotică
85
slider6.setLimits(90, 90, 180);
slider6.setStickToTicks(true);
slider6.setShowTicks(true);
slider6.setNumberFormat(G4P.INTEGER, 0);
slider6.setOpaque(false);
slider6.addEventHandler(this, "slider6_change1");
slider7 = new GSlider(this, 40, 110, 350, 50, 10.0);
slider7.setShowValue(true);
slider7.setShowLimits(true);
slider7.setLimits(100, 90, 180);
slider7.setNbrTicks(19);
slider7.setShowTicks(true);
slider7.setNumberFormat(G4P.INTEGER, 0);
slider7.setOpaque(false);
slider7.addEventHandler(this, "slider7_change1");
slider8 = new GSlider(this, 40, 170, 350, 50, 10.0);
slider8.setShowValue(true);
slider8.setShowLimits(true);
slider8.setLimits(110, 90, 140);
slider8.setNbrTicks(19);
slider8.setShowTicks(true);
slider8.setNumberFormat(G4P.INTEGER, 0);
slider8.setOpaque(false);
slider8.addEventHandler(this, "slider8_change1");
slider9 = new GSlider(this, 40, 230, 350, 50, 10.0);
slider9.setShowValue(true);
slider9.setShowLimits(true);
slider9.setLimits(80, 40, 150);
slider9.setNbrTicks(19);
slider9.setShowTicks(true);
slider9.setNumberFormat(G4P .INTEGER, 0);
slider9.setOpaque(false);
slider9.addEventHandler(this, "slider9_change1");
slider10 = new GSlider(this, 40, 290, 350, 50, 10.0);
slider10.setShowValue(true);
slider10.setShowLimits(true);
slider10.setLimits(10, 0, 180);
slider10.setNbrTicks(19);
slider10.setShowTicks(true);
slider10.setNumberFormat(G4P.INTEGER, 0);
slider10.setOpaque(false);
slider10.addEventHandler(this, "slider10_change1");
button11 = new GButton(this, 400, 70, 20, 20);
button11.setText(" -");
button11.addEventHandler(this, "button11_click1");
button12 = new GButton(this, 430, 70, 20, 20);
button12.setText("+");
button12.addEventHandler(this, "button12_click1");
button13 = new GButton(this, 400, 130, 20, 20);
button13.setText(" -");
button13.addEventHandler(this, "button13_click1");
Lucrare de licen ță
Robotică
86
button14 = new GButton(this, 430, 130, 20, 20);
button14.setText("+");
button14.addEventHandler(this, "button14_click1");
button15 = new GButton(this, 400, 190, 20, 20);
button15.setText(" -");
button15.addEventHandler(this, "button15_click1");
button16 = new GButton(this, 430, 190, 20, 20);
button16.setText("+");
button16.addEventHandler(this, "button16_click1");
button17 = new GButton(this, 400, 250, 20, 20);
button17.setText(" -");
button17.addEventHandler(this, "button17_click1");
button18 = new GButton(this, 430, 250, 20, 20);
button18.setText("+");
button18.addEventHandler(this, "button18_click1");
button19 = new GButton(this, 400, 310, 20, 20);
button19.setText(" -");
button19.addEventHandler(this, "button19_click1");
button20 = new GButton(this, 430, 310, 20, 20);
button20.setText("+");
button20.addEventHandler(this, "button20_click1");
button1 = new GButton(this, 460, 47, 57, 294);
button1.setText("Add position");
button1.addEventHandler(this, "button1_click1");
button3 = new GButton(this, 41, 390, 80, 30);
button3.setText("import");
button3.addEventHandler(this, "button3_click1");
textfield1 = new GTextField(this, 42, 35 2, 160, 30, G4P.SCROLLBARS_NONE);
textfield1.setLocalColorScheme(GCScheme.BLUE_SCHEME);
textfield1.setOpaque(true);
textfield1.addEventHandler(this, "textfield1_change1");
textarea1 = new GTextArea(this, 521, 46, 196, 294, G4P.SCROLLBARS_NONE);
textarea1.setOpaque(true);
textarea1.addEventHandler(this, "textarea1_change1");
play_butt = new GButton(this, 708, 505, 80, 45);
play_butt.setText("Play");
play_butt.addEventHandler(this, "playbutt__click1");
STOP = new GButton(this, 459, 354, 26 0, 54);
STOP.setText("EMERGENCY STOP");
STOP.setLocalColorScheme(GCScheme.RED_SCHEME);
STOP.addEventHandler(this, "button2_click1");
speedslider = new GSlider(this, 206, 352, 158, 52, 10.0);
speedslider.setShowValue(true);
speedslider.setLimits (250, 100, 500);
speedslider.setNbrTicks(5);
speedslider.setStickToTicks(true);
speedslider.setShowTicks(true);
speedslider.setNumberFormat(G4P.INTEGER, 0);
speedslider.setOpaque(false);
speedslider.addEventHandler(this, "slider1_change1");
label1 = new GLabel(this, 245, 341, 80, 20);
Lucrare de licen ță
Robotică
87
label1.setText("Speed");
label1.setOpaque(false);
Home = new GButton(this, 371, 354, 80, 53);
Home.setText("Home");
Home.addEventHandler(this, "home_click2");
player_slider = new GSlider(this, 48, 506, 650, 43, 10.0);
player_slider.setShowValue(true);
player_slider.setShowLimits(true);
player_slider.setLimits(0, 0, 500);
player_slider.setNbrTicks(10);
player_slider.setShowTicks(true);
player_slider.setNumberFormat(G4P.INTEGER, 0);
player_slider.setOpaque(false);
player_slider.addEventHandler(this, "player_slider1_change2");
slider1 = new GSlider(this, 207, 446, 158, 48, 10.0);
slider1.setShowValue(true);
slider1.setShowLimits(true);
slider1.setLimits(10, 10, 50);
slider1.set NbrTicks(5);
slider1.setStickToTicks(true);
slider1.setShowTicks(true);
slider1.setNumberFormat(G4P.INTEGER, 0);
slider1.setOpaque(false);
slider1.addEventHandler(this, "slider1_change2");
label2 = new GLabel(this, 248, 418, 80, 20);
label2.setText("Fine speed");
label2.setOpaque(false);
label3 = new GLabel(this, 2, 304, 40, 20);
label3.setText("~11");
label3.setOpaque(false);
label4 = new GLabel(this, 0, 242, 41, 20);
label4.setText("~10");
label4.setOpaque(false);
label5 = new GLabel(this, -13, 183, 80, 20);
label5.setText("~9");
label5.setOpaque(false);
label6 = new GLabel(this, -14, 123, 80, 20);
label6.setText("~6");
label6.setOpaque(false);
label7 = new GLabel(this, -13, 63, 80, 20);
label7.setTe xt("~5");
label7.setOpaque(false);
}
// Variable declarations
GSlider slider6;
GSlider slider7;
GSlider slider8;
GSlider slider9;
GSlider slider10;
GButton button11;
Lucrare de licen ță
Robotică
88
GButton button12;
GButton button13;
GButton button14;
GButton button15;
GButton button16;
GButton button17;
GButton button18;
GButton button19;
GButton button20;
GButton button1;
GButton button3;
GTextField textfield1;
GTextArea textarea1;
GButton play_butt;
GButton STOP;
GSlider speedslider;
GLabel label1;
GButton Home;
GSlider player_slider;
GSlider slider1;
GLabel label2;
GLabel label3;
GLabel label4;
GLabel label5;
GLabel label6;
GLabel label7;
Lucrare de licen ță
Robotică
89
Pages 88
Figures 57
Words 12419
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Lucrare de licen ță [600769] (ID: 600769)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
