Grocerybot is a proof-of-concept robot that utilizes inverse kinematics, object recognition, path planning and finding, and web server communication to receive a shopping list from a web app and autonmously navigate a standard grocery store, collecting specific items from a list and returning to checkout once done.
This is our final project submission for the Spring 2021 session of CSCI 3302 - Intro to Robotics at CU Boulder. This is a proof of concept, so please treat it as such, and thank you!
Click the above image to be taken to the project video (2m35s)
- Michal Bodzianowski @itsMichal- Programming Lead, IK, Vision, Control Flow, Robot Design, Web Server
- Dustin Ramsay- Path planning, Math, Debug, Misc. Programming, Documentation
- Max Nyffenegger- Environment, Math, Debug, Misc. Programming, Documentation
- Install Webots r2021a. This was developed on
r2021a
andr2021b
contains a fatal bug with camera recognition. - Clone or download this repo locally.
- Run
pip install -r requirements.txt
at the root of this repo. - Run webots and open
world/grocery.wbt
- (Optional) Run the webserver, and then open the website locally
- Run the simulation by pressing play in webots
- (If running webserver) Make your selection in the website and click shop within 15s of the simulation starting.
- Run
server.py
on the same machine as Webotspy server.py
- Go to
localhost
in your browser for the shopping list. - Start the webots simulation
- Click your shopping list and relax
If server isn't running, Webots defaults to oranges and beers. Additionally, you have about 30 seconds before it defaults as well.
- Slow in real-time. Could be sped up
- IK fails on certain objects
- Path planning is prone to failure, and overly complex
- Code and state machine could be cleaned up