Team Status Report for 4/12

What are the most significant risks that could jeopardize the success of the project? How are these risks being managed? What contingency plans are ready?

The most significant risk to our project is accumulated error. Since our sub components depends on necessary communication between each other (machine learning model results to web app and machine learning model results to Arduino and Arduino commands to gantry movement), if one component does not obey their respective design requirement exactly it could risk the whole project’s validation. In order to prevent, we are taking extreme precautions to ensure that the each sub component is working as intended through rigorous testing. Our aim is to mitigate individual risk to mitigate overall risk.

Were any changes made to the existing design of the system (requirements, block diagram, system spec, etc)? Why was this change necessary, what costs does the change incur, and how will these costs be mitigated going forward?

There are no current changes made to the existing design of the system.

Provide an updated schedule if changes have occurred.

There are no schedule changes as of now.

Validation.

We plan to do multiple runs, first isolating by each component of the system (e.g. centroid & classification, depth accuracy, end-effector pickup rate) and doing multiple trials with different types of trash items. We will then do the same with the complete, combined system.

Reliable Sorting:

We will test a variety of trash/recyclables with multiple surface types and materials, in order to make sure that the end-effector is able to pick up objects with 95% success rate. We’ll also measure the distance that the gantry moves over a certain amount of steps in order to determine its granularity in the x,y,z movement directions.

Real-Time Monitoring:

We plan to ensure that the bytes from the Jetson Orin Nano reaches the web app in 30 FPS by timing when they leave the Jetson and arrive to the server using either Wireshark or timestamps in the code of each entity communicating over the network.

Real-time Object Detection:
We plan to use a set of real-life trash objects like plastic bottles and cans. We will do multiple sets (10) of static images each containing a different variety of objects to ensure that the machine learning model can work regardless of the images in the camera frame. We will also need to analyze that labels that the model outputs to see if it lines up with reality. We are aiming to match the 0.70 precision. from the Design Report.

Ethan’s Status Report for 4/12

This week, I finished setting up the necessary dependencies for the machine learning model (I was able to download correct PyTorch, OpenCV, and NumPy to be able to use the Jetson Orin Nano’s GPU). Moreover, I met up with Alejandro to start the integration process with the machine learning model and the web app. We decided on a scheme to send messages to the web app. Together we were able to get eh bounding boxes to show up on the web app for real-time monitoring.

Currently, I am behind schedule a little as I need to be met up with Alejandro again to setup a communication protocol between the Jetson Orin Nano and the Arduino.

Machine Learning Model Verification:

In order to verify the machine learning model’s performance, I took pictures of real world trash (empty plastic bottles, soda cans, and etc) on the actual conveyor belt. From there I run the model over the images and plotted the bounding boxes to see how tight of a fit it has on the image. From the image below, we can see that the bounding box is able to cover the object and that gives us confidence that we can hit the ±5 center pixel requirement from our design requirements. Moreover from the timing code I wrote, the model runs is able to run 50-70 ms way below our 150 ms design requirement. And finally, on the validation set we were able to get the 0.70 precision that we almost specified in the design requirements.

Teddy’s Status Report for 3/29

This week was spent doing work for the conveyor belt, updated gantry frame, and the end-effector. I was able to construct a rough conveyor belt when the materials arrived, such that the cloth has enough tension where it rolls when the bars it is wrapped around rotate. I spent some time working out how the new gantry frame will be build using the new aluminum extrusions, with the plan being to cut the rods sometime next week for assembly. I was also able to finish the design of the end-effector by attaching a solenoid to the end-effector such that a hole is plugged and unplugged to release the objects grabbed by the suction end-effector. I plan to attach it to the gantry tomorrow so that it is ready in time for demo.

Next week I hope to rebuild the frame and attach a stepper motor to the conveyor belt so that it is able to turn when commanded by the Arduino. I also hope to start the movement estimation code so that the gantry can move to the object’s location given that it is moving at a constant speed after detection. I am on schedule.

Alejandro’s Status Report for 3/29

I spent the majority of the week figuring out how to increase the speed on the motors controlled by the Arduino and fixed the vibration issue that would occur with them. The movement produced by the gantry system in the xy plane involved a considerable amount of vibration and slow movement. In order to fix this, I had to modify the C++ code for the Arduino so that the commands sent to the motors were more frequent to keep the motors from stopping at each step that they would execute in terms of their movement (they’re stepper motors). Additionally, I started implementing the code to control the Z axis, in this case the end effector motor. We don’t have a third cable to control the motor so I have to wait for it to arrive in order to verify that it works in conjunction with the other two motors of the gantry system.

My progress is currently on schedule.

For next week, I plan on finishing the code to execute a complete pick up and drop sequence for specific trash types. I also plan on programming the conveyor belt to move once built.  

Team Status Report for 3/22

What are the most significant risks that could jeopardize the success of the project? How are these risks being managed? What contingency plans are ready?

The most significant risk to our project is getting the machine learning model to run at a speed that’s close enough to real-time speed.  To do this we plan on making sure that we make a thorough analysis of the speed and accuracy tradeoffs until we reach the most optimal point of performance in the balance between the two. On another note, I next greatest risk is the failure of the gantry system to move fast enough to handle various objects moving along the conveyor belt. A contingency plan is that we’ll have a speed control feature on the web app to slow down the speed in the case that there are too many objects being passed through the conveyor belt for sorting. This would allow our robot to have enough time to sort all of the items being passed through without having to skip any.

Were any changes made to the existing design of the system (requirements, block diagram, system spec, etc)? Why was this change necessary, what costs does the change incur, and how will these costs be mitigated going forward?

There are no current changes made to the existing design of the system.

Provide an updated schedule if changes have occurred.

There are no schedule changes as of now.

Alejandro’s Status Report for 3/22

I spent the majority of the week programming the Arduino to control the stepper motors to move the gantry’s xy movement. I spent a significant amount of time figuring out how to move each stepper motor to yield a specific spot on the xy coordinate plane. I can now calculate a specific location on the xy plane and move the location where the end effector is to be placed to that specific location. The C++ code is written inside an Arduino file that controls all of the movement and stepper motors. Additionally, I fixed the issue with the web app streaming by moving the server to run on Powershell so that there are no port confusion or firewall issues when running it from WSL on my Windows machine.

My progress is currently on schedule.

For next week, I plan on writing the code to translate the coordinates given from the Jetson to the values needed for the motors of the gantry due to its unique pulley configuration. Additionally, I’ll work on controlling the end effector once it’s physically been added to the system.

Alejandro’s Status Report for 3/15

I spent the majority of this week working on reconnecting the Jetson to the webserver, since it no longer connects to my WSL server.js instance. I spent a considerable amount of time trying out different ports and connection methods. The first method I tried was to try and reset the firewall privileges on my laptop, but that failed to work. I then moved onto attempting to change the port forwarding on my device to the WSL port, but that also failed to work properly. The Jetson pings to my laptop but no longer wants to connect to the server. If I am unable to get the websocket working again as I had it before, we may have to shift to a tethered wired connection for the time being. Additionally, the canvas drawing feature is implemented. Also, the gantry xy axis is fully assembled now.

In lieu of this obstacle, I will plan to try one more time to get the websocket connection to work, and if it fails I will shift to using a wired connection. Additionally, I will test the canvas drawing with some test values next week as well.

I am currently on schedule aside from the minor hiccup.

 

Ethan’s Status Report for 3/15

This week I was able to get the YOLOv8 OBB model work on the simple single object toy images and multi-object toy image as described in the Design Report. To recap simple single object toy images, are image where there is a single object in frame that is relatively close to the camera and the multi-object toy images. Visually the bounding boxes and classification labels on objects in these images are accurate (± 5 pixels within the center of the true bounding box). With this, I think we are ready train the model on the full dataset and see how its purpose is.

Next week, if the results are good I plan on porting the model weights to the Jetson and seeing its performance there.

Currently, I am on schedule.

Team Status Report 3/8

What are the most significant risks that could jeopardize the success of the project? How are these risks being managed? What contingency plans are ready?

The most significant risk to our project is that the suction-based end effector won’t be able to pick up different types of trash items. We’re managing this risk by focusing a considerable amount of time on the development of the end effector mechanism. In the case that the suction with the vacuum pump is ineffective, we plan to pivot to a claw like end effector mechanism for picking up the pieces of trash.

Were any changes made to the existing design of the system (requirements, block diagram, system spec, etc)? Why was this change necessary, what costs does the change incur, and how will these costs be mitigated going forward?

There are no current changes made to the existing design of the system.

Provide an updated schedule if changes have occurred.

There are no schedule changes as of now.

Part A was written by Teddy, Part B was written by Ethan, and Part C was written by Alejandro.

Part A:
with consideration of global factors. Global factors are world-wide contexts and factors, rather than only local ones. They do not necessarily represent geographic concerns. Global factors do not need to concern every single person in the entire world. Rather, these factors affect people outside of Pittsburgh, or those who are not in an academic environment, or those who are not technologically savvy, etc.

Currently, the issue of proper waste processing is one that many countries, including the US, are struggling with. Many countries do not have the infrastructure to pay for recycling facilities, as it requires a lot of manpower, and the resulting materials are not very profitable. Additionally, a lot of our waste is shipped to other countries in order to prevent it from piling up here, however this means that other countries are burdened with our trash. SortBot could help reduce the amount of trash by separating out the useful materials, at a much lower cost compared human workers. This could potentially help other countries without the funds for recycling management to do so.

Part B:

In the United States, the common practice is to dispose of all types of municipal solid waste in single bin, prioritizing convenience over environmental concern. SortBot is set out to challenge this norm, one that focuses on ease and efficiency, by introducing an autonomous system that streamlines waste separation without requiring a behavioral change. By shifting the responsibility of sorting waste away from the person throwing away the trash, SortBot can work within the existing American cultural norms. This ensures that materials can be property sorted without requiring individuals to change their habits. While this is not the best solution for this issue, it is one of the most appropriate for current American culture.

Part C:

Our product solution will meet the need of the consideration of environmental factors by providing a streamlined method to making the environment cleaner. Utilizing advanced computer vision and machine learning algorithms, our robot has the ability to identify and differentiate between different types of trash and can thus correctly categorize the trash types and sort them into their respective bins. The system can aid in the sorting of trash to aid in the recycling of these items. Normally, all recycling items mixed with trash would normally end up in landfills and be lost in terms of the value that they could provide when recycled, but now with our product solution, we can recover these items and help in reducing the environmental strain of waste disposal.

Teddy’s Status Report for 3/1

Over the last two weeks, I worked on constructing the gantry as well as the frame that holds it. I was able to construct the 4xidraw part of the gantry since all of our parts had finished arriving. I was then able to print, assemble, and attach the z-axis to the gantry. Currently, the parts required for the z-axis movement are assembled, but the end-effector is not attached, since we are still waiting for the vacuum pump and the relays to arrive. There is an issue in that the z-axis can’t extend very far away from the gantry, as the weight causes the rods to sag. In order to remedy this, I’m planning on attaching a bar horizontally onto the part where the z-axis attaches to the rest of the gantry, which will rest on two other bars so that the front does not sag. A picture of the current gantry is shown below.

I am a little behind schedule, partly due to delays in the shipping of the gantry parts as well as the end-effector parts. I plan to fix the sagging issue on the gantry next week, as well as hopefully get the electronics and the code for the 4xidraw working.