Você está na página 1de 57

TUTORIAL

ROBÓTICA
Engenharia Eletrotécnica e de Computadores
3ºAno – 1ºSemestre
Bruno Oliveira
Introdução
• Este capitulo discute como é que uma plataforma robótica se move, isto é,
como é que se movimenta ao longo do tempo em função das suas entradas
de controlo.

• Existem diferentes tipos de plataformas robóticas moveis, como foi


apresentado no capitulo de introdução à robótica.

• Contudo aqui apenas será explorado um tipo:


• Veículos com rodas, que se assemelham a carros, que funcionam num ambiente
2D. Veículos que se movimento para a frente e para traz, onde a sua direcção é
controlada a partir dos ângulos das rodas.

2
Mobilidade
• Comboio
• apresenta um grau de liberdade
• Um actuador (motor) que o permite movimentar para
frente e para traz
• Com apenas um grau de liberdade pode alcançar
qualquer posição ao longo do trilho

• Aerobarco (hovercraft)
• Apresenta dois graus de liberdade
• Dois actuadores, um permite movimenta-lo para a
frente e para traz, o outro permite movimentar a
direcção.
• O hovercraft move-se numa superficie plana, a sua
configuração é completamente descrita por três
coordenadas q =(x, y, θ)
• Onde x e y representam a posição actual e θ representa a
orientação.

3
Mobilidade
• “wheel – one of humanity’s greatest achievements”
mni-directional (or
Swedish) wheel. Note the
• Foi inventada no ano 3000 A.C. circumferential
rollers which make motion
in the direction of the
wheel’s
• Carro com duas rodas 2000 A.C. axis almost frictionless.

• Hoje em dia veículos com 4 rodas são habituais, existem


aproximadamente 1 bilião de automóveis em todo mundo.

• A eficácia dos carros, e o facto de serem muito familiares para os


humanos, fazem deles uma escolha natural para a criação de
plataformas robóticas que se movem ao longo do chão.
4
Mobilidade
Robôs móveis como carros
• A configuração de um carro em movimento
sobre um plano é descrito pelas suas
coordenadas generalizadas q = (x, y, θ) ∈ C e q = (x, y, θ)
C ⊂ R2 × S, que tem três dimensões.
• X e Y representam a posição no plano;
• θ representa o ângulo de rotação;
• Um carro tem apenas dois actuadores, um
para mover para a frente ou para trás e um
para mudar a direcção.

• Nesta seção, vamos criar um modelo para


um veículo (tipo carro) e desenvolver
controladores que podem conduzir o carro
até um ponto, ao longo de uma linha, seguir
um caminho arbitrário e, finalmente,
conduzir a uma determinada posição.
6
Robôs móveis como carros

• Sistema de coordenadas do Veículo.


• O sistema de coordenadas que vamos
utilizar, e é muito comum para veículos
de todos os tipos é:
• O eixo x é a frente (movimento
longitudinal),
• O eixo y é para o lado esquerdo
(movimento lateral),
• O que implica que o eixo z é para cima.
Para aplicações aeroespaciais e
subaquático do eixo z é muitas vezes para
baixo.

7
Robôs móveis como carros
Modelo de bicicleta de um carro
• O carro é representado a cinza claro, e a aproximação à
bicicleta a cinza escuro.

• O sistema de coordenadas do veiculo está representado a


vermelho, e o sistema de coordenadas do mundo a azul.

• O ângulo do volante é γ e a velocidade da roda de trás, na


direção x, é v.

• Os dois eixos de roda são estendidas como linhas tracejadas


que se cruzam no Centro instantâneo de rotação (ICR) e a
distância do ICR à parte traseira e rodas dianteiras é R1 e
R2, respetivamente.

• Coordenadas gerais:
q = (x, y, θ) 8
Robôs móveis como carros
• A configuração do veículo é representada pelas coordenadas
generalizadas:
q = (x, y, θ)

• A Velocidade do veículo é, por definição, v na direção do veículo x, e


zero na direção y uma vez que as rodas não podem deslizar para os
lados:

• As linhas tracejadas mostram a direção ao longo da qual as rodas não


se podem mover, estas cruzam-se num ponto conhecido como o
Centro instantâneo de rotação (ICR). O ponto de referência do
veículo, assim, segue um caminho circular e cuja velocidade angular
é:

• e pela geometria simples, o raio de viragem é R1 = L / tan(γ) onde L é


o comprimento do veículo ou de base entre rodas. Como seria de
esperar o círculo de viragem aumenta com o comprimento do
veículo. O γ ângulo de direcção é limitado mecanicamente e seu valor
máximo dita o valor mínimo de R1.
9
Robôs móveis como carros
• Para um ângulo fixo do volante o carro move-se ao
longo de um arco circular.

• Por esta razão as curvas em estradas são arcos


circulares (com ligeiras variações de raio) o que torna
a vida mais fácil para o motorista, uma vez que, que
apenas necessita manter o ângulo da roda constante
ou variar suavemente de direção para que o carro siga
a estrada.

• Note-se que R2 > R1 o que significa que a roda da


frente deve seguir um caminho mais longo e,
portanto gira mais rapidamente do que a roda
traseira.

• As componentes da velocidade do robô no sistema de


eixos global são dadas por: v cosθ, v sinθ
10
Robôs móveis como carros
• A velocidade do robô no sistema de eixos global é (v cosθ, v sinθ) que combinado com permite escrever as
equações de movimento como:

Velocidade do carro

Ângulo do volante

• Este modelo é conhecido como um modelo de cinemática, uma vez que descreve as velocidades do veículo, mas não as
forças ou torques que provocam a velocidade.

• A taxa de mudança de direção "̇ é referida como a taxa de yaw e pode ser medida por um giroscópio. Também pode
ser deduzida a partir da velocidade angular das rodas, nas laterais esquerda e direita do veículo que seguem arcos de
diferentes raios e, portanto, giram em velocidades diferentes.
11
Robôs móveis como carros
• No sistema de coordenadas mundo, podemos escrever uma expressão para a velocidade do
veículo na direção y:

• Equação seguinte capta algumas outras características importantes de um veículo com rodas:

o Quando v = 0, então "̇ = 0, ou seja, não é possível mudar a orientação do veículo quando não
estiver em movimento. Como sabemos da nossa experiência como condutores é preciso
estar em movimento para conseguir virar.

#
o Se o ângulo de direcção é $ então a roda da frente é ortogonal à roda traseira, o veículo não
se pode mover para a frente e o modelo entra numa região indefinida.

12
Robô móvel como um veiculo direção diferencial

• Ter rodas direcionáveis, como num veículo semelhante a um carro, é mecanicamente complexo.

• A direção diferencial baseia-se no controlo de forma independente da velocidade das rodas em


cada lado do veículo - se as velocidades não forem iguais, o veículo irá virar.

• Veículos de direção diferencial muito grandes, como tratores e os tanques às vezes empregam
esteiras em vez de rodas.
Robô móvel como um veiculo direção diferencial
Modelo de um veículo diferencial
• O carro é representado a cinza claro, e a aproximação ao veículo
de uma roda a cinza escuro.

• O sistema de coordenadas do veiculo está representado a


vermelho, e o sistema de coordenadas do mundo a azul.

• O centro de referencia {B} é o centróide entre as 4 rodas;

• vL e vR definem as velocidades das rodas esquerda e direita


respetivamente. O ponto ICR é definido pela extensão de Y-axis
e representa o ponto sobre o qual o veiculo irá rodar.

• a distância/raio do ICR ao eixo das rodas do lado esquerdo e


direito são representadas por RL e RR, respetivamente.

Coordenadas gerais:
q = (x, y, θ) 14
Robô móvel como um veiculo direção diferencial

A velocidade angular segue a seguinte equação

Como RR = RL +W

E assim, as equações de movimento são definidas


como:

("#$ "%)
Com v = ; Δv = vR − vL 15
'
Robôs móveis como carros
• A velocidade do robô no sistema de eixos global é (v cosθ, v sinθ) que combinado com permite escrever as equações
de movimento como:

Velocidade do carro

Distância entre rodas

• Este modelo é conhecido como um modelo de cinemática, uma vez que descreve as velocidades do veículo, mas não as forças
ou torques que provocam a velocidade.

• A taxa de mudança de direção "̇ é referida como a taxa de yaw e pode ser medida por um giroscópio. Também pode ser
deduzida a partir da velocidade angular das rodas.

• Este modelo tem diferenças em relação ao modelo da bicicleta. A velocidade de rotação é diretamente proporcional á Δv e
independente da velocidade. Isto significa que o veículo pode mudar de direção mesmo que não ande em frente.
16
TUTORIAL

ROBÓTICA
Engenharia Eletrotécnica e de Computadores
3ºAno – 1ºSemestre
Bruno Oliveira
Instalação e setup
https://www.mathworks.com/help/supportpkg/legomindstormsev3io/setup-and-configuration.html

Adicionar toolbox para o LEGO MINDSTORMS EV3 Hardware

Conectar o computador ao EV3 Brick usando Bluetooth ou USB

Usem este link

18
Ler e escrever dados
%% TASK 1 – Conect the robot and create the mylego object
>> mylego = legoev3('usb'); %create the object with usb connection
>> beep(mylego); % noise only to guarantee the robot is coneected

%% TASK2 - Interact with Brick Peripherals


%1. Clear the LCD, and then write text on row 2, column 3.
>> clearLCD(mylego)
>> writeLCD(mylego,'Hello, LEGO!',2,3)

%2. Play a 500 Hz tone on the speaker for 3 seconds, with the volume level set to 20.
>> playTone(mylego,500,3,20)

%3. Read the status of the up button. If the button is pressed, the status is 1.
Otherwise, the status is 0.
>> readButton(mylego,'up')

%4. Illuminate the status light with a red LED, and then turn it off.
>> writeStatusLight(mylego,'red')
>> writeStatusLight(mylego,'off') 19
Interargir com os sensores
%% Task 2 - Read a Sensor Value Sensor de Toque
%To interact with sensors that are connected to the
q Fornece a sensação de tato ao robô
input ports on the EV3 brick, create a handle for the
sensor. Then, use this handle to perform operations q Consegue detetar quando algo é pressionado ou libertado
such as reading sensor values.
q Exemplo: Pode ser utilizado para detetar objetos, fazer um joystick,
%1. Plug a touch sensor into port #1 on the EV3 controlar movimentos;
brick, and create a handle for it.
>> mytouch = touchSensor(mylego,1);

%2. Read the value of the touch sensor - pressed (1)


and not pressed (0)
>> readTouch(mytouch)

%For more information, enter:


>> help touchSensor

20
Sensor de luz
%% Light sensor Para obter a cor de um objeto na frente do sensor, use a função readColor
>> mycolorsensor = colorSensor(mylego,4); %porta 4 com o objeto colorSensor.

% Read the color in front of the color sensor. • O sensor avalia a cor do objeto a partir do sensor e retorna um dos
>> color = readColor(mycolorsensor); seguintes valores: preto, azul, castanho, verde, vermelho, branco,
amarelo ou sem cor. Por exemplo, você pode usar esse recurso para
classificar objetos coloridos.
%Read the relative intensity of the ambient light that reaches the color
%sensor. If not specified, the default mode %is 'ambient'.
>> intensity = readLightIntensity(mycolorsensor); • Para medir a intensidade da luz refletida, use a função
readLightIntensity com o objeto colorSensor e defina o modo como
%Read the relative intensity of the LED light that a nearby object reflected. Neste modo, o sensor emite luz vermelha e mede a
%reflects back to the color sensor. quantidade de luz que os objetos próximos refletem de volta para o
>> intensityReflected = readLightIntensity(mycolorsensor,'reflected'); sensor. Ele representa essa medição em um intervalo de 0 a 100 (escuro
a claro). Por exemplo, pode-se usar esta estratégia para detectar uma
linha escura em uma superfície clara.

• Para medir a intensidade da luz ambiente, use a função


readLightIntensity com o objeto colorSensor e defina o modo como
ambient. Neste modo, o sensor mede a quantidade de luz que recebe
do ambiente circundante. Ele representa essa medição em um intervalo
de 0 a 100 (escuro a claro). Por exemplo, pode-se usar esta estratégia
para medir a luz do sol ou para detectar quando alguém apaga uma luz.
21
Interargir com os sensores
%% Giro sensor
%Create a connection to the gyroscopic sensor called mygyrosensor.
>> mygyrosensor = gyroSensor(mylego);

% Measure the rotation, in degrees, since the creation of the connection to


the sensor.
>> angle = readRotationAngle(mygyrosensor);

% Reset the measurement to zero.


>> resetRotationAngle(mygyrosensor)

% Measure the current rate of rotation, in degrees per second.


>> rate = readRotationRate(mygyrosensor)

%% Sonic sensor
%Create a connection to an infrared sensor.
>> mysonicsensor = sonicSensor(mylego);
Atenção!!
Validar que os sensors
%Read the relative distance from the infrared sensor to the %nearest object.
funcionam bem 22
>> distance = readDistance(mysonicsensor);
Interargir com os motores
%% Task 3 - Control the Speed and Direction of a Motor
%To interact with motors that are connected to the output ports on the EV3 brick, create a handle for the motor. Use the
Speed property to set the speed and direction of the motor. Then, use the handle to start and stop the motor.

%1. Plug a motor into port #A on the EV3 brick, and create a handle for it.
>> mymotor = motor(mylego,'A')

%2. Set the motor speed by assigning a value to the Speed property.
>> mymotor.Speed = 20;

%3. Start the motor.


>> start(mymotor)

%4. Change the motor speed and reverse its direction.


>> mymotor.Speed = -10;

%5. Stop the motor.


>> stop(mymotor)

%To read the actual rotation of the servo motor 23


>> mymotor.readRotation
Fechar a ligação ao robô Lego
%% Task 4 - Clear Objects
%To discard the mylego, mymotor, and mytouch object handles, use the clear function.
>> clear
>> clear mylego % fechar ligação

24
Exemplos – Alarme de colisão
%% Collision Alarm %%

%------- Change ME -------------------------


mylego = legoev3; % Set up MATLAB and EV3 communication
RANGE = 0.3; % Detection range in meters
%-------------------------------------------

mysensor = sonicSensor(mylego); % Set up ultrasonic sensor

%% Operations
while ~readButton(mylego, 'up') % Exit if UP button is pressed
dis = readDistance(mysensor); % Read ultrasonic sensor value
freq = 5000*(RANGE-dis)/RANGE; % Increase frequency as getting closer
volume = 100*(RANGE-dis)/RANGE; % Increase volume as getting closer
playTone(mylego, freq, 1, volume); % Play tone
end

%% Clean
clear
25
Exemplos – Andar em frente (Open-loop)
%% Go Straight Open-Loop %%
mylego = legoev3; % Set up MATLAB and EV3 communication

% Change based on your motor port numbers


mymotor1 = motor(mylego, 'B'); % Set up motor
mymotor2 = motor(mylego, 'C');

% Application parameters
EXE_TIME = 10; % Application running time in seconds
SPEED = 30; % Motor speed

mymotor1.Speed = SPEED; % Set motor speed


mymotor2.Speed = SPEED;
Comando Robô Movimento
start(mymotor1); % Start motor
start(mymotor2);

%% Operations
pause(EXE_TIME); % Wait

%% Clean up
stop(mymotor1); % Stop motor
stop(mymotor2); 26

clear
Exemplos – Andar em frente (closed-loop)
%% Go Straight Close-Loop %%
mylego = legoev3; % Set up MATLAB and EV3 communication

mymotor1 = motor(mylego, 'B'); % Set up motor


mymotor2 = motor(mylego, 'C');

% Application parameters
EXE_TIME = 10; % Application running time in seconds
PERIOD = 0.1; % Sampling period
SPEED = 30; % Motor speed
P = 0.05; % P controller parameter

mymotor1.Speed = SPEED; % Set motor speed


mymotor2.Speed = SPEED;

resetRotation(mymotor1); % Reset motor rotation counter


resetRotation(mymotor2);

27
Exemplos – Andar em frente (closed-loop)
start(mymotor1); % Start motor
start(mymotor2);

t = timer('TimerFcn', 'stat=false;', 'StartDelay',EXE_TIME);


start(t);
Erro
Comando - Robô Movimento
stat = true;
lastR1 = 0;
lastR2 = 0;

while stat == true % Quit when times up


r1 = readRotation(mymotor1); % Read rotation counter in degrees
r2 = readRotation(mymotor2);

speed1 = (r1 - lastR1)/PERIOD; % Calculate the real speed in d/s


speed2 = (r2 - lastR2)/PERIOD;

diff = speed1 - speed2; % P controller


mymotor1.Speed = mymotor1.Speed - int8(diff * P);

lastR1 = r1;
lastR2 = r2;
pause(PERIOD); % Wait for next sampling period 28

end
Exemplos práticos
Índice

• Modelo cinemático do robô da lego em Matlab

• Ferramenta Robot visualizer do Matlab

• Controlo do robô para ir para um ponto

• Controlo do robô para ir para seguir uma linha

• Controlo do robô para seguir uma trajetoria:


- Pure Pursuit;
- Probabilistic Roadmap (PRM) path planner;
- Vector Field Histogram (VFH);

30
Controlo cinemático do robô da lego

X, Y

31
Controlo cinemático do robô da lego

Definir o modelo do robô

A partir das velocidades de cada roda, descobrir a velocidade no Mundo

A partir das velocidades no Mundo, descobrir a velocidade da roda

32
Robot Visualizer
O Robot Visualizer permite criar cenários para robótica móvel 2D, permitindo simulação e prototipagem.

As opções default do Robot Visualizer são:


• Mapa está vazio (tudo é espaço livre)
• O display das trajetórias está ON
•Waypoints, lidar, e detetores de objetos estão OFF 33
Robot Visualizer
Matlab:

A sintaxe geral do objeto Visualizer2D, se todas as opções estão habilitadas, são:

• Criar objeto: viz = Visualizer2D;


• Visualizar: viz(pose,waypoints,ranges,objects);

Onde,
• pose é um array 3-by-1 representado a pose do robô. Este input é obrigatório.
• waypoints é uma matrizn N-by-2 cujas linhas representam as posições dos waypoints. Este input está disponível se a
flag hasWaypoints está a true.
• ranges é um array N-by-1 array da distância do lidar, em metros. Este input está disponível se a flag hasLidar está a
true.
• objects é um array N-by-3 array cujas linhas representam os objectos. . Este input está disponível se a flag
hasObjectDetector está a true.
Robot Visualizer
1

35
Robot Visualizer

36
Movimento para um Ponto
• Movimento para um Ponto
• Considere o problema de se mover em direção a um ponto
objetivo ",̇ $̇ no plano a partir da posição actual (x, y). Vamos
controlar a velocidade do robô para ser proporcional à sua
distância da meta:

Controlo
proporcional

• E para orientar em direção à meta calcula-se o ângulo do veículo


em relação à meta

• Usando um controlador proporcional que gira o volante em


direção ao alvo.

Controlo
proporcional
37
Movimento para um Ponto

Exemplo de Código:

drive2Point.m

Simulation results for


sl_drivepoint for different initial
poses. The goal is (5, 5)

38
Seguir uma Linha
• Seguir uma Linha
• Outra tarefa útil para um robô móvel é seguir uma linha
sobre o plano definido por ax + by + c = 0.

• Isto requer dois controladores para ajustar direcção.


• Um controlador orienta o robot para minimizar a distância
normal do robô a partir da linha que, segundo a Eq.:

O controlador proporcional:

transforma o robô em direção à linha.

• O segundo controlador ajusta a orientação do veículo para


que esta seja paralela à linha

39
Seguir uma Linha
• Usando um controlador proporcional:

• A lei combinada de controlo resulta:

• vira o volante, de modo a conduzir o robô em direção à linha e


mover ao longo dela.

Exemplo de Código:
Simulation results from different
initial poses for the line (1,−2, 4) drive2Line.m
40
Seguir uma trajetória

• Este problema é muito semelhante ao problema de controlo movimento para um


ponto, só que desta vez o ponto está em movimento.

• O robô mantém uma distância d* atrás do ponto de perseguição e nós formulamos


um erro

41
Seguir uma trajectória

• que regulamos para zero, controlando a velocidade do robô usando um controlador proporcional
integral (PI)

• O termo integral é necessária para proporcionar uma velocidade finita v* quando o erro seguinte
é zero. O segundo controlador orienta o robô em direção ao alvo e está no ângulo relativo

• E um simples controlo proporcional

• vira o volante, de modo a conduzir o robô em direção ao alvo.

42
Seguir uma trajetória

Exemplo de Código:

drive2Trajectory.m

Simulation results from the pure pursuit. 43


Seguir uma trajetória – Pure Pursuit
Controlador “Pure pursuit” é um algortimo de tracking de uma trajetória. Este calcula a velocidade angular que o robô
se deve mover para ir da sua posição atual até um dado ponto;

O controllerPurePursuit não é um controlador tradicional:


• Atua como um algoritmo de tracking para seguir uma
trajetória;
• Pode seguir uma lista especificada de waypoints.
• As velocidades lineares e angulares máximas desejadas
podem ser especificadas. Essas propriedades são
determinadas com base nas especificações do veículo.
• A propriedade LookAheadDistance decide a que distância o
ponto de observação é colocado.
• A velocidade linear é constant e definida pelo utilizador;

Limitações:
• Oo controlador não pode seguir exatamente caminhos
diretos entre os waypoints. Os parâmetros devem ser
ajustados para otimizar o desempenho e convergir
para o caminho ao longo do tempo.
• Este algoritmo não estabiliza o robô em um ponto.
Um limite de distância para o local de meta deve ser
aplicado para parar o robô perto da meta desejada. 44
Seguir uma trajetória – Pure Pursuit
• Usar o controlo “Pure Pursuit” para conduzir um robô simulado ao longo de um caminho predeterminado.

• Um caminho desejado é um conjunto de waypoints definidos explicitamente ou computados usando um algoritmo de


planeamento de trajetória.

45
https://www.mathworks.com/help/robotics/ug/path-following-for-differential-drive-robot.html
Seguir uma trajetória – Pure Pursuit

46
https://www.mathworks.com/help/robotics/ug/path-following-for-differential-drive-robot.html
Seguir uma trajetória – Pure Pursuit

Exemplo de Código:

mrsDiffDrivePurePursuit.m

47
https://www.mathworks.com/help/robotics/ug/path-following-for-differential-drive-robot.html
Seguir uma trajetória – Pure Pursuit + PRM
• O espaço em que o robô irá navegar pode estar limitado por obstaculos, paredes, entre outros.

Como é que podemos incluir isto no algoritmo de planeamento de trajetória?

Uma forma de calcular a trajétoria entre dois pontos em um determinado


mapa, sem que hajam colisões pode ser efetuado usando o Probabilistic
Roadmap (PRM) path planner:

1. Criar um mapa de ocupação;

2. Dilatar o mapa de acordo com o tamanho do robô;

3. Seleccionar aleatoriamente pontos no espaço livre;

4. Conectar os pontos seleccionados uns aos outros;

5. Encontrar um caminho livre de obstaculos a partir das conecções


criadas;
48
https://www.mathworks.com/help/robotics/ug/path-planning-in-environments-of-difference-complexity.html
Seguir uma trajetória – Pure Pursuit + PRM

49
https://www.mathworks.com/help/robotics/ug/path-planning-in-environments-of-difference-complexity.html
Seguir uma trajetória – Pure Pursuit + PRM

Exemplo de Código:

mrsDiffDriveNavigation.m
50
Seguir uma trajetória – Pure Pursuit + VHF
• O espaço em que o robô irá navegar pode estar limitado por obstáculos, paredes, entre outros.
• O algoritmo PRM lida com isto, mas o planeamento é feito offline, não alterando ao longo
do tempo.

E se os obstáculos se moverem? Ou aparecerem novos obstáculos durante o trajeto?

O algoritmo Vector Field Histogram (VFH)


calcula as direções sem obstáculos para um
robô com base nas leituras de sensores de
distância:
• Sensores de distância são usados para
identificar a localização de obstáculos e
proximidade.
• Os limites encontrados são convertidos em
histogramas binários para indicar direções
válidas para o robô.
• O tamanho do robô e o raio de rotação são
usados para calcular uma direção para que o
Exemplo de Código:
robô evite obstáculos e siga a direção de
destino. mrsDiffDrivePathFollowing.m 51
Proposta
• O objetivo do trabalho passa pelo desenvolvimento de um sistema de navegação que permita controlar
um robô móvel ou um braço robótico para efetuar uma trajetória pré-definida.

• A definição da trajetória deste será realizada em tempo real, através da informação recolhida por
diferentes sensores.

ü Grupos de 2/3 elementos (temos 14 módulos);

ü Usar pelo menos 1 braço robótico ou um robot


móvel;
ü Objetivo final pode ser definido pela equipa.
(depois de discutido com o docente)

ü Combinar trabalhos de diferentes equipas é possível!!


Proposta – Trabalho tradicional

Este trabalho tem como objetivo o


desenvolvimento de um sistema de navegação
que permita deslocar um robô móvel ao longo de
um percurso pré-definido. A definição da
trajetória deste será realizada em tempo real,
através da informação recolhida por diferentes
sensores.

Visão por computador – deteção dos sinais de transito.

Robótica – controlo do robot móvel em tempo real.


x

bo t
y u_ro
α_erro u_alvo

Você também pode gostar