Marcus Status Report 4/26

This week I worked on dialing the Arduino robot feedback control software. I added servo tuning to only increment by max 10 degree per second, and also update to face downward based on actual position of the earlier links from averaged angle sensor values.

Working with the team to get the robot to have high accuracy at getting boxes every time, and speeding up overall movement.

Here is the arm prototype graveyard so far:

Team Status Report 4/26

This week we worked on getting up our accuracy numbers. We tested each box orientation on multiple iterations, tweaking our timing and move sequencing. We also broke some boxes and are now making new rectangle boxes to demo. We are also working to make our overall move/reset time less so we can do more boxes per minute. Overall, we did not make any major design changes this week, and our schedule remains the same.

The biggest risk to our project and final demo is currently adding variance to our system / anything breaking (particularly physical breakage). To minimize this risk, we have added wire containers, moved wires to the inside of the arm, and improved the organization of our wiring. We have also been monitoring the physical health of our arm parts, particularly the gripper’s suction cup. We also ordered a new camera that we have been using for the past week, as the old one’s wire got tweaked. As you see below, we have also 3d-printed new test boxes with identical measurements to the old ones. We plan to record our final video with the full demonstration tomorrow to leave plenty of time between then and the final demo. In the worst case scenario where anything breaks before then, we will be able to fix it for the video and record the working system. In the worst case scenario where anything breaks after that, we will have the working video to present. However, both these scenarios are very unlikely thanks to the safety measures we have implemented.

Raunak’s Status Report for 4/26

What did you personally accomplish this week on the project? 

This week, I helped finish up some of the testing we needed to do. Namely, our robotic arm wasn’t as fast as we wanted it to be, so we had to tweak some of the delays and add a new servo in. Since we added a new servo in, we tested it to make sure that it works (and it did). Apart from that, I finished writing the report by adding the various tests we implemented. I added information about testing each subcomponent as well as the overall system. I also finalized the bill of materials and Gantt chart.

Is your progress on schedule or behind? 

We are ready for our demo next week!

What deliverables do you hope to complete in the next week?

Next week, we are meeting to create a video to demonstrate our working robotic arm box sorter. We will also try to get some initial feedback on our report and make any last-minute changes as needed. Lastly, we will put together the poster for our in-person demo.

Supplement

We had extensive unit testing for our computer vision QR tracker and the robotic arm. Some of our unit tests include testing the reliability of QR code detection, the speed of the robotic arm, the reliability of placing the packages in the correct location,  and end-to-end testing with the entire system. The end-to-end testing mainly involved placing the box at the front of the treadmill and seeing if the system was able to place it correctly. We ran each test about 20 times to ensure that our system was reliable. We were mostly able to meet our goals. Our tests initially indicated that our system wasn’t fast enough, but after making some changes to the servo and delays, we were able to get the robotic arm up to the desired speed.

Matt’s Status Report for 4/26

What did you personally accomplish this week on the project?

This week, I continued testing for our final demo and made a lot of tweaks and minor improvements to the vision and main modules. For the vision code, I made the speed calculation even more accurate, shrinking its +/- range by about 30% by more accurately factorizing box height. I also made the main module’s initial pickup time-sequencing more accurate by adding more complexity and minor variables to the calculation process. Additionally, I standardized angle values by updating and using a forwards kinematics function. The main improvements I made were to the timing, pathing, and adjustments of the command sequencing sent to the Arduino, focusing on improving grab rate and speed. I also presented our final presentation this week.

Is your progress on schedule?

We are running on schedule.

What deliverables do you hope to complete in the next week?

Final poster, video, demo, and report.

Matt’s Status Report for 4/19

What did you personally accomplish this week on the project?

This week, I made a lot of improvements to the main file and how it uses the QR data and kinematics to send commands to the arm.  In particular, testing and improving the smoothness and time-efficiency of box pickups and box drops. I also implemented safeguards and handling for scenarios in which the box is out of reach (the arm can’t quite reach the entirety of the treadmill width). Additionally, I tweaked the bin dropoff locations to be much more accurate and fixed some bugs with the Arduino connection. Since we made some major changes to the arm last week, I also spent a lot of time finetuning the command sequences again. Finally, I experimented with changing how the arm picks up boxes and moving the arm in line with the treadmill during pickup instead of moving straight up and down to reduce wear on the gripper.

Is your progress on schedule?

We are running on schedule but need to do more finetuning next week to ensure our project is as demo-ready as possible.

What deliverables do you hope to complete in the next week?

Accomplishing 90% box pickup+sort+drop accuracy/reliability and 8 box/min speed. Currently around 80% accuracy and 7 box/min.

Marcus Status Report 4/19

This week I worked on the Arduino feedback control algorithm, and tested robot arm with the Qr detection system. I changed the servo on the 4th axis to have higher volts and refresh at a lower rate, that helped with the jitter and keeping it reliably downward. I also centralized the Arduino, vacuum, motor controllers and horizontal actuator to 3d platform that we connected to a steel plate under the treadmill.

We are working to make our synchronous box pickup more reliable and quick.

Team Status Report for 4/19

This week we continued testing and improving our end to end system (robot arm + vision/control modules). We improved the servo on the 4th axis to keep it reliably downward, improved the Arduino feedback control algorithm, and centralized the Arduino, vacuum, motor controllers, and horizontal actuator to our 3d-printed platform that we mounted on a steel plate for stability. We also greatly improved the smoothness and time-efficiency of box pickups and drops via changes to the main control code. We also fixed some bugs with the PC-Arduino connection, coded handling for various edge cases, improved the accuracy of the control logic / commands sent, and finetuned the command sequences to match the new arm changes. We achieved an item sort rate of 7 per minute, such that were able to reliably sort a box and reset completely within 10s.

Our current biggest risk is that our end-to-end system is still slower and more inaccurate (7/min and 80%) than the goals we set (8/min & 90%). We are working on testing our system to increase speed/reliability. We plan to run our unit tests again and really finetune those accuracies, as well as continuing end-to-end testing and focusing very tightly on the command sequencing / PC-Arduino interfacing.

Raunak’s Status Report for 4/19

What did you personally accomplish this week on the project?

This week, I helped with the end-to-end testing to make sure that we are ready for the demo. With the rest of the team, I helped verify that the arm was able to pick up boxes off the treadmill at 0.5mph and place them in the correct bin. I helped time the runs, and we found that the arm was able to sort the bins at 10 boxes per minute, so we were very happy with that. Other than that, I continued making progress on the final report by adding the system implementation, ethics, and summary sections. I also finalized the bill of materials and am working on the final Gantt chart for our report.

Is your progress on schedule or behind?

Our progress is on schedule!

What deliverables do you hope to complete in the next week?

Next week, we will focus on the presentation. We are planning to demo the robotic arm, so we need to make sure that it goes smoothly. Once that’s done, we will work on the final poster, video, and report for the following week. We are pretty much done in terms of implementation and are mostly looking to wrap things up well.

Supplement

Personally, I used a lot of online resources to learn what I needed for this project. I had no prior experience with robotic arms before this, and I found online articles and videos very helpful. My main responsibility for this project was the kinematics engine, so I used a lot of online articles to learn the math behind everything. I also used online forums for Arduino help since it’s been a long time since I wrote that kind of code. I’m not much of a textbook person, so I find online resources very helpful because they are more focused and to the point. In terms of learning strategies, I made sure to never rely on a single website/article for anything. Whenever I found some important piece of knowledge, I verified it with another source. This was to gauge how many people approach similar problems as opposed to looking at the problem from a single perspective. This gave me the freedom to use different aspects from different sources.

Matt’s Status Report for 4/12

What did you personally accomplish this week on the project?

This week, I finetuned the vision module’s height and speed calculations to more accurately handle edge cases (box on the edge of the treadmill, tall box, etc.). I also finetuned the angles of the main file’s inverse kinematics outputs to align with the arm’s idiosyncracies (arm plane is slightly tilted). I was able to sync the main program’s axes/commands almost perfectly with the arm’s angle quirks to maximize accuracy. I also tweaked the timing/buffering of how the main file sends commands to the arm to ensure smoothness and reliability during pickup. In particular, it was previously having problems with moving the box up and to the bin after grabbing it. We were able to test the system on example boxes running on the treadmill and achieve 80% pickup success (8/10 runs).

Is your progress on schedule?

We are running on schedule.

What deliverables do you hope to complete in the next week?

I plan to finish the final presentation by next week, as I will be presenting on Monday. I also hope to make some physical bins and test the arm’s ability to drop the boxes in them, as we’ve currently only tested the arm dropping the box at the bin position.

Team status report 4/12

These past two weeks, we have been working on getting the robot to pick up a box every time. We integrated the vision/control algos with the robot kinematic algorithms and were able to reliably pick up multiple boxes in a row. Physically, we updated the arm to have both arm and electronic controllers on the same 3d printed structure/piece, and revised the arm pieces to make wires internal. We also revised the Arduino control software and finetuned the vision module’s height and speed calculations to more accurately handle edge cases. We were able to sync the main PC program’s axes/commands almost perfectly with the arm’s angle quirks to maximize accuracy. We were able to test the system on example boxes running on the treadmill and achieve 80% pickup success (8/10 runs).

Our current biggest issue is that our servo that controls the gripper is somewhat slow and jittery. We have ordered a new servo and will install it next week. We are concerned that this new installation could take a while, as we will have to reconfigure the Arduino and PC command code to account for the minute changes that the change in servo will surely cause. To minimize this risk, we have already started experimenting with different pickup move paths / command sequencing, as well as experimenting with different refresh rates and power ramping for the servo.

Next week we are going to work on dialing in arm movement and test our system with real dropoff bins.