kunhsiang's picture
Backup: Jason multi_task_dit SC1 final — 離職備份 2026-06-19
856afc3 verified
Raw
History Blame Contribute Delete
3.93 kB
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/* 2>&1 | awk 'NR>1 {print $3}' | grep [0-9] | xargs kill -9 |
# print new PID
fuser -v /dev/snd/*
cal-f:
lerobot-calibrate \
--robot.type=so101_follower \
--robot.port=/dev/ttyACM1 \
--robot.id=my_awesome_follower_arm
tel:
lerobot-teleoperate \
--robot.type=so101_follower \
--robot.port=/dev/ttyACM$(fp) \
--robot.id=my_awesome_follower_arm \
--teleop.type=so101_leader \
--teleop.port=/dev/ttyACM$(lp) \
--teleop.id=my_awesome_leader_arm