| fp ?= 1 |
| lp ?= 0 |
| name ?= edu3 |
|
|
| # args = $(filter-out $@,$(MAKECMDGOALS)) |
|
|
| # Start existing docker container |
| # usage: make start e=<CONTAINER NAME> |
| start: |
| # pactl load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1 |
| make audio-set-host |
| sudo docker start -i $(name) |
|
|
| # Run new docker container using existing image |
| # usage: make start e=<CONTAINER NAME> |
| run: |
| @# docker run --rm -it --gpus all -v "$$PWD":"/home/" -w /home --name ros nvidia/cuda:13.2.0-cudnn-devel-ubuntu24.04 |
| @# sudo docker run -it --gpus all --runtime=nvidia -v "$$PWD":"/home/" -w /home --name edurobot ros-ubuntu24 |
| @# sudo docker run -it --gpus all -v "$$PWD":"/home/" -w /home --name edurobot ros-ubuntu22 |
| @# -v $$XDG_RUNTIME_DIR/pulse/native:/tmp/runtime-dir/pulse/native:ro \ |
|
|
| sudo docker run -it \ |
| --gpus all \ |
| \ |
| --net host --privileged \ |
| --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \ |
| --device /dev/dri:/dev/dri \ |
| -v /dev:/dev \ |
| \ |
| -e DISPLAY=$$DISPLAY \ |
| -e WAYLAND_DISPLAY=$$WAYLAND_DISPLAY \ |
| -e XDG_RUNTIME_DIR=/tmp/runtime-dir \ |
| -v $$XDG_RUNTIME_DIR/$$WAYLAND_DISPLAY:/tmp/runtime-dir/$$WAYLAND_DISPLAY:ro \ |
| -v $$XDG_RUNTIME_DIR/pulse:/tmp/runtime-dir/pulse \ |
| -e PULSE_SERVER=unix:/tmp/runtime-dir/pulse/native \ |
| --device /dev/input \ |
| --device /dev/bus/usb \ |
| --device /dev/video0 --device /dev/video2 --device /dev/video4 \ |
| --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \ |
| \ |
| -v "$$PWD":"/home/" \ |
| -w /root \ |
| --name edu3 \ |
| ros-ubuntu22 |
|
|
|
|
| r: |
| sudo docker run -it \ |
| --gpus all \ |
| \ |
| -e WAYLAND_DISPLAY=$$WAYLAND_DISPLAY \ |
| -e XDG_RUNTIME_DIR=/tmp/runtime-dir \ |
| -v $$XDG_RUNTIME_DIR/$$WAYLAND_DISPLAY:/tmp/runtime-dir/$$WAYLAND_DISPLAY:ro \ |
| |
| -v $$XDG_RUNTIME_DIR/pulse/native:/tmp/runtime-dir/pulse/native:ro \ |
| --device /dev/input \ |
| --device /dev/bus/usb \ |
| --device /dev/video0 --device /dev/video2 --device /dev/video4 \ |
| --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \ |
| --device /dev/dri:/dev/dri \ |
| \ |
| -v /dev:/dev \ |
| \ |
| -v "$$PWD":"/home/" \ |
| -w /root \ |
| --name edu2 \ |
| --rm \ |
| ros-ubuntu22 |
|
|
| |
| # Execute new terminal for existing running container |
| # usage: make exec e=<CONTAINER NAME> |
| ID = $(shell id -u) |
| aa: |
| echo $(ID) |
| exec: |
| sudo docker exec -it $(name) bash |
| # sudo docker exec -e PULSE_SERVER=unix:/run/user/1005/pulse/native -it $(name) bash |
|
|
|
|
| # Remove container |
| # usage: make rm e=<CONTAINER NAME> |
| rm: |
| sudo docker rm $(name) |
|
|
| rmi: |
| sudo docker image rm $(name) |
|
|
| # Build from dockerfile |
| # usage: make build |
| build_img: |
| @# docker build -t ros -f ros_dockerfile |
| @# sudo docker build -t ros-ubuntu24 . |
| sudo docker build -t ros-ubuntu22 . |
|
|
| # View active docker processes |
| # usage: make dps |
| dps: |
| sudo docker ps -a |
|
|
| # View existing images |
| # usage: make dps |
| dils: |
| sudo docker image ls -a |
|
|
| # Inspect container IP address |
| # usage: make inspect_server env=<CONTAINER NAME> |
| inspect: |
| sudo docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(name) |
|
|
| ros: |
| bash setup_ros.sh |
|
|
|
|
|
|
| lfp: |
| lerobot-find-port |
| |
| reset: |
| python reset_env.py --port /dev/ttyACM${fp} |
|
|
| audio-set-host: |
| xhost +local:docker |
| pactl load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1 |
|
|
| audio-test: |
| arecord -f cd -d 5 test.wav && aplay test.wav && rm test.wav |
|
|
| # arecord -D hw:1,0 -f cd -d 5 test.wav && aplay test.wav && rm test.wav |
| # ffplay -f pulse -i default -showmode 2 |
| # |
|
|
| audio-reset: |
| systemctl --user restart pipewire |
| pulseaudio -k && pulseaudio --start |
| fuser -v /dev/snd |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |