Inspiration
This project was inspired by our group's personal connections, interestingly, to the mushroom space—one of our group members is close friends with several people in the agriculture industry and a passionate researcher at Penn State specializing in mushrooms. Because we had unique insight into the underutilized capabilities of oyster mushrooms, we felt well-equipped to design an efficient solution and dive into this market.
What it does
We are essentially building an autonomous robotic oyster mushroom farm, wherein oyster mushrooms are grown in a controlled environment in coffee grounds or sawdust (which would otherwise be disposed) and harvested autonomously. We can hence produce oyster mushrooms, known to have many health benefits, and the bi-product from the waste actually becomes a very good fertilizer, important amid a global soil erosion crisis.
Our current prototype holds a 3D-printed cylinder with holes in it—mushrooms grown in the cylinder are forced to protrude through these holes. We also have a model blade, which can autonomously spin around the cylinder, chopping the mushrooms which can then be collected. We also have a humidity and temperature sensor that allow us to monitor the conditions of the growth environment. Our fully developed plan also includes a vacuum that collects mushroom spores, allowing us to continuously replace harvested mushrooms, and a water pump and heating elements to modify, respectively, the humidity and temperature of the environment.
We currently have a web app integrated with a camera sensor to enable live monitoring of the environment and manual controls if necessary, and a computer vision pipeline that can detect when mushrooms are first present and when they begin flowering, at which point the harvest will automatically begin with no human intervention necessary. We are working towards integrating a neural network that will over time monitor the progress given the environmental conditions to assess the optimal values; these features will allow us to become an efficient, profitable, and sustainable farm with very minimal labor.
How we built it
For our prototype, we 3D printed a simplified version of a blade and the cylinder used for growth, and used hot glue for stands. We mounted the blade to a stepper motor with a Raspberry Pi as a central module to control the motor and all of our sensors. The remainder of our parts for our full product plan were CADed and assembled in Solidworks.
On the software side, we interfaced between Python and our Raspberry Pi module to read from our camera and humidity/temperature sensors, which are sent to a web server designed in Flask for live monitoring and manual controls. We also created an OpenCV pipeline by tuning a color range filter based on the expected color of oyster mushrooms compared to that of our system, and tested it against several images to verify near-perfect differentiation between a mushroom-free environment, an environment with budding mushrooms whose spores need to be collected for future mushroom growth, and an environment with flowering mushrooms that need to be harvested. We have also begun the implementation of a neural ordinary differential equation system; we will collect data over time both from our robot and those that we sell to consumers, and use that data for this network to converge on optimal humidity and temperature conditions for growth.
Another emphasis of our project is sustainability and scalability. We created a full business plan and a Lean Canvas to ensure that we had a clear grasp on a problem and a reasonable means of pursuing its solution. We discovered that the market for mushrooms is actually skyrocketing, oyster mushrooms being the largest beneficiary, partly because of their many health benefits. We are hence confident that we are entering an underserved market for gardeners, consumers, restaurants, and farmers.
Challenges we ran into
Mechanically, our 3D printer tolerances were not as we expected; our holes shrunk, so we used a soldering iron to melt the PLA to make more room. But that melting distorted the plastic, so our blade is now held tightly by duct tape to ensure it doesn't collide with the cylinder. Solidworks assembly also returned errors and invalid arrangement of parts, so certain features were made using shared sketches, an easier way to relate part geometries while still preserving complex features.
For firmware, the library for a sensor that we were trying to use also had been deprecated and did not work as expected; hence, we had to find a different library after hours of debugging became fruitless. However, the alternative library, while newer, relied on "circuit Python", which was not compatible with the remainder of our code base. Eventually, we discovered an open-source pure Python library that did still work, but it took many hours of debugging to diagnose the problem in the first place.
On the software side... multithreading. In order to run our web application, we had to have both the web app and the robot running. That meant that the web application would occupy one thread and the image capture would be running on the other thread. There were, however, a few cases where variables would need to be displayed around the same time the values were being initialized, as well as a few times where both threads were utilizing the same values, leading to a race condition that was particularly challenging to discover. However, the debugging process did help us learn a lot about Flask—which we had never used before—and some fairly common problems with multithreading safety.
Accomplishments that we're proud of
• Developing a creative and impactful plan, and being able to make each component move as intended in the assembly while maintaining our ingenuity and complexity.
• Learning how to use Flask and successfully isolating and repairing the race condition to achieve a functional supporting web application
• Learning to use OpenCV and applying it to a real-life situation with very good experimental results
• Maintaining focus on our goals overall despite the difficulty of debugging and the need for creative, unplanned fixes, like the duct tape on our system to compensate for the degraded plastic and salvage our 3D printed material, and the alternative library after our initial library was too outdated.
What we learned
We discovered that complex geometries are often best made using sketches that reference their surroundings instead of independent sketches; these are more efficient good design practices. We also learned how to use Flask to develop web applications that facilitate interaction with other devices, OpenCV for camera detection in a real-world situation, and a Raspberry Pi with Python to control our motors and sensors, which was unfamiliar as most of our previous experience had been with Arduino systems. Because our team had a mix of software, mechanical, and electrical expertise, working on a project of this scale together involved extensive collaboration and helped us all gain experience with the ideation and implementation processes in many subfields of robotics.
What's next for Pleurotus Ostreatus Automaton
While we have a model of our planned product, we have to continue developing our model to actually complete the build and test our design decisions. We are also hoping to take advantage of our access to potential customers and experts in our space to ensure that our design is as economically viable as our current data suggests. Once we are ready to go to market, we are hoping to sell our oyster mushrooms at local farmers' markets, and advertise our fertilizer and the robot itself to farmers we know and eventually expand to retail stores like Home Depot.
Built With
- flask
- opencv
- python
- raspberry-pi
- solidworks
Log in or sign up for Devpost to join the conversation.