仓库 (Warehouse)——持久化场景与状态
RViz 的 “MotionPlanning” 插件提供了持久化保存完整规划场景和机器人状态的功能。目前有两个存储插件可用(基于 warehouse_ros):
- warehouse_ros_mongo,使用 MongoDB 作为后端
- warehouse_ros_sqlite,使用 SQLite 作为后端
你可以用你喜欢的包管理器安装它们(例如 apt-get install ros-{DISTRO}-warehouse-ros-mongo),或者从源码构建(当然,为此你需要在工作区的 src 目录中检出相应的仓库)。
存储插件选择
Section titled “存储插件选择”warehouse 插件及其设置必须在 MoveIt 配置的启动文件中指定。如果你不想使用 MongoDB 插件,应该修改 persistent_scenes_demo.launch.py。存储插件由参数 warehouse_plugin 决定,有效选项为 MongoDB 的 warehouse_ros_mongo::MongoDatabaseConnection 和 SQLite 的 warehouse_ros_sqlite::DatabaseConnection。此外,参数 warehouse_host 和 warehouse_port 用于配置连接详情。对于 SQLite 插件,warehouse_host 指定数据库文件的路径,warehouse_port 不使用。如果数据库文件尚不存在,会创建一个空数据库。
完整的启动文件位于 GitHub:persistent_scenes_demo.launch.py。
连接到存储后端
Section titled “连接到存储后端”要运行该演示,你需要通过运行 git lfs install 安装 git lfs,并将 moveit_benchmark_resources 克隆到你的工作区。
选择存储插件并配置好 launch.py 文件后,使用以下命令运行 RViz:
ros2 launch moveit2_tutorials persistent_scenes_demo.launch.py在 RViz 中,导航到 “MotionPlanning” 窗口的 “Context” 选项卡。确认连接详情(MongoDB 的主机/端口,或 SQLite 的文件路径),然后点击 “Connect”。
随后会弹出一个对话框,询问你是否要清除 RViz 中当前的所有状态和场景(不影响数据库中的持久化数据)。由于你刚刚启动 RViz,可以放心选择 “yes”。
保存/加载场景和状态
Section titled “保存/加载场景和状态”连接成功后,你就可以保存和恢复机器人状态以及已规划好的规划场景了。这些操作可以在 RViz 的 “Stored Scenes” 或 “Stored States” 选项卡中完成。
要保存起始状态,将绿色操作器拖到正确位置,然后点击 “Save Start”。目标状态(橙色操作器)可以用 “Save Goal” 按钮保存。要恢复某个状态,在列表中选中它,然后点击 “Set as Start” 或 “Set as Goal”。