Diferencia entre revisiones de «Vfhp local planner»

De Cerlab Wiki
Saltar a: navegación, buscar
(Services)
(vfhp_node.py)
 
(No se muestran 4 ediciones intermedias del mismo usuario)
Línea 2: Línea 2:
  
 
== vfhp_node.py ==
 
== vfhp_node.py ==
 +
 +
Implementa el algoritmo VFH+ para ''local path planning''.
  
 
=== Subscribed Topics ===
 
=== Subscribed Topics ===
Línea 31: Línea 33:
  
 
<code>set_goal</code> (vfhp_local_planner/SetGoal)
 
<code>set_goal</code> (vfhp_local_planner/SetGoal)
:: Servicio para fijar la meta del robot. La ubicación es respecto al marco de referencia dado por el parámetro <code>odom_frame</code>.
+
:: Servicio para fijar la meta del robot. La ubicación es respecto al marco de referencia dado por el parámetro <code>odom_frame</code>. Para
  
 
<code>draw_hist</code> (std_srvs/Empty)
 
<code>draw_hist</code> (std_srvs/Empty)
Línea 39: Línea 41:
  
 
<code>'~odom_frame_id'</code> (string, default: 'odom')
 
<code>'~odom_frame_id'</code> (string, default: 'odom')
:: descripcion
+
:: Marco de referencia tf de la odometría.
  
 
<code>'~robot_frame_id'</code> (string, default: 'mecanum_base')
 
<code>'~robot_frame_id'</code> (string, default: 'mecanum_base')
:: descripcion
+
:: Marco de referencia tf de la base.
  
 
<code>'~graphics'</code> (bool, default: True)
 
<code>'~graphics'</code> (bool, default: True)
:: descripcion
+
:: Habilita el servicio de graficación.
  
 
<code>'~decay_rate'</code> (int, default: 50)
 
<code>'~decay_rate'</code> (int, default: 50)
:: descripcion
+
:: Taza de ''decay'' de la ocupación de la ventana activa respecto al ciclo de control, de 0 a 100. Para 100 en cada ciclo se aplica el ''decay'', 50 aprox. cada 2 ciclos, etc. El ciclo de control se ejecuta a 10 Hz, por lo que para un decay rate de 50 la frecuencia sería aprox. 20 Hz.
  
 
<code>'~decay_value'</code> (int, default: 1)
 
<code>'~decay_value'</code> (int, default: 1)
:: descripcion
+
:: Valor en que se reduce la ocupación de cada celda al aplicar el ''decay''.
  
 
<code>'~decay_guardband'</code> (int, default: 3)
 
<code>'~decay_guardband'</code> (int, default: 3)
:: descripcion
+
:: Celdas adicionales alrededor de la ventana activa a las que se le aplica el ''decay''.
  
 
<code>'~grid_size'</code> (int, default: 125)
 
<code>'~grid_size'</code> (int, default: 125)
:: descripcion
+
:: Tamaño (celdas) del ''obstacle grid''.
  
 
<code>'~c_max'</code> (int, default: 20)
 
<code>'~c_max'</code> (int, default: 20)
:: descripcion
+
:: Valor máximo de ocupación.
  
 
<code>'~resolution'</code> (double, default: 0.15)
 
<code>'~resolution'</code> (double, default: 0.15)
:: descripcion
+
:: Resolución del ''obstacle grid'' (m).
  
 
<code>'~window_size'</code> (int, default: 25)
 
<code>'~window_size'</code> (int, default: 25)
:: descripcion
+
:: Tamaño (celdas) del ''active window''.
  
 
<code>'~hist_size'</code> (int, default: 180)
 
<code>'~hist_size'</code> (int, default: 180)
:: descripcion
+
:: Tamaño (sectores) de los distintos histogramas polares.
  
 
<code>'~kb'</code> (double, default: 10.0)
 
<code>'~kb'</code> (double, default: 10.0)
:: descripcion
+
:: Constante B de la ecuación de magnitud.
  
 
<code>'~kd'</code> (double, default: 1.0)
 
<code>'~kd'</code> (double, default: 1.0)
:: descripcion
+
:: Constante D de la ecuación de magnitud (solo para modo GAUSS).
  
 
<code>'~ke'</code> (double, default: 2.0)
 
<code>'~ke'</code> (double, default: 2.0)
:: descripcion
+
:: Constante E de la ecuación de magnitud (solo para modo GAUSS).
  
 
<code>'~robot_radius'</code> (double, default: 0.478)
 
<code>'~robot_radius'</code> (double, default: 0.478)
:: descripcion
+
:: Radio del robot (m).
  
 
<code>'~d_s'</code> (double, default: 0.05)
 
<code>'~d_s'</code> (double, default: 0.05)
:: descripcion
+
:: Radio de ensanchamiento de seguridad (m).
  
 
<code>'~t_lo'</code> (double, default: 175000.0)
 
<code>'~t_lo'</code> (double, default: 175000.0)
:: descripcion
+
:: Valor umbral <math>\tau_{low}</math> inferior del ''polar histogram'' (sectores desocupados).
  
 
<code>'~t_hi'</code> (double, default: 200000.0)
 
<code>'~t_hi'</code> (double, default: 200000.0)
:: descripcion
+
:: Valor umbral <math>\tau_{high}</math> superior del ''polar histogram'' (sectores ocupados).
  
 
<code>'~v_max'</code> (double, default: 0.41)
 
<code>'~v_max'</code> (double, default: 0.41)
:: descripcion
+
:: Velocidad lineal máxima del robot (m/s).
  
 
<code>'~v_min'</code> (double, default: 0.0)
 
<code>'~v_min'</code> (double, default: 0.0)
:: descripcion
+
:: Velocidad lineal mínima del robot (m/s)
  
 
<code>'~mu1'</code> (double, default: 6.0)
 
<code>'~mu1'</code> (double, default: 6.0)
:: descripcion
+
:: Peso del costo de seguimiento
  
 
<code>'~mu2'</code> (double, default: 2.0)
 
<code>'~mu2'</code> (double, default: 2.0)
:: descripcion
+
:: Peso del costo de cambios abruptos en la dirección.
  
 
<code>'~mu3'</code> (double, default: 2.0)
 
<code>'~mu3'</code> (double, default: 2.0)
:: descripcion
+
:: Peso de compromiso a una dirección.
  
 
<code>'~dist_fcn'</code> (string, default: "GAUSS")
 
<code>'~dist_fcn'</code> (string, default: "GAUSS")
:: descripcion
+
:: Elige la función de magnitud. Para la función original de VFH+ usar "LINEAR", para la versión mejorada desarrollada en el CERLab usar "GAUSS".
 +
 
 +
= ROS Message Types =
 +
 
 +
'''Histogram'''
 +
:: Mensaje para transmitir la información de los histogramas polares.
 +
 
 +
= ROS Service Types =
 +
 
 +
'''SetGoal'''
 +
:: Servicio para fijar la meta (x, y) del planeador.
  
 
= Referencias =
 
= Referencias =
 +
 +
 +
I. Ulrich and J. Borenstein, "VFH+: reliable obstacle avoidance for fast mobile robots," Proceedings. 1998 IEEE International Conference on Robotics and Automation (Cat. No.98CH36146), Leuven, Belgium, 1998, pp. 1572-1577 vol.2. doi: 10.1109/ROBOT.1998.677362 [https://ieeexplore.ieee.org/document/677362]
 +
 +
J. Borenstein and Y. Koren, "The vector field histogram-fast obstacle avoidance for mobile robots," in IEEE Transactions on Robotics and Automation, vol. 7, no. 3, pp. 278-288, June 1991.
 +
doi: 10.1109/70.88137 [https://ieeexplore.ieee.org/document/88137]

Revisión actual del 16:08 6 dic 2019

Nodes

vfhp_node.py

Implementa el algoritmo VFH+ para local path planning.

Subscribed Topics

odom (nav_msgs/Odometry)

Odometría de la base.

scan_front (sensor_msgs/LaserScan)

LIDAR delantero.

scan_back (sensor_msgs/LaserScan)

LIDAR trasero.

Published Topics

cmd_vel (geometry_msgs/Twist)

Comandos de velocidad resultado del algoritmo de evasión.

vfhp/active_window (nav_msgs/OccupancyGrid)

Valores de ocupación de la ventana activa (active window).

vfhp/obstacle_grid (nav_msgs/OccupancyGrid)

Valores de ocupación de la cuadrilla de obstáculos (obstacle grid).

vfhp/polar_hist (vfhp_local_planner/Histogram)

Valores de densidad de obstáculos del histograma polar (polar histogram).

Services

set_goal (vfhp_local_planner/SetGoal)

Servicio para fijar la meta del robot. La ubicación es respecto al marco de referencia dado por el parámetro odom_frame. Para

draw_hist (std_srvs/Empty)

Servicio para graficar el estado de las estructuras de datos. Genera graficas de: active window (valores de ocupación), active window (magnitudes de vectores de obstáculo) y polar histogram. Solo es posible llamar este servicio si el parámetro graphics está activado.

Parameters

'~odom_frame_id' (string, default: 'odom')

Marco de referencia tf de la odometría.

'~robot_frame_id' (string, default: 'mecanum_base')

Marco de referencia tf de la base.

'~graphics' (bool, default: True)

Habilita el servicio de graficación.

'~decay_rate' (int, default: 50)

Taza de decay de la ocupación de la ventana activa respecto al ciclo de control, de 0 a 100. Para 100 en cada ciclo se aplica el decay, 50 aprox. cada 2 ciclos, etc. El ciclo de control se ejecuta a 10 Hz, por lo que para un decay rate de 50 la frecuencia sería aprox. 20 Hz.

'~decay_value' (int, default: 1)

Valor en que se reduce la ocupación de cada celda al aplicar el decay.

'~decay_guardband' (int, default: 3)

Celdas adicionales alrededor de la ventana activa a las que se le aplica el decay.

'~grid_size' (int, default: 125)

Tamaño (celdas) del obstacle grid.

'~c_max' (int, default: 20)

Valor máximo de ocupación.

'~resolution' (double, default: 0.15)

Resolución del obstacle grid (m).

'~window_size' (int, default: 25)

Tamaño (celdas) del active window.

'~hist_size' (int, default: 180)

Tamaño (sectores) de los distintos histogramas polares.

'~kb' (double, default: 10.0)

Constante B de la ecuación de magnitud.

'~kd' (double, default: 1.0)

Constante D de la ecuación de magnitud (solo para modo GAUSS).

'~ke' (double, default: 2.0)

Constante E de la ecuación de magnitud (solo para modo GAUSS).

'~robot_radius' (double, default: 0.478)

Radio del robot (m).

'~d_s' (double, default: 0.05)

Radio de ensanchamiento de seguridad (m).

'~t_lo' (double, default: 175000.0)

Valor umbral \tau_{low} inferior del polar histogram (sectores desocupados).

'~t_hi' (double, default: 200000.0)

Valor umbral \tau_{high} superior del polar histogram (sectores ocupados).

'~v_max' (double, default: 0.41)

Velocidad lineal máxima del robot (m/s).

'~v_min' (double, default: 0.0)

Velocidad lineal mínima del robot (m/s)

'~mu1' (double, default: 6.0)

Peso del costo de seguimiento

'~mu2' (double, default: 2.0)

Peso del costo de cambios abruptos en la dirección.

'~mu3' (double, default: 2.0)

Peso de compromiso a una dirección.

'~dist_fcn' (string, default: "GAUSS")

Elige la función de magnitud. Para la función original de VFH+ usar "LINEAR", para la versión mejorada desarrollada en el CERLab usar "GAUSS".

ROS Message Types

Histogram

Mensaje para transmitir la información de los histogramas polares.

ROS Service Types

SetGoal

Servicio para fijar la meta (x, y) del planeador.

Referencias

I. Ulrich and J. Borenstein, "VFH+: reliable obstacle avoidance for fast mobile robots," Proceedings. 1998 IEEE International Conference on Robotics and Automation (Cat. No.98CH36146), Leuven, Belgium, 1998, pp. 1572-1577 vol.2. doi: 10.1109/ROBOT.1998.677362 [1]

J. Borenstein and Y. Koren, "The vector field histogram-fast obstacle avoidance for mobile robots," in IEEE Transactions on Robotics and Automation, vol. 7, no. 3, pp. 278-288, June 1991. doi: 10.1109/70.88137 [2]