File size: 3,755 Bytes
9ebdc51 |
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 |
#!/bin/bash
# OpenTrack runtime initialization script
# This script downloads datasets and sets up symlinks at container startup
set -e # Exit on error
echo "π€ Initializing OpenTrack workspace..."
echo "======================================"
# Define paths
WORKSPACE="/data/workspaces/opentrack"
DATASETS_DIR="$WORKSPACE/datasets"
MODELS_DIR="$WORKSPACE/models"
VIDEOS_DIR="$WORKSPACE/videos"
OPENTRACK_REPO="$HOME/OpenTrack"
# Create workspace directories if they don't exist
mkdir -p "$DATASETS_DIR"
mkdir -p "$MODELS_DIR"
mkdir -p "$VIDEOS_DIR"
echo "β Workspace directories ready"
# Download mocap datasets if not already present
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..."
# Use Python with huggingface_hub to download
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
)
# Count downloaded files
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
# Count existing files
FILE_COUNT=$(find "$MOCAP_DIR" -name "*.npz" | wc -l | tr -d ' ')
echo "β Found existing mocap datasets ($FILE_COUNT files)"
fi
# Set up symlinks for OpenTrack
if [ -d "$OPENTRACK_REPO" ]; then
echo ""
echo "π Setting up OpenTrack symlinks..."
# Create symlink from OpenTrack/data/mocap to datasets
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"
# Create symlink from OpenTrack/logs to models
OPENTRACK_LOGS_DIR="$OPENTRACK_REPO/logs"
if [ -L "$OPENTRACK_LOGS_DIR" ]; then
rm "$OPENTRACK_LOGS_DIR"
elif [ -d "$OPENTRACK_LOGS_DIR" ]; then
# Move existing logs to MODELS_DIR
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 ""
|