Diferencia entre revisiones de «Mecanumrob model»

De Cerlab Wiki
Saltar a: navegación, buscar
(Página creada con «= Nodes = == model_node.py == Este nodo modela la cinemática del MecanumRob. Se usa el modelo cinemático directo para determinar la pose en el marco de referencia glob...»)
 
(model_node.py)
 
(No se muestran 2 ediciones intermedias del mismo usuario)
Línea 7: Línea 7:
 
Se usa el modelo cinemático directo para determinar la pose en el marco de
 
Se usa el modelo cinemático directo para determinar la pose en el marco de
 
referencia global, a partir de las velocidades de las ruedas.
 
referencia global, a partir de las velocidades de las ruedas.
Se define el marco de referencia del robot R: (Xr, Yr, Zr) tal que el eje
+
Se define el marco de referencia del robot <math>R = (X_r,\; Y_r,\; Z_r)</math> tal que el eje
Xr es hacia adelante y el eje Yr es hacia la izquierda.
+
<math>X_r</math> es hacia adelante y el eje <math>Y_r</math> es hacia la izquierda.
Además se usa el modelo cinemático inverso para calcular velocidades de las ruedas a partir de comandos de velocidad (vx, vy, w) en el marco de referencia R
+
Además se usa el modelo cinemático inverso para calcular velocidades de las ruedas a partir de comandos de velocidad <math>(\dot{x},\; \dot{y},\; \dot{\theta})</math> en el marco de referencia R.
  
 
=== Subscribed Topics ===
 
=== Subscribed Topics ===
Línea 42: Línea 42:
  
 
<code>~a11</code> (double, default: 1.0)
 
<code>~a11</code> (double, default: 1.0)
:: Componentes de la matriz de corrección
+
:: Componentes de la matriz de corrección.
  
 
<code>~a22</code> (double, default: 1.0)
 
<code>~a22</code> (double, default: 1.0)
:: Componentes de la matriz de corrección
+
:: Componentes de la matriz de corrección.
  
 
<code>~a33</code> (double, default: 1.0)
 
<code>~a33</code> (double, default: 1.0)
:: Componentes de la matriz de corrección
+
:: Componentes de la matriz de corrección.
  
 
<code>~cmd_timeout</code> (double, default: 0.5)
 
<code>~cmd_timeout</code> (double, default: 0.5)
 
:: Timeout de comandos de velocidad en segundos. Luego de este tiempo sin recibir comandos de velocidad la misma se pone en cero.
 
:: Timeout de comandos de velocidad en segundos. Luego de este tiempo sin recibir comandos de velocidad la misma se pone en cero.
  
<code>~base_frame_id</code> (string, default: "move_base")
+
<code>~base_frame_id</code> (string, default: "base_link")
:: Marco de referencia en tf de la base del robot, se usa al publicar los mensajes de odometría en el topic <code>wheel_odom</code>
+
:: Marco de referencia en tf de la base del robot, se usa al publicar los mensajes de odometría en el topic <code>wheel_odom</code>.
  
 
<code>~odom_frame_id</code> (string, default: "wheel_odom")
 
<code>~odom_frame_id</code> (string, default: "wheel_odom")
:: Marco de referencia en tf de la odometría, se usa al publicar los mensajes de odometría en el topic <code>wheel_odom</code>
+
:: Marco de referencia en tf de la odometría, se usa al publicar los mensajes de odometría en el topic <code>wheel_odom</code>.
 +
 
 +
== ekf.py ==
 +
 
 +
Este nodo publica la transformación del marco de referencia de la odometría a la base del robot.
 +
 
 +
Eventualmente también tendrá un filtro de Kalman para hacer fusión sensorial de los datos de odometría de las ruedas con los datos del acelerómetro y giroscopio.
 +
 
 +
=== Subscribed Topics ===
 +
 
 +
<code>wheel_odom</code> (nav_msgs/Odometry)
 +
:: Datos de odometría obtenidos con el modelo cinemático a partir de la velocidad de las ruedas.
 +
 
 +
<code>imu_data/raw</code> (sensor_msgs/Imu)
 +
:: Datos del acelerómetro y giroscopio.
 +
 
 +
<code>imu_data/mag</code> (sensor_msgs/MagneticField)
 +
:: Datos del magnetómetro.
 +
 
 +
=== Published Topics ===
 +
 
 +
<code>odom</code> (nav_msgs/Odometry)
 +
:: Odometría de la base obtenido del filtro de Kalman, de momento solo vuelve a publicar los datos de <code>wheel_odom</code>.
 +
 
 +
<code>ekf_imu</code> (sensor_msgs/Imu)
 +
:: Datos del acelerómetro y giroscopio usados para el último cálculo del filtro de Kalman.
 +
 
 +
<code>ekf_mag</code> (sensor_msgs/MagneticField)
 +
:: Datos del magnetómetro usados para el último cálculo del filtro de Kalman.
 +
 
 +
=== Parameters ===
 +
 
 +
<code>~base_frame_id</code> (string, default: "base_link")
 +
:: Marco de referencia en tf de la base del robot, se usa al publicar los mensajes de odometría en el topic <code>wheel_odom</code>.
 +
 
 +
<code>~odom_frame_id</code> (string, default: "odom")
 +
:: Marco de referencia en tf de la odometría, se usa al publicar los mensajes de odometría en el topic <code>wheel_odom</code>.
 +
 
 +
=== Provided tf Transforms ===
 +
<code>~odom_frame_id</code> → <code>~base_frame_id</code>

Revisión actual del 13:05 27 nov 2019

Nodes

model_node.py

Este nodo modela la cinemática del MecanumRob.

Se usa el modelo cinemático directo para determinar la pose en el marco de referencia global, a partir de las velocidades de las ruedas. Se define el marco de referencia del robot R = (X_r,\; Y_r,\; Z_r) tal que el eje X_r es hacia adelante y el eje Y_r es hacia la izquierda. Además se usa el modelo cinemático inverso para calcular velocidades de las ruedas a partir de comandos de velocidad (\dot{x},\; \dot{y},\; \dot{\theta}) en el marco de referencia R.

Subscribed Topics

wheel_speed (mecanumrob_common/WheelSpeed)

Topic donde se reciben velocidades de las ruedas para calcular la odometría.

cmd_vel (geometr_msgs/Twist)

Topic donde se reciben comandos de velocidad para el movimiento de la base.

Published Topics

cmd_wheels (mecanumrob_common/WheelSpeed)

Publica velocidades de las ruedas para obtener el movimiento deseado.

wheel_odom (nav_msgs/Odometry)

Publica la odometría obtenida del modelo cinemático directo.

pose_kinematic (geometr_msgs/Pose2D)

Publica la odometría obtenida del modelo cinemático directo.

Parameters

~radius (double, default: 0.1015)

Radio de las ruedas en metros.

~la (double, default: 0.2940558)

Distancia del eje de las ruedas en al centro del robot sobre el eje Y en metros.

~lb (double, default: 0.21032724)

Distancia del eje de las ruedas en al centro del robot sobre el eje X en metros.

~a11 (double, default: 1.0)

Componentes de la matriz de corrección.

~a22 (double, default: 1.0)

Componentes de la matriz de corrección.

~a33 (double, default: 1.0)

Componentes de la matriz de corrección.

~cmd_timeout (double, default: 0.5)

Timeout de comandos de velocidad en segundos. Luego de este tiempo sin recibir comandos de velocidad la misma se pone en cero.

~base_frame_id (string, default: "base_link")

Marco de referencia en tf de la base del robot, se usa al publicar los mensajes de odometría en el topic wheel_odom.

~odom_frame_id (string, default: "wheel_odom")

Marco de referencia en tf de la odometría, se usa al publicar los mensajes de odometría en el topic wheel_odom.

ekf.py

Este nodo publica la transformación del marco de referencia de la odometría a la base del robot.

Eventualmente también tendrá un filtro de Kalman para hacer fusión sensorial de los datos de odometría de las ruedas con los datos del acelerómetro y giroscopio.

Subscribed Topics

wheel_odom (nav_msgs/Odometry)

Datos de odometría obtenidos con el modelo cinemático a partir de la velocidad de las ruedas.

imu_data/raw (sensor_msgs/Imu)

Datos del acelerómetro y giroscopio.

imu_data/mag (sensor_msgs/MagneticField)

Datos del magnetómetro.

Published Topics

odom (nav_msgs/Odometry)

Odometría de la base obtenido del filtro de Kalman, de momento solo vuelve a publicar los datos de wheel_odom.

ekf_imu (sensor_msgs/Imu)

Datos del acelerómetro y giroscopio usados para el último cálculo del filtro de Kalman.

ekf_mag (sensor_msgs/MagneticField)

Datos del magnetómetro usados para el último cálculo del filtro de Kalman.

Parameters

~base_frame_id (string, default: "base_link")

Marco de referencia en tf de la base del robot, se usa al publicar los mensajes de odometría en el topic wheel_odom.

~odom_frame_id (string, default: "odom")

Marco de referencia en tf de la odometría, se usa al publicar los mensajes de odometría en el topic wheel_odom.

Provided tf Transforms

~odom_frame_id~base_frame_id