@SimonM
I can provide the following meat
Thank you for providing so much detail. That’s truly much meat for further discussions. So let’s start.
• The Duet controllers are great in that they provide an elaborate motion system, they should cover all aspects of picking up, moving and deposit the objects in 3-dimensional space. They also provide a lot of I/O, so that you can deal with analog and digital inputs - who then can trigger events (invoke sub-programs), which is useful to control actuators etc.
• Typically, RRF is controlled by a stream of commands, i.e. GCodes. They tell the Duet where to move or what other action to execute. IOW, RRF/Duet has no idea of the items to move or of the storage locations, you need an external instance which translates the idea of a storage system into GCodes. In 3D printing, that’s the slicer, for PnP machines, OpenPNP does the job.
• For ASRS, you have to develop your own system, which is quite easy in case of a FILO (first in, last out) or FIFO (first in, first out) type of serial storage. These trivial cases can be scripted and run on a Duet. If you need to store different types of cable assemblies in specific storage compartments and to retrieve them according to type or some other scheme, there’s no way but to use a RasPi or similar system.
• It may be difficult to maintain the state of the system (storage capacity of several slots) over time. After every reset, the Duet has to re-calibrate itself, count all items per storage location and init several counters. How many storage queues are we talking of?
• Some sensors involving image- or pattern recognition need an external controller (these belong to the subsystems I mentioned in my first post). An external controller (such as an Arduino) may also be required if you have to interface lots of simple sensors (mechanical or optical switches).
• Do you have a concept of necessary controls - buttons and the like? Except of the automatic pick-up, how will humans interact with the system? All this affects the required I/O capacities.
• You mention imperfect spacing and inaccurate positioning, I would add potential jams and other malfunctions. Depending on the required level of perfection, the subsystems (pick-up, storage queues, goods issue) can become deliberately complex. After specifying some numbers (queues, items/queue, approx. dimensions, timings), the subsystems must be defined in order to guess how many sensors of which kind are needed. With all these details, you can make an educated guess whether RRF/Duet can do the job, of whether it needs to be assisted by an external RasPi.