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 5 ediciones intermedias del mismo usuario)
Línea 3: Línea 3:
 
== mecanum_base_node.py ==
 
== mecanum_base_node.py ==
  
Nodo que controla la base del COMPa o MecanumRob, que consta de dos controladores Roboclaw y ruedas mecanum.
+
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
 
Para mantener el estándar con el modelo cinemático del MecanumRob, el
 
vector de velocidad de las ruedas  <math>\boldsymbol{\dot{\phi}} = (\dot{\phi_1},\; \dot{\phi_2},\; \dot{\phi_3},\; \dot{\phi_4})</math>  
 
vector de velocidad de las ruedas  <math>\boldsymbol{\dot{\phi}} = (\dot{\phi_1},\; \dot{\phi_2},\; \dot{\phi_3},\; \dot{\phi_4})</math>  
se define con el siguiente orden: (NE, NW, SW, SE). Además se define el vector de signo  <math>\boldsymble{\omega_{sign}}</math>  de la misma dimensión  
+
se define con el siguiente orden: (NE, NW, SW, SE). Además se define el vector de signo  <math>\boldsymbol{\omega_{sign}}</math>  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,
 
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 <math>\boldsymbol{\dot{\phi}}</math>,
 
(una rueda que avanza tiene velocidad positiva). Esto se hace para mantener la consistencia externa de <math>\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>.
 
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 deseada, o directamente por comandos PWM. El funcionamiento lo determina el parámetro <code>~pid_mode</code>
  
 
=== Subscribed Topics ===
 
=== Subscribed Topics ===
Línea 16: Línea 18:
 
<code>cmd_wheels</code> (mecanumrob_common/WheelSpeed)
 
<code>cmd_wheels</code> (mecanumrob_common/WheelSpeed)
 
:: Comandos de velocidad para las ruedas de la base (rad/s).
 
:: Comandos de velocidad para las ruedas de la base (rad/s).
 +
 +
<code>motor/NE_pwm</code> (std_msgs/Int8)
 +
:: Comandos PWM para el motore NE.
 +
 +
<code>motor/NW_pwm</code> (std_msgs/Int8)
 +
:: Comandos PWM para el motore NW.
 +
 +
<code>motor/SE_pwm</code> (std_msgs/Int8)
 +
:: Comandos PWM para el motore SE.
 +
 +
<code>motor/SW_pwm</code> (std_msgs/Int8)
 +
:: Comandos PWM para el motore SW.
  
 
=== Published Topics ===
 
=== Published Topics ===
Línea 27: 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 51: 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 15: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