Term project for intro to robotics class, focused on developing routines and sensing for the Cozmo desktop robot to recognize arms and hands and appropriately bump or "nuzzle" them as a means of displaying affection.
This application uses python 3, and these instructions assume python3 is set as your default python command. You can check your version with python --version
- In bash (or git bash on Windows) navigate to this respository folder, then create your virtual environment with
python -m venv ./venv
- Once complete activate your environment with
source ./venv/Scripts/activate
- Install the requirements once activated with
pip install -r requirements.txt
- If you install any additional libraries, update the requirements with
pip3 freeze > requirements.txt
- Exit the virtual environment with
deactivate
- Cozmo will begin on the charger
- The charger will be placed near the back of the desk, nominally facing the target
- The desk will be nominally free of clutter and without obstacles.
- If a cliff is detected the target cannot be reached.
- If a bump is detected the target has been reached.
- The nudge force can be moderated in some way.
- The environment will be well lit, and the target will be easily separated from the background objects
- The environment will only have one target object (I.e. only one person)
- Cozmo will drive straight in the direction it is pointed.
We used YOLO to track a person's face.
Cozmo lacks a true "bump" sensor, so instead we implemented rough bump sensing using a rolling average of the root mean square of the acceleration. We only track the root mean square during the drive section to avoid tracking logic on the other drive and stop motions.
Everything in old folder is from initial testing
- OpenCV
- pycozmo
- cozmo SDK
- OpenCV tutorials
- imutils
- OpenCV feature detection
- OpenCV edge detection
- Google hand tracking
- OpenCV Shape Detection
- More Shape Detection
- Object Recognition
- Contours
- Object Detection
- TensorFlow? TensorFlow
- More TensorFlow
- OpenCV Distance
- OpenCV Distance between objects
- Raytracing oh no
- Finger detection and tracking
- Distance overlay options
- Single camera distance estimate
- cam distance calibration
- Object localization
- Camera Calibration in OpenCV
- IDK size and distance
- Optical Flow
- OpenCV real time pose
- OpenCV py pose
- OpenCV Dense Optical Flow
- DeepSort Tracking and Relative Distance