-
Notifications
You must be signed in to change notification settings - Fork 7
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
Migrate FakeControlboard's JMC to FakeJoint #192
Comments
Totally agree with dropping |
Idea: leave |
Whichever solution, I guess we are looking for a balance between:
That said, if we really have to hack the CanBusFake a lot in order to emulate the CAN behavior for things to work, and see it is not really worth the effort, we should forget about it, just work with |
Note that testBasicCartesianControl.cpp opens a FakeControlboard device. |
It is a misconception that FakeControlboard is a control board of FakeJoints, and I probably got it wrong from the very beginning. Indeed, the FakeControlboard is a fully fledged simulation of a joint controller that, at the time of writing, accepts position and velocity commands. The YARP counterpart device named fakeMotionControl follows a similar principle but, unless I'm wrong, it does not interpolate intermediate targets as our device does (through time stepping), i.e. all movements are instantaneous. On the other hand, the FakeJoint does literally nothing. It is a stub implementation of several motor interfaces with the only aim to return a boolean I'll have to reconsider my original point. FakeJoint should not die and its purpose must prevail. When a physical driver/motor fails, we replace its device in the CAN bus configuration with this kind of fake "controller". It must return Then, FakeControlboard or anything similar to it should be kept available, too. I wonder if YarpOpenraveControlboard is a better fit for this case, although it is certainly sure that an additional, heavy dependency (OpenRAVE) makes this device less attractive for trivial usage (cc @jgvictores). Perhaps current status-quo is worth to be preserved, code cleanup aside. I'm going to implement all raw motor interfaces in FakeJoint as described earlier (mostly bare function body, return true). |
By original design goals:
Regarding
As I write this, I'll describe how my initial conception of this issue was a terrible idea. My idea was in fact As such, yes, it seems reasonable to maintain the |
Those calls are meaningless, therefore I think we can disable all console output in
I'm not sure I'm getting this right. Do you want to repurpose the Question: should we rename For the sake of completeness, I found the fakebot device in YARP's codebase. Somewhat close to our intent, but we won't use it anyway. |
ASWJ let's rename FakeControlboard to EmulatedControlboard. |
Closing as WONTFIX per the above reasons. Two tasks derive from this:
|
Done at daf0bc5, cc @roboticslab-uc3m. |
The
FakeJoint
device lacks several interface implementations (and, probably, does not interpolate trajectories). On the other hand,FakeControlboard
can do that, but only on a controlboard-level manner, i.e. joint control is embedded. The point here is to extract each joint controller from that and makeFakeControlboard
just load dynamically the number of joints/devices requested by the user.In the long run, I wonder whether we'll need
FakeControlboard
at all, sinceCanBusControlboard
may loadFakeJoint
s on request and even make them work together with other node devices, either on a real CAN network or with a simulated one (CanBusFake
).The text was updated successfully, but these errors were encountered: