大家好,我是小鱼。前几天在群里看到有小伙伴问关于机器人调度相关的问题,今天看到了一个用行为树来实现模块化调度的开源库,分享给大家~
概述
SkiROS2是一个平台,通过将技能模块化软件块 - 组合成 行为树[1],创建复杂的机器人行为。
使用SkiROS协调的机器人可在部分结构化环境中使用,机器人对环境有良好的初始理解,但也期望发现差异,使用初始计划失败并做出相应反应。
SkiROS提供以下功能:
•用于在 模块化技能库 中组织 机器人行为 的 框架•具有 前置条件、保持条件和后置条件 的可扩展技能模型•基于 行为树 的 反应执行引擎•作为 语义数据库 的 世界模型 以管理环境知识•技能参数的 推理能力 和 自动推断•与 PDDL任务规划 的集成点•基于世界模型中的技能和实体的 规划域的自动生成• ROS 、RViz 和 tf集成•用于处理技能、世界模型和任务规划的 Python API
入门
•完整的介绍和教程位于 wiki[2] 中•可执行技能示例在 skiros2_examples存储库[3] 中•SkiROS2论文[4]提供了概述和背景信息•skiros2_template_lib[5]提供了新技能库的骨架•安装说明如下
安装
兼容性
SkiROS与Ubuntu 18.04/ROS Melodic和Ubuntu 20.04/ROS Noetic,Python 2和3兼容。
安装说明
要使用SkiROS,您必须在计算机上安装ROS[6]。您还需要pip[7]来安装python依赖项。
将此存储库克隆到catkin工作空间src目录中:
mkdir -p catkin_ws/src && cd catkin_ws/src
git clone https://github.com/RVMI/skiros2
# 将基础技能集克隆到catkin工作空间的skiros2目录中。
git clone https://github.com/RVMI/skiros2_std_lib
# 可选地,您还可以在此处克隆skiros2_examples存储库:
git clone https://github.com/RVMI/skiros2_examples
使用rosdep[8]和python依赖项安装每个package.xml
中定义的依赖项:
rosdep install --from-paths . --ignore-src --rosdistro=$ROS_DISTRO -y
# 安装Python依赖项
pip install -r requirements.txt --user
使用catkin构建工作空间
cd ~/catkin_ws
catkin_make # 或 'catkin build'
source ./devel/setup.bash
启动SkiROS2
roslaunch skiros2 skiros.launch
# 或尝试其中一个示例,例如
roslaunch skiros2_examples turtlesim_example.launch
任务规划
如果要使用标准库中提供的任务规划技能,可以使用以下脚本安装快速向下规划器:
cd skiros2/scripts
./install_fd_task_planner.sh
在要求安装文件夹时,您可以插入首选位置或只需保留默认值。
创建自己的技能
skiros2_template_lib[9]提供了从头开始创建新库所需的结构。它还有
一个示例启动文件以启动系统。
构建Doxygen文档
要生成doxygen文档,首先安装Doxygen和doxypypy以更好地与python doc-strings兼容:
sudo apt-get install -y doxygen
pip install doxypypy --user
然后,在顶层目录中生成文档并使用浏览器查看,例如Firefox:
doxygen Doxyfile
firefox skiros2_doc/html/index.html
SkiROS2论文的预印本 https://arxiv.org/abs/2306.17030
References
[1]
行为树: https://en.wikipedia.org/wiki/Behavior_tree_(artificial_intelligence,_robotics_and_control)
[2]
wiki: https://github.com/RVMI/skiros2/wiki
[3]
skiros2_examples存储库: https://github.com/RVMI/skiros2_examples
[4]
SkiROS2论文: https://arxiv.org/abs/2306.17030
[5]
skiros2_template_lib: https://github.com/RVMI/skiros2_template_lib
[6]
ROS: https://wiki.ros.org/ROS/Installation
[7]
pip: https://pip.pypa.io/en/stable/installing/
[8]
rosdep: http://wiki.ros.org/rosdep
[9]
skiros2_template_lib: https://github.com/RVMI/skiros2_template_lib