Embedded system development @ Illini RoboMaster
Have the following on your system:
python3
(Tested on 3.10+)udevadm
systemd
[Recommended]tmux
[Recommended]make
arduino-cli
Get under your cloned directory.
- Make sure you have correct serial port access permissions (by group membership or otherwise). For Debian-based systems, this would be the
dialout
group.
- Check your current memberships.
groups $USER
- Debian/Ubuntu
sudo usermod -aG dialout $USER
- Arch
sudo usermod -aG uucp $USER
-
Modify the
*_ID_SERIAL(_SHORT)?
variable(s) inconfig.py
based on your the serial id(s) of your device(s). To find the id of a device on/path/to/serial
, runudevadm info -q property '/path/to/serial' | awk -F= '/^ID_SERIAL_SHORT/ { print $2 }'
-
Create a python venv (in this case named
venv
) and install the requirements.python3 -m venv venv pip3 install -r requirements.txt
-
[Recommended] If you want
minipc.py
to be able to run in the background for easier debugging/testing, seeminipc-tmux-daemon-helper.sh
. Run it without arguments for help and details. If you don't want to read run./minipc-tmux-daemon-helper.sh -i install
for an interactive installation.
-
To set up Arduino compilation/upload via the Makefile, run
make configure#{,-{,re}setup}
.
For options, run
python3 python/main.py -h
Assuming you have set up the tmux daemon in the previous section (read the help first!),
# Start the service.
# You can omit `.service'.
# You may want to alias `systemd --user' to something shorter.
systemd --user start minipctd.service
After starting the service,
# Connect to the tmux section.
# You definitely want to alias this to something shorter.
tmux -L mtd attach -t mtd
More keybinds are detailed in minipc-tmux-daemon-helper.sh
. Alt+f d
to detach, Alt+f z
to kill.
systemctl --user {restart,stop} minipctd.service
do what you expect, and
systemctl --user reload minipctd.service
sends Ctrl+c (C-c
) to the tmux session, which the job control handles by restarting main.py
(after a one second delay). This means in the tmux session you can restart main.py
manually with C-c
. The one second delay is to wait for possible user input, in which case the user is dropped into a control menu.
Make sure set-up-arduino.sh
has been run (either manually or with make configure
) before continuing.
# Arduino configurtion options
# See `make configure--h' or `./set-up-arduino.sh -h'.
make configure#{,-{setup,clean,resetup,update,-h}}
# Compile every sketch under Arduino/tele_arm/
make
# Compile `arm_only'.
# In general: `make <sketch name>'.
make arm_only
# Upload `arm_only' without recompiling.
# In general: `make upload-<sketch name>'.
make upload-arm_only
# Compile and upload `arm_only'.
# In general: `make compile-upload-<sketch name>'.
make compile-upload-arm_only
- Init
- If you do not use systemd, you may have to find a replacement for
udevadm
and modifyCommunication/communicator.py
accordingly. - If you do not use systemd, the service is trivial (starts, stops and sends
C-c
to a tmux session). Rewriting should be simple. Starting the tmux session manually is also an option. The service file can be found inside theinstall
function ofminipc-tmux-daemon-helper.sh
.
- Examples for the
Dynamixel2Arduino
library are atarduino/libraries/Dynamixel2Arduino/UNZIP_ME_FOR_EXAMPLES.zip
. How to retrieve them is currently unkown and requires further study.