Diferencia entre revisiones de «Vfhp local planner»
Página creada con «= Nodes = == vfhp_node.py == === Parameters === <code>'~odom_frame_id'</code> (string, default: 'odom') :: descripcion <code>'~robot_frame_id'</code> (string, default: '...» |
|||
| (No se muestran 10 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 === | |||
<code>odom</code> (nav_msgs/Odometry) | |||
:: Odometría de la base. | |||
<code>scan_front</code> (sensor_msgs/LaserScan) | |||
:: LIDAR delantero. | |||
<code>scan_back</code> (sensor_msgs/LaserScan) | |||
:: LIDAR trasero. | |||
=== Published Topics === | |||
<code>cmd_vel</code> (geometry_msgs/Twist) | |||
:: Comandos de velocidad resultado del algoritmo de evasión. | |||
<code>vfhp/active_window</code> (nav_msgs/OccupancyGrid) | |||
:: Valores de ocupación de la ventana activa (''active window''). | |||
<code>vfhp/obstacle_grid</code> (nav_msgs/OccupancyGrid) | |||
:: Valores de ocupación de la cuadrilla de obstáculos (''obstacle grid''). | |||
<code>vfhp/polar_hist</code> (vfhp_local_planner/Histogram) | |||
:: Valores de densidad de obstáculos del histograma polar (''polar histogram''). | |||
=== Services === | |||
<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>. Para | |||
<code>draw_hist</code> (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 <code>graphics</code> está activado. | |||
=== Parameters === | === Parameters === | ||
<code>'~odom_frame_id'</code> (string, default: 'odom') | <code>'~odom_frame_id'</code> (string, default: 'odom') | ||
:: | :: 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') | ||
:: | :: Marco de referencia tf de la base. | ||
<code>'~graphics'</code> (bool, default: True) | <code>'~graphics'</code> (bool, default: True) | ||
:: | :: Habilita el servicio de graficación. | ||
<code>'~decay_rate'</code> (int, default: 50) | <code>'~decay_rate'</code> (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. | ||
<code>'~decay_value'</code> (int, default: 1) | <code>'~decay_value'</code> (int, default: 1) | ||
:: | :: 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) | ||
:: | :: 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) | ||
:: | :: Tamaño (celdas) del ''obstacle grid''. | ||
<code>'~c_max'</code> (int, default: 20) | <code>'~c_max'</code> (int, default: 20) | ||
:: | :: Valor máximo de ocupación. | ||
<code>'~resolution'</code> (double, default: 0.15) | <code>'~resolution'</code> (double, default: 0.15) | ||
:: | :: Resolución del ''obstacle grid'' (m). | ||
<code>'~window_size'</code> (int, default: 25) | <code>'~window_size'</code> (int, default: 25) | ||
:: | :: Tamaño (celdas) del ''active window''. | ||
<code>'~hist_size'</code> (int, default: 180) | <code>'~hist_size'</code> (int, default: 180) | ||
:: | :: Tamaño (sectores) de los distintos histogramas polares. | ||
<code>'~kb'</code> (double, default: 10.0) | <code>'~kb'</code> (double, default: 10.0) | ||
:: | :: Constante B de la ecuación de magnitud. | ||
<code>'~kd'</code> (double, default: 1.0) | <code>'~kd'</code> (double, default: 1.0) | ||
:: | :: 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) | ||
:: | :: 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) | ||
:: | :: Radio del robot (m). | ||
<code>'~d_s'</code> (double, default: 0.05) | <code>'~d_s'</code> (double, default: 0.05) | ||
:: | :: Radio de ensanchamiento de seguridad (m). | ||
<code>'~t_lo'</code> (double, default: 175000.0) | <code>'~t_lo'</code> (double, default: 175000.0) | ||
:: | :: 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) | ||
:: | :: 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) | ||
:: | :: Velocidad lineal máxima del robot (m/s). | ||
<code>'~v_min'</code> (double, default: 0.0) | <code>'~v_min'</code> (double, default: 0.0) | ||
:: | :: Velocidad lineal mínima del robot (m/s) | ||
<code>'~mu1'</code> (double, default: 6.0) | <code>'~mu1'</code> (double, default: 6.0) | ||
:: | :: Peso del costo de seguimiento | ||
<code>'~mu2'</code> (double, default: 2.0) | <code>'~mu2'</code> (double, default: 2.0) | ||
:: | :: Peso del costo de cambios abruptos en la dirección. | ||
<code>'~mu3'</code> (double, default: 2.0) | <code>'~mu3'</code> (double, default: 2.0) | ||
:: | :: Peso de compromiso a una dirección. | ||
<code>'~dist_fcn'</code> (string, default: "GAUSS") | <code>'~dist_fcn'</code> (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 = | = 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 - 22: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
- Servicio para fijar la meta del robot. La ubicación es respecto al marco de referencia dado por el parámetro
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
graphicsestá activado.
- 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
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 inferior del polar histogram (sectores desocupados).
'~t_hi' (double, default: 200000.0)
- Valor umbral 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]