Bienvenido: Ingresar
location: Diferencias para "LabElectronica/ControlRomaaIIWeb"
Diferencias entre las revisiones 2 y 10 (abarca 8 versiones)
Versión 2 con fecha 2010-06-01 19:16:05
Tamaño: 7950
Comentario:
Versión 10 con fecha 2010-11-14 14:52:20
Tamaño: 7226
Editor: TiN
Comentario:
Los textos eliminados se marcan así. Los textos añadidos se marcan así.
Línea 1: Línea 1:
#acl BecariosGrupo=write #acl BecariosGrupo:read,write,revert All:read
Línea 3: Línea 4:
Línea 5: Línea 5:
Línea 7: Línea 6:
Línea 10: Línea 8:
Línea 13: Línea 10:
{{attachment:trama.png | ""  | width="250" }} {{attachment:trama.png|""|width="250"}}
Línea 23: Línea 20:
Línea 24: Línea 22:
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.
Línea 27: Línea 25:
   * '''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

* '''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
Línea 32: Línea 32:
<img width="250" alt="" src="%ATTACHURL%/trama1.png"></img> {{attachment:trama1.png|""|width="250"}}
Línea 37: Línea 37:

||
'''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 ||   k || 0x6B || 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 ||   K || 0x4B || - || - || 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 valore 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 ==
=== Diagrama de flujo ===
||'''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) ||
Línea 89: Línea 69:

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 ==
=== Diagrama de flujo ===

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.

""

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

Diagrama de flujo

None: LabElectronica/ControlRomaaIIWeb (última edición 2010-11-14 14:52:20 efectuada por TiN)