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.

 

Teddy’s Status Report for 3/15

Most of the time spent this week was on expanding and reinforcing the gantry to compensate for the sag caused by scaling up the design of the 4xidraw. I was able to construct a large frame around the conveyor belt in order to provide a mount for the 4xidraw. I then had to redesign some of the parts of the 4xidraw so that there would be no sag; this involved making one of the rods slide along the frame so that it supported the end-effector. I was also able to print out the rack so that the rack-and-pinion z-axis movement was complete. I’ve also begun testing the vacuum pump with the suction cup. It seems to be able to pick up flat, non-porous objects like plastic consistently, however it does not work as well with porous materials like paper.

Next week I plan to start working on programming the xy movement and will hopefully finish a fleshed out design of the vacuum end-effector. I am slightly behind schedule as I didn’t anticipate the rebuilding of the gantry to take as long as it did.

The picture of the current gantry is shown below:

Team Status Report for 3/15

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 risks to our project is getting the machine learning model to real-time speed. In particular, the YOLOv8 architecture can achieve real-time speed on the Jetson Orin Nano however it has been noted it is incredibly frustrating to do so as it is careful speed and accuracy tradeoff analysis. To mitigate this risk, the model not being fast enough, we need to approach the speed and accuracy tradeoff analysis very meticulous, in particular we plan to have a detail log that we can reference to determine the sweet point for our use case.

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.

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.

Ethan’s Status Report for 3/1

The majority of effort this week was spent on finding bugs in our YOLO codebase that caused the results from last week to look really poor. I discovered it was the loss function. Previously I was using a more naive approach that combined a weighted mean-square loss for the bounding boxes with a weighted cross-entropy loss for classification. After reading a couple of Medium articles about YOLO, I realized that I was implementing an entirely different loss function. Once I fixed that I also a little bit more training infrastructure that would hopefully making training analysis easier: curve plotting for each loss. By monitoring loss, I can identify parts of the model that would need tuning in future runs.

Next week, I plan on getting detection working on toy images.

Currently I am on schedule.

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.

Alejandro’s Status Report for 3/1

I spent the majority of the week working on the assembly of the x-y axis of the gantry system. The assembly was time-consuming and laborious. The assembly requires a few more steps that will take some considerable amount of time. I will work on finishing the assembly the week I get back from Spring break. My progress is slightly behind schedule. In this case, I will prioritize the assembly of the gantry’s xy axis in the following week of work. Additionally, I was experimenting with the use of the canvas drawing onto the camera feed but I will need more time to solidify the feature. I’m also running a bit behind with the canvas drawing feature but I’ll have that done promptly after assembling the gantry. So next week I intend on completing the gantry xy axis and finishing the implementation of the bounding box HTML feature of mine.

Alejandro’s Status Report for 2/22

I successfully established the WebSocket connection between the Jetson Orin Nano and my laptop’s localhost server. I then configured my server.js to stream the video served over the WebSocket connection to my web app. Additionally, I had to change the index.html code to properly display the video being streamed. After several hours debugging, I finally got the webapp to stream video. Now, the web app displays the video of the camera that’s connected to the Jetson Orin Nano. Here’s an image of the video feed of me being displayed on the webapp. 

I am currently slightly behind in that my team had planned to assemble the xy axis of the gantry system this week; however, my team ordered only two rods of 3 ft when we expected two rods of 6ft each. The other two 3ft steel rods should arrive next week. In order to make up for this delay, I’ll take a day sometime next week to assemble the xy axis of the gantry system.

Next week, I need to also implement box shading onto the HTML of the webapp to display identified objects on the camera feed. And as previously stated, I will also assemble the gantry system. At the very least, I’ll assemble half of it in the case that the other two steel rods do not arrive in time.

Bytes Sent over Websocket Between Jetson and Server

 

 

Ethan’s Status Report for 2/22

This week, I was able to finish the training infrastructure to train the YOLOv8 OBB model. Now that I am able to train the model, I need to employ some sort of verification strategy determine that the model was implemented correctly before I do full batch training. I decided on training the model one single basic image (I am defining basic as an image where the object is close up and on top of a distinct background). After training on this image for a significant number of epochs, I found that the detected bounding box was completely off. Currently, I believe that something went wrong with the model’s OBB detection head and spent a majority time this week trying to verify this assumption.

Next week, I plan on getting detection working on this toy image and hopefully training using the entire dataset and analyzing the results from there.

Currently, I am on schedule.