benjami1
I made 3D-models for the ramp, spinning flapper, and ramp attachment. These are all parts of the pickup mechanism. David gave me input on the design and helped with the measurements. Artur then printed out the models at CyLab. I also worked on improving our ball detection, trying many different methods separately and together. These included pyramid mean shift filtering (too expensive), Canny edge detection (shows promise), Hough circle transform (too picky), and many smoothening techniques involving convolutional filters and erosion/dilation. I also assisted David with merging his pickup mechanism logic into the FSM.
rrpillai
I continued to work on localization. I also helped out Ben with his image segmentation experiments and continued to debug the FSM and catch edge cases.
davidyu
This week I finished the pickup mechanism and attached it to the car. This included working on mounts and storage of the car. It now is fully functional and can pick up the balls successfully. In addition, I added control to the pickup mechanism as well so it runs only when needed when the car has run into the ball. I also minimized its blockage of the camera by returning the mechanism to the least invasive state after use. I will continue to test and optimize the pickup mechanism as well.
I finished modeling our vehicle's base frame. It's modular to allow for further expansions later down the road, in case we need a rollcage or if we need to prototype pickup mechanism mounts. I also made some basic localization markers and tuned our CV to detect them with Rohit while adding a few more movement commands to the car's API. There was also a lot of testing being done, with some of it on my phone's mobile hotspot so we could demo our vehicle outside of my house's wifi range.
I worked on the localization even more and tuned the CV to detect the markers with Ben. I also heavily tested and debugged the FSM and added even more stages to make it more robust. I rewrote the localization stages to allow for marker detection in any order as opposed to a specific order, and I added distance detection for said localization markers.
This week I worked on setting up the pickup mechanism. Using gearmotors and a mixture of other parts, I have fashioned a workable pickup mechanism. It now can successfully pick up balls and place them into the container. All that is left is to mount it onto the car once our car mount is finished. That will be part of this weeks incoming tasks. I also helped in the continued testing of our car movement and ball vision.
#8 | | | we toil away | | | 4.26.2018 |
I worked on improving our robot's CV so that it can detect tennis balls in more lighting conditions and at a farther range. I improved the thresholding, and Rohit and I also tested more variations of Hough transforms and contour detection. I've also started making 3D models of our frame.
This week, I worked with Ben on improving our car's CV. I also improved the localization in the FSM and started creating the markers that we will use to localize with.
I worked on controlling our new motor and connecting it to our pick-up mechanism. The new motor is still compatible with our ESC, which can still be controlled through PWM and our RPi. The new motor is also strong enough to move tennis balls up steep ramps without exploding.
#7 | | | carnival | | | 4.19.2018 |
I worked on multi-threading car movement and in-place-turning this week. These two components are important because the previous single-threaded nature of our car movement caused difficulties with it's use of time.sleep, which blocked video streaming and subsequent CV along with the FSM. In addition, in-place-turning greatly helps out the FSM in allowing the car to orient itself so that the ball is centered in the camera. Because the turning radius of the car is rather large, it is otherwise difficult for the car to approach balls at the edge of its vision. This allows for it to rotate while staying within a 2ft radius circle.
This week, I implemented a method that calculates not just angle but also distance of a detected object from the car. This will help us in our localization. Along with Ben I also incorporated the in place turning into the FSM so that the car can accurately turn to face the ball head on. We also determined that we would need tall markers to localize and thus plan to use different colored rods at the 4 corners of the court. Once we set up these markers, we will be able to test a complete cycle of the FSM.
This week, I mainly worked on the pickup mechanism, this time with the bigger and stronger motor. Using an ESC (electric speed control), I tuned and tested the pickup mechanism to work with what we needed. However, while during our test, we unfortunately cooked the motor due to unfortunate circumstances, so was halted in progress on that. After much research, I have ordered new parts, which should fix our previous issues and help provide a more stable and solid pickup ability. In addition, I worked with Ben in calibrating and testing the in-place turn movement of the car while searching for a ball.
#6 | | | tragedy | | | 4.12.2018 |
I moved our hardware onto the RC car and made the platform fully mobile using a temporary cardboard-and-chopstick setup. I also added more features to the car API. I forgot to add credentials for a mobile hotspot or the CMU-SECURE network, though, so our demo was unable to do anything.
I wrote some extra features that were more relevant to our demo on a different branch of our FSM code using an older commit. I also looked into different localization algorithms and existing code online that our car could use. For next week, I'll continue working on localization and will hopefully succeed at having the car localize.
This week I continued to work on the pickup mechanism by testing and using electric motors. I figured out how to use our Raspberry Pi to speed control the motor, and also worked on attaching the motor to the pickup mechanism. This week I will continue to work on the pickup mechanism and play with gears/pinions to make the mechanism work even better
#5 | | | more stuff | | | 4.5.2018 |
I wrote an API for controlling the RC car and helped link it up to the FSM. I tested the API and did calibrations for steering and throttle. I also did more research in regards to our pick-up mechanism and battery upgrades.
I tested the FSM on the RC car and then spent some time debugging it. We were able to get the car to properly switch states and make rough movements. I also wrote some code for localization, but it needs to be tested.
This week, I've built a prototype for the pickup mechanism. I used strong cardboard, lightweight wood, and lots of glue to make a working prototype. I've tested this design by hand crank and regarding that, it seems to work. This coming week, I will need to work on attaching the motor to the mechanism and controlling the motor in the use of ball pick-up. In addition, I did research and testing on efficient movements of the RC car in regards to in-place turning, an important part of our car movement that we will implement soon.
#4 | | | chugging away | | | 3.29.2018 |
I managed to arm the ESC using PWM signals from our Raspberry Pi. I also spent a while debugging our car to figure out why the steering servo wasn't responding. In the end, I was able to control the steering using PWM signals as well, but I still have no idea what went wrong previously. I'll spend the next week writing an API for controlling the RC car.
I wrote down the architecture for the finite state machine, which is the high level logic that our robot will use. The main states are looking for the ball, moving towards found balls, picking up found balls, looking for markers (which are placed at the corners of the half court) if the ball isn't found and moving to the markers. For next week, I plan to test this FSM once the movement API has been implemented and will hopefully have a demo of the car finding a ball and moving to it.
I worked on the pickup mechanism for our tennis ball bot. I began by designing a blueprint for the mechanism through measurements of our RC car. I also researched and ordered the parts needed for the mechanism. From now through the weekend, I will be constructing a version of the mechanism and testing its capabilities.
#3 | | | back to work | | | 3.22.2018 |
we went to spain
#2 | | | spring break | | | 3.15.2018 |
I set up this website and worked on communication between the Raspberry Pi and our RC car. David and I brought the car to lab to verify what PWM signals were being sent in an effort to figure out how to arm the ESC and why the steering servo was unresponsive. I wrote a small test script to control the RC car's throttle after using the remote control to arm the ESC. I wrote some sections of our design document.
I worked on our computer vision algorithm by experimenting with contour detection. I tested our algorithms on stock images of tennis balls, as well as custom configurations of tennis balls that we took photos of in less-than-ideal lighting. We were able to detect balls and the net quite well. I also wrote some sections of our design document.
Ben and I used an oscilloscope to read the PWM signals going into the RC car's receiver. I also blueprinted some more ideas for our pick-up mechanism and shopped around for compatible motors. I wrote a large portion of the design document and managed to get the drivers working for our servo shield.
#1 | | | the beginning | | | 3.8.2018 |