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.

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.

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.

Marcus Status Report 4/12

The last two weeks Ive been testing and rebuilding the robot arm to make it more reliable. I have updated system to have both arm and electronic controllers on the same 3d printed structure, and revised pieces to make wires internal. I tested some pwm ramping functions, and am still revising control software.

I had difficulty threading the wires through the structural components, and adjusting calibration for each new iteration.

Next week we are going to work on dialing in arm movement.

Team Status Report 3/29

This week we were able to initially integrate all of our components (Arduino arm/kinematics code, Python vision/kinematics/control code). We were able to integrate the CV with the robot arm to track qr codes and determine box position/speed/height, send the robot arm sequential commands, and pick up the moving packages. We were able to pick up multiple packages in a row.

Our current biggest risk is that inaccuracies/imperfections in each submodule will add up to make our end-to-end system insufficiently accurate and/or reliable. Currently our vision module is not perfectly accurate, and our arm and kinematics are also slightly imperfect / idiosyncratic. We are ramping up our unit testing to ensure that these issues are minimized. We are also working on optimizing the PC->Arduino command sequencing to minimizing these risks.

Next steps are adding better move selection and qr tracking. We also plan to more definitively test and map out the arm’s exact angle idiosyncracies. Similarly, we plan to do more robust testing of the vision module’s real-world mappings. Best case, by the end of the week, we hope to have the entire box-grabbing system working in a reliable and decently accurate manner.

Marcus status Report 3/29

This week I wrote more code to control the robot arm, and designed a clamp to connect the camera to our treadmill in a robust non moving manner. I isolated the vacuum from the sensors to help with keeping steady voltage feedback. We were able to get the robot to pick up multiple packages in a row. Next steps are adding better move selection and qr tracking.

Team Status Report 3/22

This week we put it all together and got our robot to pick up packages off a moving conveyer belt. This was accomplished by wiring up the robot fully, troubleshooting a lot of angle sensor / actuator issues, and programming the Arduino to run multiple to-position moves. This serves as a big milestone for us as we have achieved a working robot that can complete tasks. We also tested the CV code for getting the QR value, determining the box height, and determining the box speed/position on our complete system with boxes on the conveyor belt. We also tested our timing/speed/latency, and we definitely should have enough time to successfully scan/track/calculate box variables and move the arm into position to pickup boxes before they fall off the belt.

 

Our biggest concern right now is that the vision module and Arduino arm control will not interface sufficiently well. This integration could become very time consuming and put us behind schedule, as we would potentially have to make many changes to each individual module in addition to working on the interfacing itself. We plan to finish and test the PC->Arduino interfacing code as soon as possible. We are also making sure to modularize the respective PC and Arduino code to make changes easier to implement down the line.

Our next steps are fine tuning our control algos over the coming weeks to pick up multiple packages quickly. We need to dial in our time tolerances and create bins for the robot to put boxes into. We also plan to finish linking our Python and Arduino code, which will enable us to test the QR scanning software and the robotic arm together. Hopefully we can also start testing the entire system next week, since the scanning system can currently acquire all the necessary metrics, and the robotic arm can currently pick up, move, and drop boxes.

Marcus Status Report 3/22

This week I finished up wiring the robot and wrote code to run and send angle feedback position moves. It took alot of trouble shooting to get all three angle sensors accurately measuring 0-180 of the three main actuators but luckily it wasn’t to hard to get the vacuum to turn on and off.  I spent alot of time this week wiring, troubleshooting, and programming the robot arm. Luckily all the work paid off and we had a successful package pick up and move. I was able to get the robot to run to 7 diffrent positions in a row using a command sender app and a Arduino control sketch. I got the robot to pick up a moving package on its 15th try.

Our next steps are combining our QR and robot algos, then we should be able to sort package efficiently