donkeycar-rl-autoresearch/agent/README.md

85 lines
2.7 KiB
Markdown

# DonkeyCar RL Batch Automation and Setup Guide
## System Requirements
- Windows 10/11 machine (with DonkeyCar Unity Simulator installed)
- WSL2 with Ubuntu (Python 3.x installed)
- DonkeyCar Unity Simulator running in Windows, Remote Control enabled
---
## 1. **WSL (Linux) Setup**
### A. Install Python, pip, and core packages
```bash
sudo apt update && sudo apt install -y python3-pip git
pip3 install --upgrade pip
pip3 install stable-baselines3 gymnasium gym-donkeycar numpy matplotlib
# If pip install gym-donkeycar fails, use:
pip3 install git+https://github.com/tawnkramer/gym-donkeycar.git
```
### B. Place scripts
Copy these into `/home/paulh/.pi/agent/`:
- `donkeycar_sb3_runner.py`
- `manual_multiepisode_batch.sh` (and make executable)
- Any grid/outer loop script (`donkeycar_outer_loop.py`, as needed)
---
## 2. **Unity DonkeyCar Simulator Setup (Windows)**
- Download/install Unity DonkeyCar sim (from DonkeyCar/tawnkramer Github or releases page)
- Open simulator, select "Donkey Generated Track" and enable Remote (SocketAPI) mode
- Ensure port 9091 is listening (default); leave sim running and visible
---
## 3. **Running Robust Batches (Best Practice)**
### Clean multi-episode approach:
**Do NOT rapidly kill/restart agents.** Use scripts that:
- Open one connection, run multiple episodes using `env.reset()` in a loop
- Cleanly call `env.close()`
- Batch script launches process, waits a couple seconds, repeats
#### Sample batch script (`manual_multiepisode_batch.sh`):
```bash
#!/bin/bash
for i in {1..20}; do
echo "===== RUN $i ===== $(date)" | tee -a manual-multiepisode-batch.log
python3 donkeycar_sb3_runner.py >> manual-multiepisode-batch.log 2>&1
echo "===== END RUN $i ===== $(date)" | tee -a manual-multiepisode-batch.log
sleep 2
done
```
Make executable:
```bash
chmod +x manual_multiepisode_batch.sh
```
Run in background:
```bash
nohup ./manual_multiepisode_batch.sh &
```
---
## 4. **Debugging/Recovery**
- If sim blanks/hangs, first check for stuck agent processes: `ps aux | grep donkeycar_sb3_runner`
- Always allow scripts to call `env.close()`
- If hang persists: restart Unity DonkeyCar Sim in Windows
---
## 5. **Automation Flow Summary**
| Step | Where | Details |
|-------------|-----------|-------------------------------------------|
| Install | WSL/Linux | pip install ... |
| Prepare | WSL/Linux | Place scripts, ensure Python dependencies |
| Sim start | Windows | Start DonkeyCar Unity Sim |
| Run batch | WSL/Linux | nohup ./manual_multiepisode_batch.sh ... |
| Monitor | Both | Car resets, batch log grows, check hangs |
---
See included Python scripts for reusable RL runner and grid search outer loop logic.