-
Notifications
You must be signed in to change notification settings - Fork 19
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
Use robots' based configuration #12
Use robots' based configuration #12
Conversation
As introduced in jrl-umi3218/mc_rtc#327
Thank you for the PR. I still find it convenient to overwrite init_pos and FSM transitions by overwriting configurations (an example) and I am against dropping that feature. I haven't looked at the changes in detail yet, but this PR seems to drop that feature. |
Also, I prefer the order of overwrite to be first the robot's specific configuration, then the user-specified overwrite keys. If the changes in jrl-umi3218/mc_rtc#327 only allow access to the robot's specific configuration after the construction of the FSM controller, I think we cannot use the changes in jrl-umi3218/mc_rtc#327 as is for my preferred use case... |
For the FSM overwriting approach this indeed does not work but I feel that -- as it is used in the sample you linked -- it would be better adressed by having a Meta-like state that lets you pick a motion (or automatically picks it).
It's the same in this PR. Note: we can also bring the overwrite concept to mc_rtc controller construction parameters, the override keys would be used to search for files under the same folder as the robots' specific configuration files. How does that sound? |
Changing init_pos in user-specified overwrite is also done in Motion6DoF. (Since Motion6DoF is being rewritten to the new MultiContactController, I would like to keep what Motion6DoF can do as much as possible.)
I don't know if I understand the meaning of this correctly, but since I had prepared so many overwrite keys, I think it makes more sense to overwrite only the necessary ones that are specified.
If this satisfies the following use case (as currently done in Motion6DoF), it is OK.
|
In BaselineWalkingController's CI, the following file is copied to BaselineWalkingController/.github/workflows/config/WalkingWithFootstepPlanner.yaml Lines 50 to 53 in d059894
|
Sorry this was unclear, please allow me to elaborate. Please let me know if I'm wrong but what I understand from these configuration files is that each overwrite key correspond to a given motion (with the addition of the From looking through some of those files, they specify two things:
I believe there is simper solutions to those than the configuration overwrite. This solution also has a major drawback since as far as I can tell you could not simply "play" two motions back to back.
You can populate the states folder along the controller installation directory to load all those states.
I think this would be better to have a selector state to pick the motion you want to perform, e.g.
This would require a little extra works to trigger a motion automatically but that would be on the same level as switching the
This could be the duty of the Finally, I think the
Not that this specific scenario also works with this PR if you simply exchange |
Thank you for the explanation. I still have the feeling that overwriting all configurations in one batch would be a simpler solution in total, but I think I can go ahead with your solution :) Before, I used to describe the configuration for each robot in each entry block of the configuration like this, but in my experience this was more difficult to manage.
Multiple motion states were executed in succession like this.
How can I trigger it? The nice thing about overwrite was that it could be done with a single line comment in-out. Is it as easy as that? And I guess I'll have to give up overwriting init_pos, right? Often these changes are left as local changes directly in the yaml file and left out of the git commit. The overwrite system was a good way to avoid this. Let me ask a few more questions.
Is there already a function to add or remove robots in the FSM configuration?
Which of the following two lines takes precedence? Currently, the latter takes precedence.
BaselineWalkingController/.github/workflows/config/WalkingWithFootstepPlanner.yaml Lines 50 to 53 in d059894
|
I agree this is overall a little simpler but I think adding support for a new robot by simply dropping a file in the right location without interfering with other parts of the controller is worth the extra work.
My bad, I should have though about this.
Yes. I can imagine:
I think if we want to handle
No, but it's simple (did not try to compile but that should work):
Should be the latter. With this PR you can also simply put: FootManager:
enableArmSwing: false In |
Thank you for taking part in this long discussion :)
Sorry, could you elaborate this? What does AutoplayMotions and Motion1 and Motion2 mean respectively?
If I wanted this feature in both BaselineWalkingController and MultiContactController, would I copy this code to both controllers? That doesn't look so good.
If the default Probably it would be best if you could provide examples of how the configurations of Motion6DoF and BWC's CI could be changed to achieve the same thing that is currently being done. |
Let me elaborate on this. If you download Artifacts from This CI is not triggered by the PR, which is discussed in #1 and #2 |
This is related to #12 (comment)
Sorry for the delay. I have merged this.
I have confirmed (locally) that this can be handled by 59b8daa |
I have just noticed that there is a problem in BaselineWalkingController/etc/BaselineWalkingController.in.yaml Lines 20 to 22 in 39d2b28
BaselineWalkingController/etc/BaselineWalkingController.in.yaml Lines 271 to 272 in 39d2b28
While working on a similar change (mmurooka/LocomanipController@a4be099) for LocomanipController, I encountered a fatal problem: the following Is it sufficient to just merge the two |
This is not specific to the issue but rather to have two separate section with the same name: a:
value: 0
# other stuff
a:
another-value: 1 It's ill-formed and the implementation will choose or the other. The solution is to put everything under the
Yes. For a cleaner separation it's better to put robot's specific values in a separate file that will get loaded at runtime under the |
@gergondet Thank you. I fixed it in the above commit. In the |
Yes. If an entry in |
These are similar changes as in isri-aist/BaselineWalkingController#12
They will be moved into robot module repos. See isri-aist#12
They will be moved into robot module repos. See isri-aist/BaselineWalkingController#12
They will be moved into robot module repos. See isri-aist/BaselineWalkingController#12
As introduced in jrl-umi3218/mc_rtc#327
This moves robot's specific configuration the robots section of the configuration then:
This was tested on HRP4CR (in simulation) with the configuration introduced by https://github.com/isri-aist/mc_hrp4cr/commit/17175bf3aaa14fab386e3147363cf1eb1a4a2b09
We could get rid of the
ConfigUtils.h
header but I don't know if it's used in other projects downstream