< >
Home » ROS2与Open-RMF仿真教程 » ROS2与Open-RMF仿真教程-rmf_demos_tasks进行任务发布

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

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: ros2与open-rmf仿真教程