Esquema de control de planificación del robot de limpieza
autor | Información del contacto |
---|---|
Para descanso | [email protected] |
Directorio de artículos
Introducción al programa
Solución de control de planificación (PNC) para robots comerciales de barrido/lavado de interiores. Consta de los siguientes paquetes funcionales:
- clean_msg: definición de mensaje de función
- clean_pnc: algoritmo de control de planificación
- clean_rviz: complemento de prueba de simulación rviz
La solución actual de PNC admite las siguientes funciones:
- navegación autónoma de punto fijo
- limpieza de ruta fija
- Limpieza de cobertura de área
- Limpieza a lo largo de la pared
- Retorno y recarga autónomos
La solución PNC cumple con los requisitos de escena comunes de los robots de limpieza. Además, también es compatible con las siguientes características:
- Limpieza de puntos de interrupción
- Trampeo de áreas limpias
- Configuración de pared virtual
- Configuración del área de limpieza prohibida
- Configuración de limpieza de anulación dinámica/estática
- Ajustes de barrido izquierdo/derecho a lo largo de la pared
- Ajusta dinámicamente la velocidad (según la distancia del obstáculo)
- Estadísticas de datos de limpieza (pista de limpieza, tasa de limpieza, área, consumo de tiempo, etc.)
- Soporte de colisión para diferentes formas de chasis
- Soporte de control de equipos de limpieza de barrido/fregado
- …
Diseño
enlace del módulo
La relación salida/salida relevante del módulo PNC se muestra en la figura anterior:
- ingresar
- Datos del sensor, como lidar, cámara, etc.
- postura de posicionamiento
- datos del mapa
- cambio de TF
- producción
- Instrucciones de control de robots
- Instrucciones de control del equipo de limpieza
- Limpieza de datos de tareas como estado, informes, etc.
transformación de coordenadas
El funcionamiento de la solución general requiere el apoyo de los TF relevantes. Las relaciones de TF relevantes se definen de la siguiente manera:
Nota: El marco presentado aquí
odom_link
se debe principalmente a que algunos motores de movimiento del chasis no están instalados en el centro del chasis.
Marco de algoritmo
- task_manager: administrador de ejecución de tareas limpias. Recibir la cola de tareas enviada por la capa superior y ejecutarlas una a una.
- tarea: Descripción de la definición de la tarea de navegación, actualmente admite las siguientes cinco tareas de navegación:
- pose_navigator: tarea de navegación autónoma de punto fijo. Puede realizar la función del punto A a B.
- path_follower: Tareas de limpieza de rutas fijas. Se puede utilizar para la limpieza de rutas predefinidas.
- area_cleaner: Tarea de limpieza de cobertura de área. Se puede utilizar para la limpieza de cobertura de área fija.
- wall_follower: Sigue la tarea de limpieza a lo largo de la pared. Se puede usar para limpiar a lo largo de las ronchas de la pared.
- auto_charger: tareas autónomas de retorno y recarga. Cuando el robot tiene poca energía, volverá automáticamente al viaje y se recargará.
- tasker:导航任务实现抽象。上述每个导航任务都是一个tasker,一般每个tasker由以下三部分组成:
- planner:规划器。一个tasker可根据要实现的功能搭配多个planner,比如实现pose_navigator要搭配astar_path_planner和dwa_path_planner。现支持的planner有:
- astar_path_planner:A*全局路径规划算法。用于A到B点路径生成
- dwa_path_planner:DWA局部路径规划算法。用于路径跟踪。
- clean_path_planner:覆盖路径规划算法。用于区域覆盖清洁路线生成。
- contours_path_planner:沿墙路径规划算法。用于沿墙贴边清洁路径生成。
- decider:决策器。一个tasker可根据要实现的功能搭配多个decider,比如实现pose_navigator要搭配global_plan_decider和local_plan_decider。现支持的decider有:
- global_plan_decider:全局规划决策器。用于判断是否需要进行全局路径重规划。
- local_plan_decider:局部规划决策器。用于局部路径规划失败处理。
- path_follow_decider:路径跟踪决策器。用于路径跟踪停障等待和绕障处理。
- navi_logic:导航逻辑。一个tasker可根据要实现的功能配合planner和decider进行调用逻辑组合,从而实现对应功能。
- planner:规划器。一个tasker可根据要实现的功能搭配多个planner,比如实现pose_navigator要搭配astar_path_planner和dwa_path_planner。现支持的planner有:
- tarea: Descripción de la definición de la tarea de navegación, actualmente admite las siguientes cinco tareas de navegación:
- cost_map:代价地图。用于障碍物碰撞检测。
- footprint_model:机器人碰撞模型描述。可根据机器人形状进行定义。
- global_cost_map:全局代价地图。可用于全局规划路径和清洁规划路径生成。
- local_cost_map:局部代价地图。可用于局部规划路径生成。
- fuction_map:功能地图。用于相关清洁功能实现,比如禁止清洁区域。
- forbidden_clean_area:禁止清洁区域。限定清洁环境中,某些区域只允许经过,不可以清洁。
- task_cleaned_area:已清洁区域。用于清洁任务中,已经清洁区域统计,生成相关清洁报告。
- clean_system:清洁设备控制器。用于扫地/洗地清洁设备开关控制。
功能设计
定点自主导航
定点自主导航任务,可实现A到B点功能。功能设计如下图所示:
- 由astar_path_planner生成机器人当前位置到导航目标点全局路径。
- 得到全局路径后,dwa_path_planner则进行跟踪控制。
- 在导航过程中,global_plan_decider会判断全局路径可达性,如果当前全局路径不可达,则重新进行全局路径规划。
- 在导航过程中,local_plan_decider会根据dwa_path_planner规划状态,进行局部路径规划失败处理。
固定路线清洁
固定路线清洁任务,可用于预定义路线清洁。功能设计如下图所示:
- 首先机器人会根据pose_navigator一样的逻辑导航到离清洁路线最近点,然后开始清洁路线跟踪。
- 清洁路线跟踪使用dwa_path_planner。
- 在开始清洁路线跟踪后,path_follow_decider判断跟踪路线是否需要停障。
- 如果遇到障碍物则进行停障等待。
- 停障等待超时后,进行绕障继续跟踪清洁路线。
- 在清洁路线跟踪过程中,local_plan_decider会根据dwa_path_planner规划状态,进行局部路径规划失败处理。
区域覆盖清洁
区域覆盖清洁任务,可用于固定区域覆盖式清洁。功能设计如下图所示:
- 首先机器人会根据pose_navigator一样的逻辑导航到离清洁区域内最近点。
- 到达清洁区域内后,使用clean_path_planner进行清洁路线覆盖规划,并进行跟踪。
- 清洁路线跟踪使用dwa_path_planner。
- 在开始清洁路线跟踪后,path_follow_decider判断跟踪路线是否需要停障
- 如果遇到障碍物则进行停障等待
- 停障等待超时后,进行绕障继续跟踪清洁路线
- 在清洁路线跟踪过程中,local_plan_decider会根据dwa_path_planner规划状态,进行局部路径规划失败处理。
贴边沿墙清洁
贴边沿墙清洁任务,可用于沿墙贴边清洁。功能设计如下图所示:
- 首先机器人会根据pose_navigator一样的逻辑导航到离沿墙清洁路径上最近点。
- 到达最近后,使用contours_path_planner进行沿墙清洁路径规划,并进行跟踪。
- 沿墙清洁路线跟踪使用dwa_path_planner。
- 在清洁路线跟踪过程中,local_plan_decider会根据dwa_path_planner规划状态,进行局部路径规划失败处理。
自主返航回充
自主返航回充任务,机器人低电量时自主返航回充。功能设计如下图所示:
- 首先机器人会根据pose_navigator一样的逻辑导航到充电桩前方位置。
- 然后进行充电桩对接控制。
仿真测试
功能仿真测试视频:
清洁机器人PNC方案演示
仿真测试准备
-
安装部署好工程
-
仿真地图确认:仿真地图放在
cleanbot/clean_pnc/data/map
目录下,目前该目录下有测试地图demo
,如果想更换地图可按如下步骤:-
将要更换的地图放到
cleanbot/clean_pnc/data/map
目录下 -
更改仿真器中
cleanbot/clean_pnc/launch/pnc_simulator.launch
的test_map_name
参数:<launch> <node name="clean_pnc_simulator" pkg="clean_pnc" type="clean_pnc_simulator" output="screen"> <param name="map_file_dir" value="$(find clean_pnc)/data/map/"/> <param name="test_map_name" value="demo"/> </node> </launch>
-
-
启动仿真程序:启动成功后,可看到如下rviz界面:
roslaunch clean_pnc simulation_wash_robot.launch
-
初始化机器人位姿:在
rviz
软件显示窗口上,点击2D Pose Estimate
按钮在地图上相应位置进行机器人位姿初始化 -
任务暂停/取消:在
rviz
软件显示窗口左下角,可进行任务暂停/取消操作
定点自主导航测试
- 下发导航目标点:在
rviz
软件显示窗口上,点击2D Nav Goal
按钮在地图上相应位置进行导航目标点下发
-
下发成功后可在rviz看到如下界面:
-
如果想在测试过程中增加障碍物,可在
rviz
软件显示窗口上,点击Publish Point
按钮在地图上相应位置进行障碍物设置:
固定路线清洁测试
-
设定清洁路线:在
rviz
软件显示窗口上,点击custom_path
按钮在地图上相应位置进行清洁路线标注- 按下键盘上的
Enter
按键下发任务 - 按下键盘上的
d
按键重新绘制路线
- 按下键盘上的
-
下发成功后可在rviz看到如下界面:
-
如果想在测试过程中增加障碍物,可在
rviz
软件显示窗口上,点击Publish Point
按钮在地图上相应位置进行障碍物设置:
注意:任务完成后,机器人会主动导航返回任务起始点
区域覆盖清洁测试
-
设定清洁区域:在
rviz
软件显示窗口上,点击clean_polygon
按钮在地图上相应位置进行清洁区域标注- 按下键盘上的
Enter
按键下发任务 - 按下键盘上的
d
按键重新绘制区域
- 按下键盘上的
-
下发成功后可在rviz看到如下界面:
-
如果想在测试过程中增加障碍物,可在
rviz
软件显示窗口上,点击Publish Point
按钮在地图上相应位置进行障碍物设置:
注意:任务完成后,机器人会主动导航返回任务起始点
贴边沿墙清洁测试
-
设定清洁区域:在
rviz
软件显示窗口上,点击along_wall
按钮在地图上相应墙体位置进行沿墙启点下发 -
下发成功后可在rviz看到如下界面:
-
如果想在测试过程中增加障碍物,可在
rviz
软件显示窗口上,点击Publish Point
按钮在地图上相应位置进行障碍物设置:
注意:任务完成后,机器人会主动导航返回任务起始点