To use this project, new members should create a fork.
0.1) Install Python > 3.12 (must be greater than 3.12)
0.2) If you are running Linux, make a venv. See instructions at the bottom.
0.3) run python -m pip install -r requirments.txt
0.4) Install coppelia sim educational: https://www.coppeliarobotics.com/
0.5) Run python main.py --help
which will setup a config file and show the parameters for the program.
0.6) (optional for twitch streaming) Install OBS: https://obsproject.com/ \
If you are running Linux, make sure to source venv/bin/activate
Run python main.py --help
to see the command line arguments.
If using the simulator, make sure CoppeliaSim is running our scene (double click on simulator/armSIM(3dof).ttt)
If you want to use twitch for video output (great for remote control!) you will need to open OBS and add a source add "http://127.0.0.1:5000/video_feed" as a source, this is the POV arm camera. Review that everything looks good, then go live in OBS!
this directory contains the main file, the pip required packages and project wide documentation
file | purpose |
---|---|
main.py |
Run python main.py --help for more information. |
requirements.txt |
Run python -m pip install -r requirments.txt to install any dependancies. |
config.json |
a git ignored file that stores any device preferences or twitch api keys. |
startup.py |
A script that pops up a window to restart the arm. Used on the Pi touchscreen to avoid typing. |
This discory is where the various hardware interface files will be, if you are using this program with the simulator or a physical arm, you will need to make sure a HAL (hardware interface layer) exists for your arm and is loaded in the main file.
This is where the various vision solutions will live. If you want to try another computer vision solution, make a new file following this guide: (your_name)_(solution_name).py ex: aaron_opencv_postnet_object_identifier.py where my name is aaron, the soliton is postnet from opencv and this will identify objects.
This is where the mission planning logic exists. These scripts will tie everything else together, they will take in the visual data from the selected vision solution, and will plan out how the arm will move, and actually issue movement commands to the arm. Language interpretation things will go here.
This directory is where most utility files will be, how does this program display images or communicate with twitch.
For most projects, make a fork of this project. When creating the fork, follow the naming convention of ARM-<module_name>
Then later we can have you create a pull request on the main project, where we can incorporate those changes on the main project.
Branching is more for the physical arm project or modules that everyone needs.
Create a new branch if you are working on a new module. For instance, if you were working on the text to speech model, you would create a new branch called 'text-to-speech', and work in that branch. Name your branches meaningfully. No a-test. If you think a single module needs multiple branches, name the branch <your_name>-<module_name>
. Only merge back into main once your module is fully tested.
Commit OFTEN. You should at the least commit every time you do some work. Ideally everytime the program is working you make a commit.
Commit messages should be descriptive. If you added a function called FOO, your commit message should be something like "added function FOO". It should not be "a few changes" or "working on some stuff"
Always pull before you push. If you have a merge confict and don't feel equipped to handle it, ask someone who knows about git. Pull often to avoid merge conflicts.
Don't.
git pull
git pull git add . git commit -m "" git push
git branch
git checkout
In Linux you need virtual enviroment or venv for short to install pip packages.
If you are confused about any of the following, ask for help.
In Linux run the following:
sudo apt update
sudo apt install python3.12
sudo apt install python3.12-venv
python3.12 -m venv venv
Then pip install etc...
If you are running ubuntu, there are more steps including deadsnakes.