Post on 17-Feb-2018
7/23/2019 Robotica Ms 10 Lego 1
1/39
Robtica
Prof. Reinaldo Bianchi
Centro Universitrio da FEI2007
7/23/2019 Robotica Ms 10 Lego 1
2/39
10a. Aula
7/23/2019 Robotica Ms 10 Lego 1
3/39
Objetivos desta aula
Programao real de !m ro"# m$vel. Breve introd!o a %rogramao &'C %ara
ro"#s (E)*. Res!ltado es%erado+
, Ro"# seg!idor de %ista reta ao final da a!la.
Baseado em+,-!la do %rofessor Pa!lo antos.
, /Programming (ego Ro"ots1 de ar3 *vermars.
7/23/2019 Robotica Ms 10 Lego 1
4/39
O rob a ser usado
4r5s sensores+, 6 e so de l!8
9E&*R:(I);4!e9E&*R:4*UC;!e acionam os sensores eat!adores do ro"#.
, Permitem ligar e desligar os motores1aD!star a %ot5ncia dos mesmos.
, Permitem definir os sensores !sados e ler
os valores dos mesmos. Usados em conD!nto com os comandos
de controle de fl!o.
7/23/2019 Robotica Ms 10 Lego 1
14/39
E!tradas e Sa/das
4odo controle do ro"# = reali8ado so"re entradas e sa@das.
*U4:-1 *U4:B e *U4:C+, o as sa@das de controle do ro"#.
E&*R:61 E&*R:2 E
E&*R:+, o as entradas de sensores do ro"#.
7/23/2019 Robotica Ms 10 Lego 1
15/39
Co#a!dos de co!trole do #otor
OnFwd(OUT_A);
, Inicia a sa@da -
, e !m motor estiver conectado a %orta -1 ele serligado no sentido direto com mima velocidade.
On"#(OUT_A$OUT_C);
, Reverte as sa@das - e C.
, e eistirem motores ligados a estas sa@das1 elessero acionados no sentido reverso com mimavelocidade.
7/23/2019 Robotica Ms 10 Lego 1
16/39
Co#a!dos de co!trole do #otor
O&&(OUT_A$OUT_C);
, ?esliga os motores.
*t+owr(&or,a).,- fora = !m nmero inteiro entre 0 e 7+
G 7 = o mais r%ido.
G 0 o mais lento1 mas ainda com movimento.
7/23/2019 Robotica Ms 10 Lego 1
17/39
Co#a!do $ait'
* comando Hait fa8 com >!e a tarefa%are %or !m determinado tem%o1 dado
em cent=simos de seg!ndos. Wait(400); &ote >!e as sa@das so mantidas no
mesmo estado %elo tem%o em >!e aes%era d!rar.
7/23/2019 Robotica Ms 10 Lego 1
18/39
e2i!i!do u# se!sor
Para definir !m sensor = necessrioes%ecificar a %orta e o ti%o do sensor+
- *t*nsor(*E.*O"_*E.*O"_TOUC1);G ?efine !m sensor de to>!e na %orta 2.
- *t*nsor(*E.*O"_2*E.*O"_L31T);
G ?efine !m sensor de l!8 na %orta 6.
Para !sar o sensor+, Use o nome da %orta como varivel+- *E.*O"_55 2
7/23/2019 Robotica Ms 10 Lego 1
19/39
Se!sor de to)ue
Usado %ara detectarto>!es o! "arreiras.
Retorna+, 0 se a"erto
, 6 se %ressionado.
* sensor maissim%les %oss@vel
7/23/2019 Robotica Ms 10 Lego 1
20/39
Ee#,lo se!sor de to)ue
-nda at= "ater em algo e o sensor deto>!e for %ressionado+
taskmain()
{ *t*nsor(*E.*O"_2*E.*O"_TOUC1);
OnFwd(OUT_A$OUT_C);
until(*E.*O"_255 2);
O&&(OUT_A$OUT_C);
7/23/2019 Robotica Ms 10 Lego 1
21/39
Se!sor de lu
Usado %ara coresem o"Detos1 no chao
e distncias. Retorna+
, 0 m@nimo.
, 0 mimo.
&a %rtica+, J 0 = %reto
, K 0 = "ranco
7/23/2019 Robotica Ms 10 Lego 1
22/39
Co#a!dos de co!trole de 2luo.
&'C %oss!i comandos de controle de fl!oig!ais as ling!agens %rocedimentais
convencionais1 como ling!agem C o! Pascal+, if... else, Hhile
, do ... Hhile
, re%eat ... !ntil, e o!tras.
7/23/2019 Robotica Ms 10 Lego 1
23/39
$re,eat'
taskmain()
{
repeat(4)
{
OnFwd(OUT_A$OUT_C);
Wait(6O7E_T36E);
On"#(OUT_C);
Wait(TU"._T36E);
O&&(OUT_A$OUT_C);
7/23/2019 Robotica Ms 10 Lego 1
24/39
$do ... 4ile'intmo#_tim t!rn_tim tota_tim;
taskmain()
{
tota_tim 5 0;
do
{
mo#_tim 5 "andom(200); t!rn_tim 5 "andom(200);
OnFwd(OUT_A$OUT_C);
Wait(mo#_tim);
On"#(OUT_C);
Wait(t!rn_tim);
tota_tim $5 mo#_tim; tota_tim $5 t!rn_tim;
while(tota_tim 8 000);
O&&(OUT_A$OUT_C);
7/23/2019 Robotica Ms 10 Lego 1
25/39
$4ile' e $i25else'
9d&in 6O7E_T36E 200
9d&in TU"._T36E :
taskmain()
{
while(true){
OnFwd(OUT_A$OUT_C);
Wait(6O7E_T36E);
if("andom(2) 55 0){
On"#(OUT_C);
else{
On"#(OUT_A); Wait(TU"._T36E);
A!da e "ira aleatoria#e!te ,ara es)uerda ou direita
7/23/2019 Robotica Ms 10 Lego 1
26/39
6u!78o ra!do#
- f!no random 9< gera !m nmeroaleat$rio entre 0 e o nmero %assado
como %armetro da f!no+, "andom(
7/23/2019 Robotica Ms 10 Lego 1
27/39
O,eradores
*%eradores relacionais+, M M1 J1 JM1 K 1 KM
, AM 9diferente< *%eradores Booleanos+
, NN 9conD!no l$gicae#,lates
7/23/2019 Robotica Ms 10 Lego 1
34/39
Aviso+ !8o ,erca seu te#,o?
C*PI(E E ?EPURE EUPR*)R-- -&4E ?E 4E4T(*
&* R*BVAA Caso contrrio1 voc5 s$ desco"rir os
erros de%ois de !m "om tem%o...
-tra%alha a todos...
7/23/2019 Robotica Ms 10 Lego 1
35/39
>are2a da aula de 4oje
Fa8er o ro"# andar em linha reta1seg!indo a %ista1 corrigindo os
event!ais desvios. ?ividir a t!rma em e>!i%es de 2 al!nosA
, Cada d!%la deve fornecer !m nome %ara a
s!a e>!i%e.
7/23/2019 Robotica Ms 10 Lego 1
36/39
=ista usada.
-o final do c!rso 9W a!las!i%e>!e fi8er o traDeto a seg!ir no menor
tem%o ser a cam%eA
7/23/2019 Robotica Ms 10 Lego 1
37/39
Ee#,lo b-sico
Eem%lo de ro"# >!e anda at= m!dar a cor dese! sensor9d&in T1"E*1OL' 40
taskmain()
{
*t*nsor(*E.*O"_*E.*O"_L31T);
OnFwd(OUT_A$OUT_C);
while(true)
{
if(*E.*O"_> T1"E*1OL')
{
On"#(OUT_C); until(*E.*O"_85 T1"E*1OL');
OnFwd(OUT_A$OUT_C);
7/23/2019 Robotica Ms 10 Lego 1
38/39
Co!clus8o
* Controle de ro"#s reais no = tocom%licado.
Usem material das a!las de controle9a!la Q< e das a!las de ro"$tica m$vel.
?ific!ldade+
, Ro"# no = sim%lesmente diferencial1 mas%oss!i desli8amento.
, *!tros ti%os de ro"#s nas %r$imas a!las.
7/23/2019 Robotica Ms 10 Lego 1
39/39
6i#