forked from doosan-robotics/explainable-palletizer
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdev.sh
More file actions
executable file
·184 lines (159 loc) · 6.02 KB
/
Copy pathdev.sh
File metadata and controls
executable file
·184 lines (159 loc) · 6.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
#!/usr/bin/env bash
# Run all dev services: sim-server (8100), api (8000), UI (5173).
# Usage: ./dev.sh [--no-ui] [--no-sim] [--robot]
# --no-ui skip the Vite dev server
# --no-sim skip the sim-server (and Isaac Sim)
# --robot pass --load-robot to the sim process
set -euo pipefail
REPO="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
LOG_DIR="/tmp"
NO_UI=false
NO_SIM=false
ROBOT_FLAG=""
for arg in "$@"; do
case "$arg" in
--no-ui) NO_UI=true ;;
--no-sim) NO_SIM=true ;;
--robot) ROBOT_FLAG="--load-robot" ;;
esac
done
# ---------------------------------------------------------------------------
# Cleanup on exit
# ---------------------------------------------------------------------------
PIDS=()
SIM_PID=""
cleanup() {
echo ""
echo "[dev.sh] Shutting down..."
# SIGTERM all tracked children
for pid in "${PIDS[@]}"; do
kill "$pid" 2>/dev/null || true
done
# Isaac Sim takes time to shut down; wait up to 12s then force-kill
if [[ -n "$SIM_PID" ]]; then
local waited=0
while kill -0 "$SIM_PID" 2>/dev/null && (( waited < 12 )); do
sleep 1
(( waited++ ))
done
fi
# Kill any remaining Isaac Sim / kit_app processes by pattern
local sim_procs
sim_procs=$(pgrep -f "drp_sim.server\|kit_app\|isaacsim" 2>/dev/null || true)
if [[ -n "$sim_procs" ]]; then
echo "[dev.sh] Killing remaining Isaac Sim processes: $sim_procs"
kill -9 $sim_procs 2>/dev/null || true
fi
wait 2>/dev/null || true
echo "[dev.sh] Done."
}
trap cleanup EXIT INT TERM
# ---------------------------------------------------------------------------
# Helper: kill whatever is on a port
# ---------------------------------------------------------------------------
kill_port() {
local port="$1"
local pid
pid=$(lsof -ti tcp:"$port" 2>/dev/null || true)
if [[ -n "$pid" ]]; then
echo "[dev.sh] Killing existing process on port $port (PID $pid)"
kill "$pid" 2>/dev/null || true
sleep 0.5
fi
}
# ---------------------------------------------------------------------------
# Helper: kill sim subprocess (dr_ai_palletizer.sim_process) if running
# ---------------------------------------------------------------------------
kill_sim_process() {
local pids
pids=$(pgrep -f "drp_sim.server\|dr_ai_palletizer.sim_process\|kit_app\|isaacsim" 2>/dev/null || true)
if [[ -n "$pids" ]]; then
echo "[dev.sh] Found running sim process(es): $pids — terminating..."
# SIGTERM first, then SIGKILL if still alive after 8s
kill $pids 2>/dev/null || true
local waited=0
while kill -0 $pids 2>/dev/null && (( waited < 8 )); do
sleep 1
(( waited++ ))
done
if kill -0 $pids 2>/dev/null; then
echo "[dev.sh] Sim process did not exit cleanly — sending SIGKILL"
kill -9 $pids 2>/dev/null || true
else
echo "[dev.sh] Sim process exited."
fi
fi
}
# ---------------------------------------------------------------------------
# Kill stale processes
# ---------------------------------------------------------------------------
kill_sim_process
kill_port 8100
kill_port 8000
kill_port 5173
# ---------------------------------------------------------------------------
# Sim-server (port 8100) — Isaac Sim + drp_sim FastAPI
# ---------------------------------------------------------------------------
if [[ "$NO_SIM" == false ]]; then
SIM_LOG="$LOG_DIR/sim_server.log"
echo "[dev.sh] Starting sim-server on port 8100 -> $SIM_LOG"
_NVRTC_LIB="$REPO/.venv/lib/python3.11/site-packages/nvidia/cu13/lib"
_LD="${LD_LIBRARY_PATH:-}"
[[ ":$_LD:" != *":$_NVRTC_LIB:"* ]] && _LD="$_NVRTC_LIB${_LD:+:$_LD}"
SIM_HOST=0.0.0.0 \
SIM_PORT=8100 \
SIM_LOAD_ROBOT="${SIM_LOAD_ROBOT:-true}" \
SIM_SPAWN_BOXES="${SIM_SPAWN_BOXES:-true}" \
OMNI_KIT_ACCEPT_EULA=YES \
LD_LIBRARY_PATH="$_LD" \
uv run python -m drp_sim.server \
>"$SIM_LOG" 2>&1 &
SIM_PID=$!
PIDS+=($SIM_PID)
fi
# ---------------------------------------------------------------------------
# App-server / orchestrator (port 8000) — dr_ai_palletizer FastAPI
# ---------------------------------------------------------------------------
API_LOG="$LOG_DIR/api_server.log"
echo "[dev.sh] Starting app-server on port 8000 -> $API_LOG"
SIM_SERVER_URL="http://localhost:8100" \
INFERENCE_SERVER_URL="${INFERENCE_SERVER_URL:-http://localhost:8200/v1}" \
INFERENCE_MODEL="${INFERENCE_MODEL:-nvidia/Cosmos-Reason2-2B}" \
APP_HOST=0.0.0.0 \
APP_PORT=8000 \
uv run uvicorn dr_ai_palletizer.server:app \
--host 0.0.0.0 \
--port 8000 \
--reload \
>"$API_LOG" 2>&1 &
PIDS+=($!)
# ---------------------------------------------------------------------------
# UI (port 5173)
# ---------------------------------------------------------------------------
if [[ "$NO_UI" == false ]]; then
UI_LOG="$LOG_DIR/ui.log"
echo "[dev.sh] Starting UI on port 5173 -> $UI_LOG"
(cd "$REPO/app/ui" && npm run dev >"$UI_LOG" 2>&1) &
PIDS+=($!)
fi
# ---------------------------------------------------------------------------
# Wait for services to come up and print URLs
# ---------------------------------------------------------------------------
sleep 2
echo ""
echo "[dev.sh] Services:"
[[ "$NO_SIM" == false ]] && echo " sim-server http://localhost:8100 logs: $LOG_DIR/sim_server.log"
echo " api http://localhost:8000 logs: $LOG_DIR/api_server.log"
[[ "$NO_UI" == false ]] && echo " UI http://localhost:5173 logs: $LOG_DIR/ui.log"
echo ""
echo "[dev.sh] Press Ctrl+C to stop all."
# ---------------------------------------------------------------------------
# Tail all logs to stdout
# ---------------------------------------------------------------------------
TAIL_ARGS=()
[[ "$NO_SIM" == false ]] && TAIL_ARGS+=("$LOG_DIR/sim_server.log")
TAIL_ARGS+=("$LOG_DIR/api_server.log")
[[ "$NO_UI" == false ]] && TAIL_ARGS+=("$LOG_DIR/ui.log")
tail -F "${TAIL_ARGS[@]}" &
PIDS+=($!)
wait