Posts

Weekly Update (Week 9)

Image
This week we finished up our final project and recorded a video of it functioning. It worked relatively well, the ball was able to move in a circular trajectory, albeit very very slowly. We assembled an hour and a half of video footage of the ball moving through the gel and plan to put it together and speed it up so that the path the ball takes is visible. In addition, we are putting together a final presentation for Monday. Photo of the functioning final product

Weekly Update (Week 8)

Image
This week we completed our setup and started testing the functionality. We struggled a bit with the fine tuning of the magnet placement. The ball would either move imperceptibly slow or way too quickly. We plan to meet again this week the finalize a position for the magnet, clean up the setup as a whole and record a video of the machine working.

Weekly Update (Week 7)

Image
This week we decided to remove the Arduino from our project and replace it with a raspberry pi. We tried to run the code from the raspberry pi itself, but we had issues with getting the code to run at the desired speed due to the limited processing power. So we made a script to spin the motor that lives on the raspberry pi and we are using sending ssh commands to the pi from the imaging processing script running on an external computer. Next, we made a stand for the camera to sit on our platform. Now we just have to get our dish holder printed and make a case for the raspberry pi and the motor so the exposed circuitry is cut down. Next week we hope to run tests.

Weekly Update (Week 6)

Week Six This week we were able to get a python program to start the spinning of the motor, but we are having a real issue getting the motor to stop spinning. We are using the Serial module for python and sending bytes to the Arduino board. In addition, we are making more gels and testing the magnetic pull force.

Weekly Update (Week 5)

Image
Week Five This week we were able to attach our 3d printed dish holder to the stepper motor. In addition, we started testing the gels to get some data on how the magnets interact in the gel. We recorded the test runs with a ruler to allow for after the fact calculations to be done like calculating acceleration as a function of distance from the external magnet. Large Dish Holder We also received our other 3d printed parts: the magnet and the small dish holder. They each fit the part well and will allow us to start our testing of the software.  Magnet Holder Smaller Dish Holder The programming code of the 28BYJ-48 stepper motor is almost complete. We are able to control the RPM of the motor but the highest amount we can set it to is around 20 rpm. If we set it to a speed higher than 20 rpm the motor will not spin the attached dish holder.

Weekly Update (Week 4)

Image
Week 4 This week we started printing our structures out. We printed a holder for the dish which will fit onto the bottom. (As seen in figures 1 and 2), and a holder for the external magnet as seen in figure 3. We had a chance to test the dish holder and it fit perfectly. We are still waiting for the magnet holder to print. Figure 1 (Top View) Figure 2 (Bottom View) Figure 3 In addition, we added a new option to the software. The option to graphically set the circular path that the magnet will go on by just clicking a point. We are still working out the bugs on this feature though. We were also able to get the stepper motor to run at it's highest speed, we now just need to work on sending commands from the python code. We were informed that we may have to switch to a smaller dish. We are going to make a few gel samples and test it to see how the magnet reacts in each dish.

Weekly Update (Week 3)

Image
Week 3 This week we continued to make progress in the software department. The Program is able to identify the magnet as it moves through the dish. We now just have to add the logic so that it will move the dish when it senses the ball's location is under the radius line. We also made a graphical user interface for the program to make it easy to learn how to use. GUI Upon launch Example of the test button function Run Program button example The test button shows the binary image that the program will run the blob detection on. If the ball is not visible you can change the Gaussian Blur. The camera number changes which camera the system will use. If you are using the primary camera the camera number is 1, an external camera number is 2 etc. The Blob detection min area slider changes that minimum pixel area that a blob must be in order for the program to detect it. The processes per second slider changes how many times the program broadcasts the coordinates of the ...

Weekly Update (Week 2)

Image
Week 2 We are making a decision to not draw a circle on the bottom of the dish. We feel like the circle could be much more easily added in software so that it would not add an extra step of image processing. This allows us to apply a harsh binary filter to the image so we only get the magnet itself. It also removes the distraction of the dark circle so that the blob detection will work more efficiently. We also were given an added challenge of stopping the ball's motion after the path has been traced. This will require us to move the magnet after we detect a full circle has been traced. We came up with two solutions to this issue: Move the magnet away from the dish with a linear extension device and a DC motor. Turn the dish quickly away from the magnet to the furthest point. The second solution would be ideal as it would keep our costs down, but it may be hard to implement. We would need to perfectly place the external magnet to the point where when the ball is at the top...

Weekly Update (Week 1)

Image
Week 1 This week we were introduced to our challenge. We came up with an initial list of problems we think we may face and assigned roles to each group member. In lab, we learned the basics of controlling a motor with an Arduino board. In addition we also designed a part to be 3D-printed which will be fit into the teeth of the motor. It is shown in figure 1 Figure 1 If the part fits well, we will design a base for the dish to rotate on. We still need measurements on the dish and camera to print the rest of the structure. We hope to get more information on this next week in lab. We also have formed a good basis for our image analysis code. Using pictures given in the lecture slides of a possible setup, we have created a python program using the opencv module. We use this to detect the circle drawn at the bottom of the dish and the magnetic ball to be controlled. As shown in the pictures the program draws a gray circle around the track drawn under the dish and a whi...