Conclusion

In conclusion we were able to combine the parts of our robot system to effectively sort boxes at a rate of 8/min at 95% accuracy. After prototyping a precise and strong robot arm from scratch over 2 years, we used a camera and ML to locate and track QR’s on a moving treadmill then feed this data to a python kinematics engine. We wrote Arduino code to control the arm using motor controllers and angle sensors utilizing position moves and realtime averaged angle feedback.

Here is a video of our system in action
System Video

Here is our Design Presentation Slides
Design Slides

Here is our Final Presentation
Final Presentation

Here is our Final Video
Final Video

Here is our Final Report
Final Report

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.

Team Status Report 4/26

This week we worked on increasing our accuracy numbers by decreasing movement tolerances. We tested each box orientation on multiple iterations, tweaking our timing and move sequencing. We are 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.

To minimize this risk, we have moved wires to the inside of the arm and improved the organization of our wiring containers.

Raunak’s Status Report for 4/26

This week, I helped tweak some of the delays and add a new servo in. I finished writing the report and added information about testing each subcomponent as well as the overall system. I also finalized the bill of materials and Gantt chart.

We are ready for our demo next week to demonstrate our working robotic arm box sorter. We will also try to get some initial feedback on our report.

We did extensive unit testing of 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. We ran each test about 20 times to ensure that our system was reliable.

Matt’s Status Report for 4/26

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.

Matt’s Status Report for 4/19

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.

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 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.

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

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 happy with that. Other than that, I continued making progress on the final report by adding the system implementation, ethics, and summary sections.

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.

Matt’s Status Report for 4/12

This week, I fine tuned 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).