Bienvenido: Ingresar

Por favor ingresa primero al sistema.

Quitar mensaje
location: LabElectronica / ControlRomaaIIWeb

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:

""

# 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

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