the byonoy is a nice small on deck plate reader
i wrote an initial backend for it that you can see in PR 617 add byonoy luminescence plate reader by rickwierenga · Pull Request #617 · PyLabRobot/pylabrobot · GitHub
i am thinking about how to model this as a resource. the plate reader consists of two parts, one of which is stationary during a run (the base) and a top that you move to and from the base. In between the top and the base can be a plate. See the picture below. From left to right: top, base, example plate.
I was considering making the base a ResourceHolder. However, it has two distinct child locations: one for the base and one for the plate. Also, a ResourceHolder is programmed to hold at most one resource, whereas this would hold two.
I don’t think we have a good universal model for this. Perhaps I will introduce a new resource subclass to model this unique behavior. One annoying part with this is that when moving the plate and top using a robotic, we should obviously have smart default locations. for example:
await lh.move_resource(plate, base)
await lh.move_resource(top, base)
should both ‘just work’. This means we would have to extend the if statement in lh.drop_resource
with the new custom resource class. This obviously not ideal in terms of scaling, so curious if anyone has better thoughts on this.