ROS2与Open-RMF仿真教程-rmf_demos_tasks进行任务发布
ROS2与Open-RMF仿真教程-rmf_demos_tasks进行任务发布
说明:
- 使用rmf_demos_tasks的命令行方式进行任务发布
rmf_demos_tasks
- rmf_demos_tasks使用参考教程
- 此软件包提供 RMF 演示中使用的脚本,以演示可能要求机器人执行的任务。
- 新的任务系统允许用户以更灵活的方式构建和提交自己的任务,例如循环多次停靠或指定机器人执行清洁任务。
- 该软件包包含一些有用的脚本,这些脚本演示了如何编写此类任务
dispatch_patrol命令:
- 该任务允许用户派遣机器人执行巡逻任务。 在开始和结束航路点之上,您可以提供舰队名称 -F 和机器人名称 -R
- 查看帮助
ros2 run rmf_demos_tasks dispatch_patrol -h
- 示例1,Office 世界的示例,将任务分派给特定的机器人:
ros2 run rmf_demos_tasks dispatch_patrol -F tinyRobot -R tinyRobot1 -p lounge -n 2 --use_sim_time
- 示例2,多个地方巡逻:
ros2 run rmf_demos_tasks dispatch_patrol -p supplies pantry coe --use_sim_time
dispatch_clean命令:
- 此脚本提交清理任务。 -cs 标志将所需的清洁区域作为参数。
- 您还可以通过提供车队名称 -F 和机器人名称 -R 来选择指定机器人来执行清洁任务。
- 查看帮助
ros2 run rmf_demos_tasks dispatch_clean -h
Hotel world示例:
ros2 run rmf_demos_tasks dispatch_clean -cs clean_lobby -F cleanerBotA -R cleanerBotA_1 --use_sim_time
dispatch_action命令:
- 该脚本演示了如何使用 PerformAction teleop 功能编写任务。
- 你可以让一个机器人走到一个起点 -s 去执行一个动作,-a 表示动作的名称。
- 示例1:
- 办公室世界的例子,显示了一个名为“teleop”的动作。
ros2 run rmf_demos_tasks dispatch_action -F tinyRobot -R tinyRobot1 -a teleop -s coe --use_sim_time
- 完成远程操作后,您需要发布以下消息以将控制权交还给 RMF:
ros2 topic pub /action_execution_notice rmf_fleet_msgs/msg/ModeRequest '{fleet_name: tinyRobot, robot_name: tinyRobot1, mode: {mode: 0}}' --once
- 该脚本还采用一系列起点 -s 作为参数,并命令机器人在给定点执行相同的指定动作。
- 示例2:
- 办公室世界的例子,在 coe、补给品和食品储藏室路径点执行总共 3 次“teleop”操作:
ros2 run rmf_demos_tasks dispatch_action -a teleop -s coe supplies pantry --use_sim_time
- 机器人将移动到这些位置中的每一个,RMF 将放弃控制。
- 与之前的 dispatch_action 类似,您可以执行所需的操作(例如使用提供的 teleop_robot 脚本)并通过将 ModeRequest 发布到 /action_execution_notice 来结束操作。
- 然后机器人将移动到下一个点执行下一个动作。
dispatch_delivery命令:
- 此脚本允许用户使用一个或多个取件和卸件地点执行交付。
- 它按照您提交的顺序接收有关 pickup -p 和 dropoff -d 活动的信息。
- 对于每项活动,您需要提供地点、处理程序、有效负载 SKU 和数量,并以逗号分隔。
- 示例1: Office world
ros2 run rmf_demos_tasks dispatch_delivery \
-p pantry pantry \
-ph coke_dispenser coke_dispenser_2 \
-d hardware_2 coe \
-dh coke_ingestor coke_ingestor_2 \
-pp coke,1 coke,1 \
-dp coke,1 coke,1 \
--use_sim_time
cancel_task命令
- 通过指定任务 ID 取消任务
- 示例:
- office_world 运行调度巡逻任务。
ros2 run rmf_demos_tasks dispatch_patrol -p coe lounge --use_sim_time
- 然后尝试用id取消提交的任务
ros2 run rmf_demos_tasks cancel_task -id patrol.dispatch-0
office_teleop_robot脚本:
- 该脚本演示了 teleop 执行动作任务的能力。
- 想象一下,当机器人执行远程操作时,用户想要移动机器人。
- 为了模拟这种行为,我们将在办公室世界中展示这种情况。
- 启动 Office 世界并运行上面的 dispatch_action 任务将 tinyRobot1 带到 coe。
- 在执行动作期间,fleetadapter 放弃对机器人的控制。
- 为了模拟远程操作,我们将运行:
ros2 launch rmf_demos office_teleop_robot.launch.xml
- office_teleop_robot 脚本直接控制仿真中的机器人运动,无需通过车队适配器。
- 如果您在 Gazebo 中运行它,您将需要删除室内椅子模型以使模拟物理顺利运行。
- 您可以通过 /action_execution_notice 主题发布 ModeRequest 来结束操作
dispatch_go_to_place脚本
- 类似于dispatch_patrol,可以派遣机器人去指定的航路点。
- dispatch_go_to_place 有用的一面是能够指定机器人到达目的地时的方向,使用 arg -o。
- 此外,您还可以选择使用 -f 和 -R 指定机器人。
- 示例:在office world例子执行
ros2 run rmf_demos_tasks dispatch_go_to_place -p lounge -o 105 --use_sim_time
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号