Diferencia entre revisiones de «Mecanumrob roboclaw»

De Cerlab Wiki
Saltar a: navegación, buscar
(mecanum_base_node.py)
(mecanum_base_node.py)
 
(No se muestran 3 ediciones intermedias del mismo usuario)
Línea 12: Línea 12:
 
de modo que si una medición <math>\dot{\phi'_i}</math> tiene un signo incosistente, se cumpla que  <math>\boldsymbol{\dot{\phi}} = \boldsymbol{\omega_{sign}} \odot \boldsymbol{\dot{\phi'}}</math>.
 
de modo que si una medición <math>\dot{\phi'_i}</math> tiene un signo incosistente, se cumpla que  <math>\boldsymbol{\dot{\phi}} = \boldsymbol{\omega_{sign}} \odot \boldsymbol{\dot{\phi'}}</math>.
  
El nodo tiene dos modos de funcionamiento: por controlador PID con una referencia de la velocidad angular deseado, o directamente por comandos PWM. El funcionamiento lo determina el parámetro <code>~pid_mode</code>
+
El nodo tiene dos modos de funcionamiento: por controlador PID con una referencia de la velocidad angular deseada, o directamente por comandos PWM. El funcionamiento lo determina el parámetro <code>~pid_mode</code>
  
 
=== Subscribed Topics ===
 
=== Subscribed Topics ===
Línea 41: Línea 41:
 
<code>pwm</code> (mecanumrob_common/EncTimed)
 
<code>pwm</code> (mecanumrob_common/EncTimed)
 
:: Publica la acción de los motores (valor PWM).
 
:: Publica la acción de los motores (valor PWM).
 +
 +
=== Services ===
 +
 +
<code>set_pose</code> (mecanumrob_common/SetPose)
 +
:: Establece la posición del robot.
  
 
=== Parameters ===
 
=== Parameters ===
  
 
<code>~pid_mode</code> (bool, default: true)
 
<code>~pid_mode</code> (bool, default: true)
:: Indica si se usa el control PID o si se toman directamente valores de PWM.
+
:: Indica si se usa el control PID (true) o si se toman directamente valores de PWM (false).
  
 
<code>~baudrate</code> (int, default: 115200)
 
<code>~baudrate</code> (int, default: 115200)
Línea 65: Línea 70:
 
:: Velocidad angular máxima permitida para los motores (rad/s)
 
:: Velocidad angular máxima permitida para los motores (rad/s)
  
<code>~rate</code> (dobule, default: 60.0)
+
<code>~rate</code> (double, default: 60.0)
:: Frecuencia de publicación de los mensajes de velocidad de las ruedas (Hz).
+
:: Frecuencia de muestreo y de publicación de los mensajes de velocidad de las ruedas (Hz).
  
 
<code>~Kp</code> (double, default: 10.5932)
 
<code>~Kp</code> (double, default: 10.5932)

Revisión actual del 16:23 4 dic 2019

Nodes

mecanum_base_node.py

Nodo que controla la base del Roboclaw, encapsula la interacción con los controladores Roboclaw.

Para mantener el estándar con el modelo cinemático del MecanumRob, el vector de velocidad de las ruedas \boldsymbol{\dot{\phi}} = (\dot{\phi_1},\; \dot{\phi_2},\; \dot{\phi_3},\; \dot{\phi_4}) se define con el siguiente orden: (NE, NW, SW, SE). Además se define el vector de signo \boldsymbol{\omega_{sign}} de la misma dimensión para el cálculo de velocidad angular de las ruedas, de modo que un valor positivo se define según la ley de la mano derecha visto del frente del robot, (una rueda que avanza tiene velocidad positiva). Esto se hace para mantener la consistencia externa de \boldsymbol{\dot{\phi}}, de modo que si una medición \dot{\phi'_i} tiene un signo incosistente, se cumpla que \boldsymbol{\dot{\phi}} = \boldsymbol{\omega_{sign}} \odot \boldsymbol{\dot{\phi'}}.

El nodo tiene dos modos de funcionamiento: por controlador PID con una referencia de la velocidad angular deseada, o directamente por comandos PWM. El funcionamiento lo determina el parámetro ~pid_mode

Subscribed Topics

cmd_wheels (mecanumrob_common/WheelSpeed)

Comandos de velocidad para las ruedas de la base (rad/s).

motor/NE_pwm (std_msgs/Int8)

Comandos PWM para el motore NE.

motor/NW_pwm (std_msgs/Int8)

Comandos PWM para el motore NW.

motor/SE_pwm (std_msgs/Int8)

Comandos PWM para el motore SE.

motor/SW_pwm (std_msgs/Int8)

Comandos PWM para el motore SW.

Published Topics

wheel_speed (mecanumrob_common/WheelSpeed)

Velocidad de las ruedas (rad/s).

encoders (mecanumrob_common/EncTimed)

Publica el valor de los encoders.

pwm (mecanumrob_common/EncTimed)

Publica la acción de los motores (valor PWM).

Services

set_pose (mecanumrob_common/SetPose)

Establece la posición del robot.

Parameters

~pid_mode (bool, default: true)

Indica si se usa el control PID (true) o si se toman directamente valores de PWM (false).

~baudrate (int, default: 115200)

Tasa de baudios para la conexión serial con los Roboclaw (baud/s).

~port_front (string, default: "/dev/ttyACM0")

Dispositivo Robloclaw que controla los motores delanteros.

~port_back (string, default: "/dev/ttyACM1")

Dispositivo Robloclaw que controla los motores traseros.

~frame_id (string, default: "base_link")

Marco de referencia tf de la base.

~ppv (double, default: 4775)

Pasos por vuelta del encoder.

~w_max (double, default: 31.4)

Velocidad angular máxima permitida para los motores (rad/s)

~rate (double, default: 60.0)

Frecuencia de muestreo y de publicación de los mensajes de velocidad de las ruedas (Hz).

~Kp (double, default: 10.5932)

Ganancia proporcional del controlador PID.

~Ki (double, default: Kp/0.2445)

Ganancia integral del controlador PID.

~Kd (double, default: 0.0)

Ganancia derivativa del controlador PID.

~sign_0 (int, default: 1)

Signo de rotación de la rueda \phi_1

~sign_1 (int, default: 1)

Signo de rotación de la rueda \phi_2

~sign_2 (int, default: 1)

Signo de rotación de la rueda \phi_3

~sign_3 (int, default: 1)

Signo de rotación de la rueda \phi_4