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: '...») |
(→vfhp_node.py) |
||
(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 del 16:08 6 dic 2019
Contenido
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
graphics
está 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]