|
|
#!/bin/bash |
|
|
|
|
|
|
|
|
|
|
|
set -e |
|
|
|
|
|
echo "π€ Initializing OpenTrack workspace..." |
|
|
echo "======================================" |
|
|
|
|
|
|
|
|
WORKSPACE="/data/workspaces/opentrack" |
|
|
DATASETS_DIR="$WORKSPACE/datasets" |
|
|
MODELS_DIR="$WORKSPACE/models" |
|
|
VIDEOS_DIR="$WORKSPACE/videos" |
|
|
OPENTRACK_REPO="$HOME/OpenTrack" |
|
|
|
|
|
|
|
|
mkdir -p "$DATASETS_DIR" |
|
|
mkdir -p "$MODELS_DIR" |
|
|
mkdir -p "$VIDEOS_DIR" |
|
|
echo "β Workspace directories ready" |
|
|
|
|
|
|
|
|
MOCAP_DIR="$DATASETS_DIR/lafan1/UnitreeG1" |
|
|
mkdir -p "$MOCAP_DIR" |
|
|
|
|
|
if [ -z "$(ls -A "$MOCAP_DIR" 2>/dev/null)" ]; then |
|
|
echo "" |
|
|
echo "π₯ Downloading motion capture datasets..." |
|
|
echo " This may take a few minutes on first run..." |
|
|
|
|
|
|
|
|
python3 << 'EOF' |
|
|
import sys |
|
|
from pathlib import Path |
|
|
|
|
|
try: |
|
|
from huggingface_hub import snapshot_download |
|
|
|
|
|
datasets_dir = Path("$DATASETS_DIR") |
|
|
|
|
|
print(" Downloading from robfiras/loco-mujoco-datasets...") |
|
|
snapshot_path = snapshot_download( |
|
|
repo_id="robfiras/loco-mujoco-datasets", |
|
|
repo_type="dataset", |
|
|
allow_patterns="Lafan1/mocap/UnitreeG1/*.npz", |
|
|
local_dir=str(datasets_dir), |
|
|
local_dir_use_symlinks=False |
|
|
) |
|
|
|
|
|
|
|
|
mocap_dir = datasets_dir / "lafan1" / "UnitreeG1" |
|
|
npz_files = list(mocap_dir.glob("*.npz")) |
|
|
print(f" β Downloaded {len(npz_files)} motion capture files") |
|
|
|
|
|
except ImportError: |
|
|
print(" β οΈ huggingface_hub not available, skipping dataset download", file=sys.stderr) |
|
|
print(" You can download datasets manually from:", file=sys.stderr) |
|
|
print(" https://huggingface.co/datasets/robfiras/loco-mujoco-datasets", file=sys.stderr) |
|
|
except Exception as e: |
|
|
print(f" β οΈ Error downloading datasets: {e}", file=sys.stderr) |
|
|
print(" You may need to run: huggingface-cli login", file=sys.stderr) |
|
|
EOF |
|
|
|
|
|
echo "β Dataset download completed" |
|
|
else |
|
|
|
|
|
FILE_COUNT=$(find "$MOCAP_DIR" -name "*.npz" | wc -l | tr -d ' ') |
|
|
echo "β Found existing mocap datasets ($FILE_COUNT files)" |
|
|
fi |
|
|
|
|
|
|
|
|
if [ -d "$OPENTRACK_REPO" ]; then |
|
|
echo "" |
|
|
echo "π Setting up OpenTrack symlinks..." |
|
|
|
|
|
|
|
|
OPENTRACK_DATA_DIR="$OPENTRACK_REPO/data/mocap" |
|
|
mkdir -p "$(dirname "$OPENTRACK_DATA_DIR")" |
|
|
|
|
|
if [ -L "$OPENTRACK_DATA_DIR" ]; then |
|
|
rm "$OPENTRACK_DATA_DIR" |
|
|
elif [ -d "$OPENTRACK_DATA_DIR" ]; then |
|
|
rm -rf "$OPENTRACK_DATA_DIR" |
|
|
fi |
|
|
|
|
|
ln -s "$DATASETS_DIR" "$OPENTRACK_DATA_DIR" |
|
|
echo " β $OPENTRACK_DATA_DIR -> $DATASETS_DIR" |
|
|
|
|
|
|
|
|
OPENTRACK_LOGS_DIR="$OPENTRACK_REPO/logs" |
|
|
|
|
|
if [ -L "$OPENTRACK_LOGS_DIR" ]; then |
|
|
rm "$OPENTRACK_LOGS_DIR" |
|
|
elif [ -d "$OPENTRACK_LOGS_DIR" ]; then |
|
|
|
|
|
if [ "$(ls -A "$OPENTRACK_LOGS_DIR" 2>/dev/null)" ]; then |
|
|
echo " Moving existing logs to $MODELS_DIR..." |
|
|
mv "$OPENTRACK_LOGS_DIR"/* "$MODELS_DIR/" 2>/dev/null || true |
|
|
fi |
|
|
rm -rf "$OPENTRACK_LOGS_DIR" |
|
|
fi |
|
|
|
|
|
ln -s "$MODELS_DIR" "$OPENTRACK_LOGS_DIR" |
|
|
echo " β $OPENTRACK_LOGS_DIR -> $MODELS_DIR" |
|
|
else |
|
|
echo "β οΈ OpenTrack repository not found at $OPENTRACK_REPO" |
|
|
fi |
|
|
|
|
|
echo "" |
|
|
echo "======================================" |
|
|
echo "β
OpenTrack workspace initialized!" |
|
|
echo "" |
|
|
echo " Datasets: $DATASETS_DIR" |
|
|
echo " Models: $MODELS_DIR" |
|
|
echo " Videos: $VIDEOS_DIR" |
|
|
echo "" |
|
|
|