Right now, runtime dependencies (robots, plugins, controllers, etc) expected by each other are not really declared, except in superbuild module presets. This is a bit silly as in practice, a controller tends to know ahead of time what it expects, e.g lipm_walking can work with all HRP robots and more and needs some plugins for external footstep planning (optional).
The idea here could be to exploit passthru to let each derivation declare a list of runtime dependencies it needs along with optional ones.
Something along the lines of
passthru = {
required = {
controllers = [];
robots = [];
config = {
mainRobot = "JVRC1";
enabled = "LIPMWalking";
}
};
optional = {
robots = ["mc-hrp5-p", "mc-hrp4"];
apps = ["mc-mujoco"];
};
};
This could be used for several things:
- Generate derivations that can wrap one or several controllers into executable form
- Auto-generate devshells simply from a controller name
- Revive the WebAssembly build (website example) by pulliing all runtime components into mc-rtc's source-tree and cross-compiling statically
Right now, runtime dependencies (robots, plugins, controllers, etc) expected by each other are not really declared, except in
superbuildmodule presets. This is a bit silly as in practice, a controller tends to know ahead of time what it expects, e.glipm_walkingcan work with all HRP robots and more and needs some plugins for external footstep planning (optional).The idea here could be to exploit
passthruto let each derivation declare a list of runtime dependencies it needs along with optional ones.Something along the lines of
This could be used for several things: