moveit / moveit2

:robot: MoveIt for ROS 2
https://moveit.ai/
BSD 3-Clause "New" or "Revised" License
1.06k stars 516 forks source link

[moveit_ros_warehouse] Status of MoveitMessageStorage #1854

Closed Yadunund closed 1 year ago

Yadunund commented 1 year ago

Is your feature request related to a problem? Please describe. I'm interested in storing moveit messages to a warehouse-ros database. The moveit_ros_warehouse pkg contains helpful storage wrappers but the MoveitMessageStorage class seems to be missing APIs to read/write my messages into a database. Wondering if I'm misunderstanding the usage of the storage or whether the APIs are still a work in progress elsewhere and haven't been merged into main yet. Or if the feature is waiting for someone to take it up?

Describe the solution you'd like If its the latter, I'm happy to assist in getting the message storage working if guidance is provided.

github-actions[bot] commented 1 year ago

This issue is being labeled as stale because it has been open 45 days with no activity. It will be automatically closed after another 45 days without follow-ups.

sjahr commented 1 year ago

The API to read/ write to a database is in the actual implementation e.g. https://github.com/ros-planning/warehouse_ros_sqlite. Take a look at this tutorial to get an idea of how to use it: https://moveit.picknik.ai/main/doc/how_to_guides/persistent_scenes_and_states/persistent_scenes_and_states.html?highlight=persistant. Feel free to re-open this issue if you have further questions

Yadunund commented 1 year ago

I'm interested in storing moveit_msgs like MotionPlanResponse into the database so that I can avoid live planning for certain motions whose start and goal conditions do not change between runs. Is that achievable from storing the robot state as described in the tutorial above?

sjahr commented 1 year ago

Yes, I think that is possible. You can take a look at this code example on how to write to the database. To store a trajectory you can use this method: https://github.com/ros-planning/moveit2/blob/c9a9e407b0a27858c8eea838ccbbd389d7109f9e/moveit_ros/warehouse/include/moveit/warehouse/planning_scene_storage.h#L72.

... But on second thought, you are right about an API for MotionPlanResponse missing :thinking: If the method I linked above is not sufficient for what you'd like to do, the existing API needs to be extended. Would you mind opening an issue with the concrete datatypes you'd like to store? If you have time to work on this, that would be awesome too!

Yadunund commented 1 year ago

If the method I linked above is not sufficient for what you'd like to do, the existing API needs to be extended.

Yeah that's what I had previously concluded and ended up writing a custom sqlite3 database for my requirements.

I'll open a ticket as you suggest.

sjahr commented 1 year ago

Thank you!