仓库 - 持久化场景和状态
Warehouse - Persistent Scenes and States
RViz 的“MotionPlanning”插件提供了持久保存完整规划场景和机器人状态的可能性。 目前,有两个存储插件(基于warehouse_ros)可用:
warehouse_ros_mongo , 使用 MongoDB 作为后端
warehouse_ros_sqlite , 它使用 SQLite 作为后端
您可以使用您最喜欢的包管理器(例如 apt-get install ros-noetic-warehouse-ros-mongo)安装它们,或者从源代码构建 build them from source它们(当然,您必须将相应的存储库检出到您的 src 文件夹中 为了那个原因)。
Storage plugin selection
必须在 MoveIt 配置的启动文件中指定仓库插件和设置。 如果您不想使用 MongoDB 插件,您应该调整warehouse_settings.launch.xml,也可能调整warehouse.launch。 存储插件由参数warehouse_plugin 决定。 有效选项是适用于 MongoDB 的warehouse_ros_mongo::MongoDatabaseConnection和适用于 SQLite 的warehouse_ros_sqlite::DatabaseConnection。 此外,参数warehouse_host和warehouse_port配置连接详细信息。 在 SQLite 插件的情况下,warehouse_host 包含数据库文件的路径,而warehouse_port 未使用。
<arg name="moveit_warehouse_host" default="/path/to/your/file.sqlite" />
<arg name="moveit_warehouse_port" default="0" />
<param name="warehouse_plugin" value="warehouse_ros_sqlite::DatabaseConnection" />
对于warehouse_ros_mongodb,请改用以下内容
<!-- <arg name="moveit_warehouse_port" default="33829" />
<arg name="moveit_warehouse_host" default="localhost" />
<param name="warehouse_plugin" value="warehouse_ros_mongo::MongoDatabaseConnection" /> -->
或者,启动 MongoDB 服务器(在warehouse.launch 中注释/取消注释以下内容)
<!-- <node name="$(anon mongo_wrapper_ros)" cwd="ROS_HOME" type="mongo_wrapper_ros.py" pkg="warehouse_ros_mongo">
<param name="overwrite" value="false"/>
<param name="database_path" value="$(arg moveit_warehouse_database_path)" />
</node> -->
Connecting to the storage backend连接到存储后端
选择存储插件并配置启动文件后,run RViz 使用
roslaunch moveit_resources_panda_moveit_config demo.launch db:=true
在 RViz 中,确保“Displays”视图中存在“MotionPlanning”插件。 否则,请使用下面的“Add”按钮添加它。 导航到“MotionPlanning”窗口的“Context”选项卡。 验证连接详细信息(MongoDB 的主机/端口,SQLite 的文件路径)并单击“Connect”。
之后,会出现一个对话框,询问您是否要删除 RViz 中的所有当前状态和场景(不在数据库中,持久数据不受此影响)。 当您刚刚启动 RViz 时,您可以放心地选择“是”。
Saving/Loading scenes and states
现在您已成功连接,您可以保存和恢复机器人状态和规划场景。 这可以在“Stored Scenes”中完成。 RViz 中的“Stored States”选项卡。
要保存开始状态,请将绿色manipulator拖到正确位置,然后单击“Save Start”。 可以使用“Save Goal”按钮保存目标状态(橙色机械手)。 要恢复状态,请在列表中选择它,然后单击“Set as Start”。 “Set as Goal”。
原文: