top of page
nick-fewings--2lJGRIY5P0-unsplash.jpg

Revenge of the Recycling System

Over the course of this project we were tasked with designing and implementing a program coded in Python, which interfaced with a virtual environment that was controlled by a raspberry pi.

In this project we were tasked with designing a remotely operated system that reliably identifies, sorts, transports, and deposits recycling containers into designated bins based on contamination status and material type. This is especially relevant in the world today as plastic waste is devastating our environment. Containers made of plastic and paper cannot be properly recycled if they are contaminated and it results in a large loss of recyclable materials every year. To address this problem, this project focuses on designing a system to sort different kinds of recyclable materials. The project consists of a modelled mechanism to deposit the recycling and a program to sort containers within a virtual environment into a variety of bins.

I wrote a python program which interfaced with the Quanser Labs virtual environment. The program dispenses a container onto a turntable and the containers properties such as mass, contamination status, and material type are determined. These properties are used to determine the destination receptacle. The Q-arm then moves to specified coordinates and grips the container. Then it loads the container onto the hopper atop the Q-bot. Once a set of conditions has been fulfilled the Q-bot transfers up to 3 containers to a specified bin and stops in front of it. It does this by following a yellow line on the floor and uses a colour sensor and coordinates to identify the correct bin. Then a linear actuator is activated, and the mechanism I designed is used to deposit the containers in the correct bin. Once this is complete the Q-bot follows the line on the floor until it reaches the home position. This process repeats indefinitely until it is stopped by the user.

Designed Mechanism to Raise the Hopper and Deposit the Recycling

I participated in the design of a mechanism to raise the hopper and deposit the recycling. Using sketches of six original designs for both linear and rotary actuators, I used a decision matrix to determine which design had the most potential for further development. After refining the chosen design, a CAD assembly was created for the mechanism using numerous components designed in Autodesk Inventor 2022. The custom designed components consist of two links connected to a wheel which moves parallel to the baseplate. Then two different links are connected from the wheel to a mounting plate attached below the hopper. The mechanism as seen here, works together to raise the hopper upwards when the linear actuator is retracted and lower it when the actuator is extended. To fabricate our design, the longer links were laser cut, remaining components were 3D printed, and screws were purchased to connect everything together. The assembled model functioned identically to the CAD assembly and was able to raise and lower the hopper successfully.

Key Skills

Python | Algorithm Design | Commenting | Teamwork | Embedded Systems | Raspberry Pi | Linux This project allowed me to develop my expertise in writing code for implementation in the real world where a lot of problems can arise. One of the things this taught me was how to manage my inputs and what I could expect from my program and the environment it operated in. One challenge I had to overcome was the unreliability of the q-bot in rotating consistently. I found through testing that a desired rotation of 90 degrees could require an input up to 100 degrees. This made me think about how to overcome uncertainty, by designing algorithms that did not depend on unreliable inputs. Overall I went through over 35 different design iterations before coming to a final version which operated continuously until one of the bins filled up and started overflowing, resulting in problems. After attempting the bonus in the physical environment I decided to write an algorithm in case the q-bot ever loses the line that it is designed to follow. By implementing this as a function, I was able to reliably deal with unexpected errors caused by bottles lying on the floor, or even the uncertainty of the physical environment. I also got the chance to work on embedded systems such as the linux operating system on the raspberry pi, which is a new skill for me, and one that employers may value highly. Lastly, I had the opportunity to work in a group setting on the code. This raised challenges of making sure I commented and tested my code so that no one else would have to troubleshoot it and not be able to understand why it was not working. I also had to deal with the problems of other peoples style of coding and mistakes that they may make. Overall this taught me a lot of valuable lessons about how to go about designing a program on a larger scale than I have typically seen in the lab setting. In regards to real world applications of this project I am very interested in Offline Robot Programming such as that done by Octopuz. I think this project is a very good introduction into the benefits that working in a virtual environment can have, for when you only have a limited amount of time to set up a system in the physical environment.

​

©2024 by Marshall Bahen

bottom of page