-
Notifications
You must be signed in to change notification settings - Fork 15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
EasyFullControl fleet_adapter_mir and cart delivery PerformAction plugin #36
Conversation
62b1f03
to
9adf286
Compare
Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>
Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>
Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>
Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>
Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>
Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>
…supported Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>
9adf286
to
946d98c
Compare
Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>
Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>
Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>
Update from MiR vendor: no available indication of when the robot has started charging. There is no existing |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There are a lot of excellent designs in this PR. Using the json files to define the MiR missions, and then loading and configuring them at startup is fantastic.
This PR presents a huge improvement over the previous state of the fleet adapter. There's only one problem: The current approach to plugin support does not actually support plugins. Instead the only way a downstream user can integrate or customize their own actions is to fork the source code of this repository and edit it.
At first I considered accepting this as a temporary limitation, merging the PR as-is, and then improving the situation later. However, I'm concerned that early adopters of these changes will end up being punished with a diverging code base after forking as needed. That makes it difficult for them to take in improvements that we're going to make in the future and it also discourages downstream users from contributing anything upwards.
I also feel that the gap to support plugins from where this PR is right now is actually not very large. The key thing will be understanding how to use importlib
to load a module and then getattr
to instantiate a class from that module. I left a few tips in my inline comments, but let's talk about this more in person when we have a chance.
fleet_adapter_mir_tasks/fleet_adapter_mir_tasks/dispatch_pickup.py
Outdated
Show resolved
Hide resolved
…in pickup/dropoff, and move action-related code into its own package Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>
Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>
Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>
Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>
Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>
Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>
Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>
After our previous discussion, I've refactored the way we are creating
|
pickup pos is not found Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>
Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>
Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>
Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>
Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>
Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>
fleet_adapter_mir_actions/fleet_adapter_mir_actions/rmf_cart_detection.py
Outdated
Show resolved
Hide resolved
fleet_adapter_mir_tasks/fleet_adapter_mir_tasks/dispatch_delivery.py
Outdated
Show resolved
Hide resolved
Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>
Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>
Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>
Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>
Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>
…vior in dispatch_delivery task Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>
Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>
Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>
Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>
Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>
Thanks for the meticulous review @mxgrey ! I've gone through another round of refactor, with the following changes:
|
Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>
Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This PR is looking very good and getting super super close.
I left just a few more items of feedback which I think should be pretty straightforward to address. After those are done we should be fully ready to merge.
fleet_adapter_mir_actions/fleet_adapter_mir_actions/mir_action.py
Outdated
Show resolved
Hide resolved
fleet_adapter_mir_actions/fleet_adapter_mir_actions/rmf_cart_delivery.py
Outdated
Show resolved
Hide resolved
Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>
Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>
Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>
Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>
Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Awesome, thanks for all the massive iterating.
This is without question the most professional and modular RMF fleet adapter known to exist. As we work on the next generation of Open-RMF's SDK we'll definitely want to take advantage of lessons learned in this effort to figure out how to lift as much of this upstream as we can.
Great job bringing this to completion 🎉
fleet_adapter_mir_actions/fleet_adapter_mir_actions/mir_action.py
Outdated
Show resolved
Hide resolved
Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>
This PR:
rmf_missions.json
.mir_config.yaml
mir_config.yaml
. This plugin includes a task script for users to submitdispatch_pickup
tasks. Remaining cart delivery related missions required by RMF can be automatically created on hardware during runtime by parsingrmf_cart_missions.json
.One major flaw in this fleet adapter is the
is_charging
function insiderobot_adapter_mir.py
. As far as I know and after checking with vendors, there doesn't seem to be a MiR API that we can use to check whether the robot has begun charging. The MiR status provides amode_id
andstate_id
, currently there's no known state/mode for charging. Will experiment with hardware to verify this.Tested on hardware with MiR200 and MiR250: