项目简介
本项目基于ROS框架实现了一个机器人代理,用于玩简化版的Cluedo游戏。机器人可随机前往环境中的四个位置,通过移动手臂收集(who, PERSON)、(where, PLACE) 和 (what, WEAPON) 形式的线索。收集到的线索会添加到本体中,每收集到3条线索,机器人就会前往中心点检查是否找到正确假设,直至找到为止。
项目的主要特性和功能
- 知识本体:采用OWL本体表示机器人的当前知识。
- ARMOR服务:借助ARMOR服务与知识本体通信,实现添加新假设和线索,查询完整假设类的个体信息。
- ROSPlan:负责依据问题和领域PDDL文件进行问题生成、规划和计划执行。
- Moveit:规划和控制机器人手臂关节,使末端执行器在两个预设高度(0.75和1.25)间移动。
- 任务管理:由任务管理器调用ROSPlan的各项服务,若计划执行失败,会更新知识状态并重新规划。
- 行动接口:包含多个ROSPlan行动接口,如调整初始高度、移动到指定路点、获取线索、移动手臂和检查假设等。
安装使用步骤
安装依赖
- 将armor_py_api脚本的代码从Python2适配到Python3:
- 在armor_client.py中添加 "from armor_api.armor_exceptions import ArmorServiceInternalError, ArmorServiceCallError"。
- 将所有 "except rospy.ServiceException, e" 替换为 "except rospy.ServiceException as e"。
- 修改armor_query_client的第132行为 "if res.success and len(res.queried_objects) > 1:"。
- 将armor模块的路径添加到Python路径:
export PYTHONPATH=$PYTHONPATH:/root/ros_ws/src/armor/armor_py_api/scripts/armor_api/
编译项目
下载本项目到工作空间,然后执行:
catkin_make
启动项目
依次在四个终端标签中运行以下命令:
1. 启动ROSPlan及行动接口:
roslaunch erl2 cluedo.launch
2. 启动ARMOR:
rosrun armor execute it.emarolab.armor.ARMORMainService
3. 启动仿真、本体服务器和go_to_point动作服务器:
roslaunch erl2 assignment.launch
4. 运行任务管理器以开始游戏:
rosrun erl2 plan_manager.py
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】