Escolar Documentos
Profissional Documentos
Cultura Documentos
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.
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.
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.
• 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, θ)
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.
• 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.
Coordenadas gerais:
q = (x, y, θ) 14
Robô móvel como um veiculo direção diferencial
Como RR = RL +W
("#$ "%)
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
• 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
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
%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);
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.
%% 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;
24
Exemplos – Alarme de colisão
%% Collision Alarm %%
%% 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
% Application parameters
EXE_TIME = 10; % Application running time in seconds
SPEED = 30; % Motor speed
%% 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
% 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
27
Exemplos – Andar em frente (closed-loop)
start(mymotor1); % Start motor
start(mymotor2);
lastR1 = r1;
lastR2 = r2;
pause(PERIOD); % Wait for next sampling period 28
end
Exemplos práticos
Índice
30
Controlo cinemático do robô da lego
X, Y
31
Controlo cinemático do robô da lego
32
Robot Visualizer
O Robot Visualizer permite criar cenários para robótica móvel 2D, permitindo simulação e prototipagem.
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
Controlo
proporcional
37
Movimento para um Ponto
Exemplo de Código:
drive2Point.m
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.
O controlador proporcional:
39
Seguir uma Linha
• Usando um controlador proporcional:
Exemplo de Código:
Simulation results from different
initial poses for the line (1,−2, 4) drive2Line.m
40
Seguir uma trajetória
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
42
Seguir uma trajetória
Exemplo de Código:
drive2Trajectory.m
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.
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.
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.
• A definição da trajetória deste será realizada em tempo real, através da informação recolhida por
diferentes sensores.
bo t
y u_ro
α_erro u_alvo