Robot SLAM y navegación autónoma (4) - paquete de funciones de navegación

Robot SLAM y navegación autónoma (4) - paquete de funciones de navegación

1. Marco de navegación

La clave de la navegación es el posicionamiento del robot y la planificación de la ruta.

  • move_base: Realice una planificación de ruta óptima en la navegación del robot
  • amcl: Realice el posicionamiento del robot
    en mapas bidimensionales Basado en los dos paquetes funcionales anteriores, ROS proporciona una serie de marcos de navegación completos:
    Inserte la descripción de la imagen aquí

El robot libera la información del sensor necesaria y la posición de destino para la navegación, y ROS puede completar la función de navegación. En este marco, el paquete de funciones move_base proporciona la interfaz operativa e interactiva principal para la navegación. El paquete de funciones amcl garantiza la precisión de la ruta y localiza con precisión dónde se encuentra.
1) Primero, el paquete de funciones de navegación recopila la información del sensor del robot para lograr el efecto de evitar obstáculos en tiempo real. El robot publica sensor_msgs / LaserScan o información de nube de puntos 3D a través de ROS.
2) En segundo lugar, el paquete de funciones de navegación publica la información del odómetro en formato nav_msgs / Odometry y, al mismo tiempo, publica la transformación TF correspondiente.
3) Finalmente, la salida del paquete de funciones de navegación son los comandos de control de formato geometry_msgs / Twist, y el robot completa las tareas a través de estos comandos.
Hay muchos paquetes funcionales incluidos en el marco de navegación, que se pueden instalar directamente usando el siguiente comando:

sudo apt-get install ros-kinetic-navigation

Dos, paquete de funciones move_base

La planificación de rutas consta principalmente de los dos planificadores siguientes:

  • Planificación de ruta global (global_planner): de acuerdo con la ubicación de destino dada y el mapa global para la planificación de ruta general. En la navegación, utilice el algoritmo Ditesco o A * para planificar la ruta global y calcular la mejor ruta.
  • Planificación de implementación local (local_planner): En situaciones reales, debido a posibles obstáculos, es imposible seguir perfectamente la planificación de ruta global. La planificación de la implementación local es implementada por el módulo local_planner, utilizando el algoritmo Dynamic Window Approaches para buscar múltiples rutas para evitar obstáculos, criterios de evaluación integral (si golpear el obstáculo, el tiempo requerido), seleccionar la ruta óptima y calcular la velocidad lineal en el ciclo de conducción y velocidad angular para evitar colisiones con obstáculos dinámicos.

1. Temas y servicios

Inserte la descripción de la imagen aquí

2. Configuración de parámetros

Inserte la descripción de la imagen aquí

Tres, paquete de funciones amcl

Posicionamiento autónomo: el robot puede calcular su posición en el mapa en cualquier estado.
ROS proporciona un método de localización de Monte Carlo adaptativo (o muestreo kld) (amcl), que es un método probabilístico y estadístico que utiliza un filtro de partículas para rastrear la postura de un robot frente a un mapa existente.

1. Temas y servicios

Inserte la descripción de la imagen aquí

2. Configuración de parámetros

Parámetros generales del filtro
Inserte la descripción de la imagen aquí
Modelo de parámetro láser Parámetros del modelo de
Inserte la descripción de la imagen aquí
odómetro
Inserte la descripción de la imagen aquí

3. Transformación de coordenadas

El odómetro puede ayudar al posicionamiento del robot, y amcl también puede realizar el posicionamiento del robot, pero existen diferencias entre los dos:
Inserte la descripción de la imagen aquí

  • Posicionamiento del odómetro: solo use los datos del odómetro para procesar la conversión TF entre / base y / odom
  • Posicionamiento amcl: puede estimar la información de pose del robot en el mapa / sistema de coordenadas del mapa y proporcionar conversión TF entre / base, / odom y / map

Cuarto, la configuración del mapa de costos.

El mapa de navegación utiliza dos mapas de costos para almacenar información sobre obstáculos en el entorno circundante:

  • Mapa de costos de planificación de ruta global (global_costmap)
  • Planificación de ruta local y evitación de obstáculos en tiempo real (local_costmap)
    dos mapas de costos necesitan usar algunos archivos de configuración comunes o independientes: archivos de configuración general, archivos de configuración de planificación global y archivos de configuración de planificación local.

1. Archivo de configuración general

El mapa de costos se utiliza para almacenar la información de obstáculos del entorno circundante, que debe declarar el mensaje del sensor del robot al que el mapa presta atención para actualizar la información del mapa. Para la selección de configuración común de los dos mapas de costos, cree un archivo de configuración llamado costmap_common_params.yaml, que se analiza de la siguiente manera:

#这两个参数用来设置代价地图中障碍物的相关阀值
obstacle_range: 2.5#用来设置障碍物的最大范围,若设置为2.5,则表在2.5m范围内检测到的障碍信息才会在地图中更新
raytrace_range: 3.0#用来设置检测自由空间的最大范围,设置为3,.0,表示在3m的范围内机器人将根据传感器的信息清楚范围内的自由空间
 
 
#footprint: [[0.175, 0.175], [0.175, -0.175], [-0.175, -0.175], [-0.175, 0.175]]
#footprint_inflation: 0.01
robot_radius: 0.175
inflation_radius: 0.1#这个是机器人和障碍物保持的最小安全距离为0.1m以上
#这个footprint参数设置机器人在二维地图上的占用的面积,参数以机器人的中心作为坐标原点
#要是机器人外形是圆形,则需要设置机器人的外形半径robot_radius
 
 
max_obstacle_height: 0.6
min_obstacle_height: 0.0
#这两个参数描述障碍物的最大高度和最小高度
 
observation_sources: scan#这里以激光雷达为例
scan: {
    
    data_type: LaserScan, topic: /scan, marking: true, clearing: true, expected_update_rate: 0}
#observation_sources参数列出了代价地图需要关注的所有的传感器信息,每个传感器信息都会在后面列出来
#data_type表示激光数据或者是点云数据使用的消息
#topic:表示传感器发布的话题的名称
#marking和clearing:表示是否需要使用传感器的实时信息来添加或清除代价地图中的障碍物信息

2. Archivo de configuración de planificación global

El archivo de configuración de planificación global se utiliza para almacenar los parámetros para configurar el mapa de costos global, llamado global_costmap_params.yaml, el código se explica en detalle:

global_costmap:
   global_frame: map 
#用来表示全局代价地图需要在哪个参考系下运行,这里选择了map参考系
 
   robot_base_frame: base_footprint 
#参数用来表示代价地图可以参考的机器人本体的坐标系
 
   update_frequency: 1.0
#参数用来决定全局地图信息更新的频率,单位是Hz
 
   publish_frequency: 1.0
 
   static_map: true
#参数用来决定代价地图是否需要根据map_server提供的地图信息进行初始化,如果不需要使用已有的地图这最好设置为false
 
   rolling_window: false
   resolution: 0.01#分辨率
   transform_tolerance: 1.0#转换容忍
   map_type: costmap#地图类型

3. Archivo de configuración de planificación local

El archivo de configuración de planificación local se utiliza para almacenar los parámetros de configuración del mapa de costos, llamado local_costmap_params.yaml, el código se explica en detalle de la siguiente manera:

local_costmap:
    #下面的这几个参数和全局规划配置文件中的参数相同
   global_frame: map
   robot_base_frame: base_footprint
   update_frequency: 3.0
   publish_frequency: 1.0#参数用于设置代价地图发布可视化信息的频率,单位是Hz
   static_map: true
 
   rolling_window: false
#参数是用来设置在机器人移动过程中是否可以需要滚动窗口以保持机器人在中心位置
 
   width: 6.0
   height: 6.0
   resolution: 0.01
#这三个参数分别设置代价地图的长(米)高(米)和分辨率(米/格)虽然分辨率设置和静态地图的不同,但是一般条件下是相同的
 
   transform_tolerance: 1.0

Cinco, configuración de planificador local

La función principal del planificador local base_local_planner es calcular las instrucciones de control de velocidad emitidas al robot de acuerdo con la ruta global planificada.
El plan configura los parámetros relevantes de acuerdo con las especificaciones del robot, y crea un archivo de configuración llamado base_local_planner_params.yaml, el código es el siguiente:

controller_frequency: 3.0#控制频率
recovery_behavior_enabled: false
clearing_rotation_allowed: false
 
TrajectoryPlannerROS:#声明机器人本地规划采用Trajectory Rollout算法
#下面是设置算法需要用到的机器人的速度、加速度阀值等参数
   max_vel_x: 0.5
   min_vel_x: 0.1
   max_vel_y: 0.0  # zero for a differential drive robot(0是为差动机器人设置的)
   min_vel_y: 0.0
   max_vel_theta: 1.0
   min_vel_theta: -1.0
   min_in_place_vel_theta: 0.4
   escape_vel: -0.1
   acc_lim_x: 1.5
   acc_lim_y: 0.0  # zero for a differential drive robot(0是为差动机器人设置的)
   acc_lim_theta: 1.2
 
   holonomic_robot: false
   yaw_goal_tolerance: 0.1 # about 6 degrees(偏航的角度容忍度大约是6°)
   xy_goal_tolerance: 0.05  # 5 cm
   latch_xy_goal_tolerance: false
   pdist_scale: 0.4
   gdist_scale: 0.8
   meter_scoring: true
 
   heading_lookahead: 0.325
   heading_scoring: false
   heading_scoring_timestep: 0.8
   occdist_scale: 0.05
   oscillation_reset_dist: 0.05
   publish_cost_grid_pc: false
   prune_plan: true
 
   sim_time: 1.0
   sim_granularity: 0.05
   angular_sim_granularity: 0.1
   vx_samples: 8
   vy_samples: 0  # zero for a differential drive robot
   vtheta_samples: 20
   dwa: true
   simple_attractor: false

Supongo que te gusta

Origin blog.csdn.net/weixin_45661757/article/details/114044963
Recomendado
Clasificación