Closed jonnew closed 3 months ago
After playing around a bit, I actually don't like this split. I now like the idea of an integrated node that takes a Quaternion and uses it to update the state of the hardware with all logic required to do this internal. Why?
PortName
and RotationAxis
specified without any intermediate stuff is very appealing to me.@jonnew the issue with making this a mega-node is that it cuts off composition to the point of making the node unusable for all but the most basic cases.
In practice we have never used the commutator operating by itself with just the BNO. We need options for manual intervention, panic button, GUI, etc, many of which are really experiment-specific.
By closing off all composability from this library I don't see how this could be useful for the cases discussed above.
I feel it will also complicate logging and future upgrades as well, since it will make people continue to make their own ad-hoc solutions by encoding turns into JSON manually and doing their own rate control, and this means that any upgrades to the commutator firmware will brick an unknown number of workflows to the point that you will never really want to update.
100% agree with all of this, but the ease of use trumps most of these advantages in my opinion.
I guess i could write a bunch of small nodes and then create the mega node from the smaller elements as an included .bonsai file.
I could call the meganode something specialized like AutoCommutator or whatever
I could call the meganode something specialized like AutoCommutator
I think this is a great idea. By having both the embedded workflow and the more granular operators it should be possible to assemble all the usage patterns and more efficiently update the package in the future.
I can see now better the complications behind the initial naive proposal and indeed the problem gets complicated by an interaction between the need for rate control and numerical accuracy when computing the relative twist feedback signal.
I will submit a PR that tries to address both of these ideas. I have also created a default main branch so we can retarget different PRs for comparison if useful.
We want to add two operators that make using the Open Ephys commutator easy: