Docker Docs

This commit is contained in:
2026-01-09 20:55:36 +00:00
parent 7a54455341
commit f53db185db
2 changed files with 127 additions and 0 deletions

View File

@@ -124,6 +124,7 @@ sim_vehicle.py -v ArduCopter -f gazebo-iris --model JSON --console --wipe-eeprom
## Documentation ## Documentation
- [Installation Guide](docs/installation.md) - [Installation Guide](docs/installation.md)
- [Docker Guide](docs/docker.md)
- [ArduPilot Guide](docs/ardupilot.md) - [ArduPilot Guide](docs/ardupilot.md)
- [Drone Controller Guide](docs/drone_guide.md) - [Drone Controller Guide](docs/drone_guide.md)
- [Architecture](docs/architecture.md) - [Architecture](docs/architecture.md)

126
docs/docker.md Normal file
View File

@@ -0,0 +1,126 @@
# Docker Setup for RDC Simulation
This guide explains how to run the RDC Simulation environment inside a Docker container with NVIDIA GPU support and X11 display forwarding. This approach isolates the simulation environment from your host system while providing full hardware acceleration.
## Prerequisites
1. **Docker Engine**: Install Docker for your OS.
2. **NVIDIA GPU & Drivers**: Ensure you have an NVIDIA GPU and proprietary drivers installed.
3. **NVIDIA Container Toolkit**: Required for GPU pass-through to Docker.
```bash
# Install NVIDIA Container Toolkit
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://nvidia.github.io/libnvidia-container/stable/deb/$(. /etc/os-release;echo $ID$VERSION_ID) /" | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt update && sudo apt install -y nvidia-container-toolkit
sudo systemctl restart docker
```
## Quick Start
### 1. Build the Image
```bash
cd ~/RDC_Simulation
docker compose build
```
*This may take 15-20 minutes mostly due to compiling Gazebo plugins.*
### 2. Allow X11 Display Access
To allow the container to display the Gazebo GUI on your host screen:
```bash
xhost +local:docker
```
### 3. Run the Container
```bash
docker compose run --rm simulation
```
This drops you into a bash shell inside the container as the user `pilot`.
---
## Running the Simulation
Once inside the container, the environment is pre-configured.
### 1. Start the Environment
You can use the helper script to verify everything is ready:
```bash
./docker-entrypoint.sh
```
### 2. Launch Components (Multi-Terminal)
Since `docker compose run` gives you a single terminal, you can verify basic functionality, but for the full workflow you might want to run the combined script:
```bash
# Run everything (Gazebo + SITL + Controller)
./scripts/run_ardupilot_controller.sh
```
**Or** manually launch components in background/separate terminals:
To open a second terminal into the *running* container:
1. Find the container name or ID: `docker ps`
2. Exec into it: `docker exec -it <container_name> bash`
Then run your components:
* **Terminal 1:** Gazebo
```bash
./scripts/run_ardupilot_sim.sh runway
```
* **Terminal 2:** ArduPilot SITL
```bash
sim_vehicle.py -v ArduCopter -f gazebo-iris --model JSON --console
```
* **Terminal 3:** Controller
```bash
python scripts/run_ardupilot.py --pattern square
```
---
## Video Recording
The Docker image includes `ffmpeg` and tools to record the simulation.
### Record Flight
Run a flight pattern and save the video automatically:
```bash
python scripts/record_flight.py --pattern square --quality high --output my_flight_video
```
Videos are saved to the `recordings/` directory which is mounted inside the container (if you used a volume mount) or can be copied out.
### Record Manually
```bash
./scripts/record_simulation.sh --duration 30
```
---
## Headless Mode (CI/Server)
If you are running on a remote server without a display attached, use the headless service. Note that standard Gazebo GUI will not show, but you can still run simulations and record videos (rendering offscreen).
```bash
docker compose run --rm simulation-headless
```
## Troubleshooting
**"All CUDA-capable devices are busy or unavailable"**
Check your NVIDIA drivers on the host. verifying with `nvidia-smi`.
**"Example: Could not connect to display :0"**
Make sure you ran `xhost +local:docker` on the host machine.
If using SSH, ensure X11 forwarding is enabled (`ssh -X`).
**Persisting Data**
The `docker-compose.yml` mounts the project directory. Changes to python scripts *inside* the container are reflected on your host machine.