For this project, I was tasked to design and build a prototype for a solution to move items around a warehouse. The solution needed to be capable of moving an item from a pick-up zone and transferring it to a designated storage position in the warehouse; and of retrieving an item from a designated position and returning it to the pick-up zone.
Developing the Solution
The complexity of the problem at hand meant that careful consideration was needed as to the methods, subsystems and processes needed to develop a solution.
The scale of the problem meant that some solutions were not available to use (for example, GPS due to it's accuracy level not being sufficient for the scale), and hence required some improvised solutions to remedy this. In my case, I decided to use a network of lasers and markings on the floor to co-ordinate the movement of the item between positions. These would represent the use of infrared beacons on a larger-scale.
Working with peers was key in sharing ideas and questions, and breaking down the problem challenged us on in a more manageable form.
Collaboration with peers was vital in developing a well thought-out approach to the problem at hand. This whiteboard session with one of my peers highlighted some of the challenges faced in the guidance of our potential robot from one position to another.
An example of a such a challenge was developing the sub-system needed to capture, carry, and release an item. With an evaluation of the given warehouse environment, some productive collaboration, and specification of the items expected to be stored in the warehouse, it was decided on to create a mechanical grabbing arm that would clasp around the item to carry it. This reduced the mechatronic complexity of the project (as a set of servo's could drive the whole mechanism), and reduced the overall cost of the system.
Software Development using the Arduino platform
It was vital to firstly translate the human description of the procedure to a set of commands that could be instructed from the micro-controller. This was part of the process considered in developing the solution, however, it was necessary to flesh out a more granular explanation.
Our project was constrained to the Arduino platform due to availability. However, Arduino is a powerful hobbyist platform that offers a wide range of features and functions that met the needs and specifications of our solution.
The Arduino also provided new opportunities that were not present on our previous micro-controller platform (PICAXE based on BASIC). By creating several functions, implementing the use of parameters, and utilising return types, I was surprised by the way I was able to heavily reduce the complexity and increase the readability of my code.
Electronics and PCB Design
Most component choices were constricted by school supplies, however, there were some decisions that were made to enhance the prototyping experience. For example, the use of modular headers meant prototypes were able to easily be switched out without the need for re-soldering or re-fabrication.
I used DipTrace (a PCB design package) to develop the boards used in the project. The main PCB (or 'shield') was designed so it could be mounted a-top the Arduino board, efficiently saving room and reducing costs.
These designed were then exported for fabrication via the used of a CNC milling machine.
3D CAD and Fabrication
Using Autodesk Fusion 360, I was able to rapidly prototype several iterations of the grabbing arm. The final iteration of the mechanism featured a semi-modular attachment point along each of the lengths of the arms. This allowed me to experiment with different arm attachments, while reducing the amount of time and resources associated with the development and fabrication of parts.
The parts were then exported for fabrication using a filament-based 3D Printing platform.