Tamaño: 7240
Comentario:
|
Tamaño: 7241
Comentario:
|
Los textos eliminados se marcan así. | Los textos añadidos se marcan así. |
Línea 20: | Línea 20: |
La comunicación entre la PC a bordo y el controlador embebido del robot !RoMAA se realiza a través del puerto serie (RS232), utilizando una trama predefinida. La comunicación es del tipo maestro/escavo, siendo la PC a bordo el maestro y el controlador embebido el esclavo. La trama utilizada varía ligeramente dependiendo si corresponde de un comando enviado de la PC al controlador embebido o si son datos que devuelve el controlador. | La comunicación entre la PC a bordo y el controlador embebido del robot !RoMAA se realiza a través del puerto serie (RS232), utilizando una trama predefinida. La comunicación es del tipo maestro/esclavo, siendo la PC a bordo el maestro y el controlador embebido el esclavo. La trama utilizada varía ligeramente dependiendo si corresponde de un comando enviado de la PC al controlador embebido o si son datos que devuelve el controlador. |
Sistema de control de a bordo del robot !RoMAA-II
Objetivos
Modos de funcionamiento
Comunicación
Trama
La trama de petición de datos de la PC de abordo, está representada en el siguiente gráfico:
- Representa el byte de Inicio de Trama.
# Es un número entero, que indica la cantidad de bytes que se envian (no se tiene en cuenta el Inicio de Trama).
C Representa los distintos Comandos de Petición de la PC de abordo.
Datos son los datos, los cuales pueden ser, ninguno, 1 char, 2 float (8 char), 3 float (12 char) o 2 int (8 char)
Borrador
La comunicación entre la PC a bordo y el controlador embebido del robot !RoMAA se realiza a través del puerto serie (RS232), utilizando una trama predefinida. La comunicación es del tipo maestro/esclavo, siendo la PC a bordo el maestro y el controlador embebido el esclavo. La trama utilizada varía ligeramente dependiendo si corresponde de un comando enviado de la PC al controlador embebido o si son datos que devuelve el controlador.
La trama de comandos de la PC a bordo al controlador tiene el siguiente formato
primer byte: comienza siempre con un byte de inicio de trama, más precisamente el caracter ASCII del asterisco ('*' = 0x2A)
segundo byte: indica el tamaño de la trama sin incluir el byte de inicio de trama
tercer byte: indica el comando que debe ejecutar el controlador embebido utilizando, si es debido, los bytes de datos de la trama
el siguiente esquema muestra la trama.
<img width="250" alt="" src="%ATTACHURL%/trama1.png"></img>
La trama enviada por el controlador embebido a la PC no tiene el campo "comando" (3er byte).
Los comandos disponibles se indican en la siguiente tabla
comando |
ASCII |
hexa |
*# bytes de datos* |
bytes de datos |
descripción |
Reset |
r |
0x72 |
- |
- |
Reset general de todas las variables del controlador |
Modo de lazo abierto |
o |
0x6F |
- |
- |
En lazo abierto se controla mediante comandos de PWM |
Modo de lazo cross-coupling |
c |
0x63 |
- |
- |
Fija el modo lazo cerrado para comandos de (v,w) |
Modo lazo cerrado de motores |
f |
0x66 |
- |
- |
Lazo cerrado de motors (sin cross-coupling), funciona con comandos de vel. de motores |
Petición de modo |
e |
0x65 |
- |
- |
Petición del modo actual del funcionamiento |
Habilitación de motores |
h |
0x68 |
- |
- |
Habilita los motores, para responder a los comandos |
Deshabilitación de motores |
H |
0x48 |
- |
- |
Deshabilita los motores |
Fijar PID de los motores |
m |
0x6D |
12 |
3 números en punto flotante (Kp,Ki,Kd) |
Fijar fila las constantes Kp, Ki y Kd de los controladores PID de los motores |
Petición de PID de los motores |
M |
0x4D |
- |
- |
Petición de las constantes Kp, Ki, y Kd de los controladores PID de los motores |
Fijar PID del lazo cross-coupling |
v |
0x76 |
12 |
3 números en punto flotante (Kp,Ki,Kd) |
Fijar fila las constantes Kp, Ki y Kd de los controladores PID del cross-coupling |
Petición de PID de los motores |
V |
0x56 |
- |
- |
Petición de las constantes Kp, Ki, y Kd de los controladores PID del cross-coupling |
Fijar velocidad |
s |
0x73 |
1. |
2 números en punto flotante, (v,w) |
Fijar la velocidad lineal y angular del robot |
Petición de velocidad |
S |
0x53 |
- |
- |
Petición de la velocidad lineal y angular actual del robot |
Fijar velocidad de los motores |
w |
0x77 |
1. |
2 números en punto flotante (v1,v2) |
Fijar velocidad lineal de cada uno de los motores indep. |
Fijar PWM |
p |
0x70 |
1. |
2 números enteros de PWM |
Fija el valor de PWM para cada motor (pwm1,pwm2) en modo lazo abierto |
Petición PWM |
P |
0x50 |
- |
- |
Petición de los valores de PWM de cada motor |
Fijar valores de odometría |
y |
0x79 |
12 |
3 números en punto flotante (x,y,theta) |
Fijar valor de odometría, posición y orientación (x,y,theta) |
Petición de odometría |
Y |
0x59 |
- |
- |
Petición del valor de odometría (x,y,theta) |
Reset de odoemtría |
z |
0x7A |
- |
- |
Borrar los valores de odometría (x,y,theta)=(0,0,0) |
Fijar tiempo de cierre de lazo |
t |
0x74 |
1. |
Valor de 0-255 en milisegundos |
Fijar el tiempo en el que se ejecuta el lazo de control |
Petición tiempo de cierre de lazo |
T |
0x54 |
- |
- |
Petición de tiempo de cierre de lazo |
Fijar tiempo de logging |
l |
0x6C |
1. |
Valor de 0-255 en milisegundos |
Fijar el tiempo en que el controlador envía los datos en logging |
Petición de tiempo de logging |
L |
0x4C |
- |
- |
Petición del tiempo de logging de datos |
Fijar tiempo de calc. de odom. |
x |
0x78 |
1. |
Valor de 0-255 en milisegundos |
FIjar el tiempo en el que se calcula la odometría |
Petición tiempo de calc. de odom. |
X |
0x58 |
- |
- |
Petición del tiempo del cálculo de odometría |
Fijar constantes cinemáticas |
k |
0x6B |
1. |
2 números en punto floatante (r,b) |
Fijar valores cinemáticos, r:radio de la rueda y b:dist. entre ruedas |
Petición de const. cinemáticas |
K |
0x4B |
- |
- |
Petición de valores cinemáticos |
Petición de la geometría del robot |
G |
0x47 |
- |
- |
Petición de las dimensiones geométricas del robot (w,l,h) |
La trama de datos utilizada por el controlador embebido para responder a los comandos (de petición) de la PC de abordo difiere de la anterior únicamente en la ausencia del tercer byte (byte de comando). Las tramas disponibles son
resp. al comando |
*# bytes de datos* |
bytes de datos |
descripción |
|
Petición del modo de lazo |
1 |
1 byte que indica el modo |
modo |
|
Petición de PID de motores |
12 |
3 números en punto flotante |
El controlador responde enviando los valores Kp, Ki, y Kd del controlador PID de los motores |
|
Petición de PID de cross-coupling |
12 |
3 números en punto flotante |
El controlador responde enviando los valores Kp, Ki, y Kd del controlador PID de cross-coupling |
|
Petición de velocidad |
1. |
2 números en punto flotante |
El controlador responde enviando la velocidad lineal y angular actual del robot |
|
Petición de PWM |
1. |
2 números enteros |
El controlador responde enviando los valores de PWM de cada motor |
|
Petición de odometría |
12 |
3 números en punto flotante (x,y,theta) |
El controlador responde enviando el valor de odometría (x,y,theta) |
|
Petición de contadores de encoders |
1. |
2 números enteros |
El controlador responde con las cuentas de los encoder (enc1,enc2) |
|
Petición de vel. lineal de las ruedas |
1. |
2 números en punto flotante |
El controlador responde las velocidades lineales de cada rueda (v1,v2) |
|
Petición de vel. angular de las ruedas |
1. |
2 números en punto flotante |
El controlador responde con las velocidades angulares de cada rueda (w1,w2) |
|
Petición de despl. lineal de las ruedas |
1. |
2 números en punto flotante |
El controlador responde con los despl. lineales de cada rueda (l1,l2) |
Comandos
Software embebido