diff --git a/.github/workflows/run-simulators.yml b/.github/workflows/run-simulators.yml index 89e0819fd..4d201611c 100644 --- a/.github/workflows/run-simulators.yml +++ b/.github/workflows/run-simulators.yml @@ -144,10 +144,19 @@ jobs: ssh -o StrictHostKeyChecking=no -o ServerAliveInterval=60 -o ServerAliveCountMax=3 -i private_key ${USER_NAME}@${HOSTNAME} ' cd /home/ubuntu/actions/Scenic && source venv/bin/activate && - carla_versions=($(find /software -maxdepth 1 -type d -name 'carla*')) && + # run carla0.9.15 first + carla_versions=($(find /software -maxdepth 1 -type d -name 'carla*' | sort -V)) && for version in "${carla_versions[@]}"; do echo "============================= CARLA $version =============================" export CARLA_ROOT="$version" + + # install local wheel for carla0.10.0 + if [[ "$version" == "/software/carla0.10.0" ]]; then + WHL=$(ls "$version"/PythonAPI/carla/dist/carla-0.10.0-cp310-cp310-linux_x86_64.whl) + echo "Installing local wheel: $WHL" + python3 -m pip install --force-reinstall "$WHL" + fi + pytest tests/simulators/carla done ' diff --git a/assets/maps/CARLA/Town10HD_Opt.xodr b/assets/maps/CARLA/Town10HD_Opt.xodr new file mode 100644 index 000000000..1c776433d --- /dev/null +++ b/assets/maps/CARLA/Town10HD_Opt.xodr @@ -0,0 +1,17962 @@ + + +
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+
+
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + +
+
+
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + +
+
+
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + +
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + +
+
+
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + +
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + +
+
+
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + +
+
+
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +
+
+
+ + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+
+
+ + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + +
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + +
+
+
+ + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + +
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + +
+
+
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + +
+
+
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+
+
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/simulators.rst b/docs/simulators.rst index 2b1e22df0..14bf5e67d 100644 --- a/docs/simulators.rst +++ b/docs/simulators.rst @@ -57,14 +57,23 @@ Our interface to the `CARLA `_ simulator enables using Sceni The interface supports dynamic scenarios written using the CARLA world model (:obj:`scenic.simulators.carla.model`) as well as scenarios using the cross-platform :ref:`driving_domain`. To use the interface, please follow these instructions: -1. Install the latest version of CARLA (we've tested versions 0.9.9 through 0.9.14) from the `CARLA Release Page `_. - Note that CARLA currently only supports Linux and Windows. +1. Install the latest version of CARLA (we've tested versions 0.9.9 through 0.10.0) from the `CARLA Release Page `_. + Note that CARLA currently only supports Linux and Windows. If you plan to use **0.10.0**, double-check its higher system requirements in the `CARLA UE5 quick-start guide `_. 2. Install Scenic in your Python virtual environment as instructed in :ref:`quickstart`. 3. Within the same virtual environment, install CARLA's Python API. How to do this depends on the CARLA version and whether you built it from source: .. tabs:: + .. tab:: 0.10.0 + + If you're using **CARLA 0.10.0** (not yet on PyPI), install the client wheel that ships with the simulator: + + .. code-block:: text + + cd CARLA_ROOT/PythonAPI/dist/ + python3 -m pip install carla-*.*.*-cp3*-linux_x86_64.whl + .. tab:: 0.9.12+ Run the following command, replacing ``X.Y.Z`` with the version of CARLA you installed: @@ -99,9 +108,16 @@ To use the interface, please follow these instructions: You can check that the ``carla`` package was correctly installed by running :command:`python -c 'import carla'`: if it prints ``No module named 'carla'``, the installation didn't work. We suggest upgrading to a newer version of CARLA so that you can use :command:`pip` to install the Python API. -To start CARLA, run the command :command:`./CarlaUE4.sh` in your CARLA folder. +To start CARLA, run the command :command:`./CarlaUE4.sh` in your CARLA folder (for **CARLA 0.10.0**, use :command:`./CarlaUnreal.sh` instead). Once CARLA is running, you can run dynamic Scenic scenarios following the instructions in :ref:`the dynamics tutorial `. +.. note:: CARLA 0.10.0 compatibility + + - All ``examples/carla`` scenarios now support both CARLA 0.9.x and 0.10.0. + - Only the **Town10HD_Opt** map is available in 0.10.0. + - The 0.10.0 blueprint library is different (for example, bicycle blueprints are currently unavailable). + - There are some differences in physics in 0.10.0 (for example, pedestrians movement is slower). + Grand Theft Auto V ------------------ diff --git a/examples/carla/Carla_Challenge/carlaChallenge1.scenic b/examples/carla/Carla_Challenge/carlaChallenge1.scenic index aba7b40ef..af3830a0b 100644 --- a/examples/carla/Carla_Challenge/carlaChallenge1.scenic +++ b/examples/carla/Carla_Challenge/carlaChallenge1.scenic @@ -9,12 +9,12 @@ To run this file using the Carla simulator: """ ## SET MAP AND MODEL (i.e. definitions of all referenceable vehicle types, road library, etc) -param map = localPath('../../../assets/maps/CARLA/Town01.xodr') -param carla_map = 'Town01' +param map = localPath('../../../assets/maps/CARLA/Town10HD_Opt.xodr') +param carla_map = 'Town10HD_Opt' model scenic.simulators.carla.model ## CONSTANTS -EGO_MODEL = "vehicle.lincoln.mkz_2017" +EGO_MODEL = "vehicle.nissan.patrol" EGO_SPEED = 10 ## DEFINING BEHAVIORS diff --git a/examples/carla/Carla_Challenge/carlaChallenge10.scenic b/examples/carla/Carla_Challenge/carlaChallenge10.scenic index 30e4b3b33..42891e8f1 100644 --- a/examples/carla/Carla_Challenge/carlaChallenge10.scenic +++ b/examples/carla/Carla_Challenge/carlaChallenge10.scenic @@ -9,12 +9,12 @@ To run this file using the Carla simulator: """ ## SET MAP AND MODEL (i.e. definitions of all referenceable vehicle types, road library, etc) -param map = localPath('../../../assets/maps/CARLA/Town05.xodr') -param carla_map = 'Town05' +param map = localPath('../../../assets/maps/CARLA/Town10HD_Opt.xodr') +param carla_map = 'Town10HD_Opt' model scenic.simulators.carla.model ## CONSTANTS -EGO_MODEL = "vehicle.lincoln.mkz_2017" +EGO_MODEL = "vehicle.nissan.patrol" EGO_SPEED = 10 SAFETY_DISTANCE = 20 BRAKE_INTENSITY = 1.0 @@ -36,6 +36,9 @@ behavior EgoBehavior(speed, trajectory): fourWayIntersection = filter(lambda i: i.is4Way and not i.isSignalized, network.intersections) +if not fourWayIntersection: + raise RuntimeError("This map doesn't have any four-way unsignalized intersections.") + # make sure to put '*' to uniformly randomly select from all elements of the list intersec = Uniform(*fourWayIntersection) ego_start_lane = Uniform(*intersec.incomingLanes) diff --git a/examples/carla/Carla_Challenge/carlaChallenge2.scenic b/examples/carla/Carla_Challenge/carlaChallenge2.scenic index 4c423f2b1..903291853 100644 --- a/examples/carla/Carla_Challenge/carlaChallenge2.scenic +++ b/examples/carla/Carla_Challenge/carlaChallenge2.scenic @@ -9,12 +9,12 @@ To run this file using the Carla simulator: """ ## SET MAP AND MODEL (i.e. definitions of all referenceable vehicle types, road library, etc) -param map = localPath('../../../assets/maps/CARLA/Town01.xodr') -param carla_map = 'Town01' +param map = localPath('../../../assets/maps/CARLA/Town10HD_Opt.xodr') +param carla_map = 'Town10HD_Opt' model scenic.simulators.carla.model ## CONSTANTS -EGO_MODEL = "vehicle.lincoln.mkz_2017" +EGO_MODEL = "vehicle.nissan.patrol" EGO_SPEED = 10 EGO_BRAKING_THRESHOLD = 12 @@ -34,7 +34,7 @@ behavior EgoBehavior(speed=10): # LEAD CAR BEHAVIOR: Follow lane, and brake after passing a threshold distance to obstacle behavior LeadingCarBehavior(speed=10): - try: + try: do FollowLaneBehavior(speed) interrupt when withinDistanceToAnyObjs(self, LEADCAR_BRAKING_THRESHOLD): @@ -56,5 +56,5 @@ ego = new Car following roadDirection from leadCar for Range(-15, -10), with blueprint EGO_MODEL, with behavior EgoBehavior(EGO_SPEED) -require (distance to intersection) > 80 +require (distance to intersection) > 50 terminate when ego.speed < 0.1 and (distance to obstacle) < 30 diff --git a/examples/carla/Carla_Challenge/carlaChallenge3_dynamic.scenic b/examples/carla/Carla_Challenge/carlaChallenge3_dynamic.scenic index 9fb37b60c..032a20b90 100644 --- a/examples/carla/Carla_Challenge/carlaChallenge3_dynamic.scenic +++ b/examples/carla/Carla_Challenge/carlaChallenge3_dynamic.scenic @@ -9,12 +9,12 @@ To run this file using the Carla simulator: """ # SET MAP AND MODEL (i.e. definitions of all referenceable vehicle types, road library, etc) -param map = localPath('../../../assets/maps/CARLA/Town05.xodr') -param carla_map = 'Town05' +param map = localPath('../../../assets/maps/CARLA/Town10HD_Opt.xodr') +param carla_map = 'Town10HD_Opt' model scenic.simulators.carla.model # CONSTANTS -EGO_MODEL = "vehicle.lincoln.mkz_2017" +EGO_MODEL = "vehicle.nissan.patrol" EGO_SPEED = 10 SAFETY_DISTANCE = 10 BRAKE_INTENSITY = 1.0 @@ -36,8 +36,15 @@ behavior PedestrianBehavior(min_speed=1, threshold=10): # Please refer to scenic/domains/driving/roads.py how to access detailed road infrastructure # 'network' is the 'class Network' object in roads.py -# make sure to put '*' to uniformly randomly select from all elements of the list, 'network.lanes' -lane = Uniform(*network.lanes) +# collect all the curb-side lanes +curbLanes = [ + lg.lanes[0] + for lg in network.laneGroups + if lg is lg.road.forwardLanes +] + +# make sure to put '*' to uniformly randomly select from all elements of the list +lane = Uniform(*curbLanes) spot = new OrientedPoint on lane.centerline vending_spot = new OrientedPoint following roadDirection from spot for -3 @@ -55,6 +62,6 @@ ego = new Car following roadDirection from spot for Range(-30, -20), with blueprint EGO_MODEL, with behavior EgoBehavior(EGO_SPEED) -require (distance to intersection) > 75 +require (distance to intersection) > 40 require (ego.laneSection._slowerLane is None) -terminate when (distance to spot) > 50 +terminate when (distance to spot) > 50 \ No newline at end of file diff --git a/examples/carla/Carla_Challenge/carlaChallenge3_static.scenic b/examples/carla/Carla_Challenge/carlaChallenge3_static.scenic index d01f5be21..40de4e7ab 100644 --- a/examples/carla/Carla_Challenge/carlaChallenge3_static.scenic +++ b/examples/carla/Carla_Challenge/carlaChallenge3_static.scenic @@ -9,12 +9,12 @@ To run this file using the Carla simulator: """ ## SET MAP AND MODEL (i.e. definitions of all referenceable vehicle types, road library, etc) -param map = localPath('../../../assets/maps/CARLA/Town01.xodr') -param carla_map = 'Town01' +param map = localPath('../../../assets/maps/CARLA/Town10HD_Opt.xodr') +param carla_map = 'Town10HD_Opt' model scenic.simulators.carla.model ## CONSTANTS -EGO_MODEL = "vehicle.lincoln.mkz_2017" +EGO_MODEL = "vehicle.nissan.patrol" EGO_SPEED = 10 EGO_BRAKING_THRESHOLD = 12 diff --git a/examples/carla/Carla_Challenge/carlaChallenge4.scenic b/examples/carla/Carla_Challenge/carlaChallenge4.scenic index 4fe1cf019..aa50666b9 100644 --- a/examples/carla/Carla_Challenge/carlaChallenge4.scenic +++ b/examples/carla/Carla_Challenge/carlaChallenge4.scenic @@ -9,12 +9,12 @@ To run this file using the Carla simulator: """ ## SET MAP AND MODEL (i.e. definitions of all referenceable vehicle types, road library, etc) -param map = localPath('../../../assets/maps/CARLA/Town01.xodr') -param carla_map = 'Town01' +param map = localPath('../../../assets/maps/CARLA/Town10HD_Opt.xodr') +param carla_map = 'Town10HD_Opt' model scenic.simulators.carla.model ## CONSTANTS -EGO_MODEL = "vehicle.lincoln.mkz_2017" +EGO_MODEL = "vehicle.nissan.patrol" BICYCLE_MIN_SPEED = 1.5 THRESHOLD = 18 BRAKE_ACTION = 1.0 diff --git a/examples/carla/Carla_Challenge/carlaChallenge5.scenic b/examples/carla/Carla_Challenge/carlaChallenge5.scenic index b97c64655..1effa5a51 100644 --- a/examples/carla/Carla_Challenge/carlaChallenge5.scenic +++ b/examples/carla/Carla_Challenge/carlaChallenge5.scenic @@ -5,8 +5,8 @@ Ego-vehicle performs a lane changing to evade a leading vehicle, which is moving To run this file using the Carla simulator: scenic examples/carla/Carla_Challenge/carlaChallenge5.scenic --2d --model scenic.simulators.carla.model --simulate """ -param map = localPath('../../../assets/maps/CARLA/Town05.xodr') -param carla_map = 'Town05' +param map = localPath('../../../assets/maps/CARLA/Town10HD_Opt.xodr') +param carla_map = 'Town10HD_Opt' model scenic.simulators.carla.model #CONSTANTS @@ -19,7 +19,7 @@ DIST_THRESHOLD = 15 behavior EgoBehavior(leftpath, origpath=[]): laneChangeCompleted = False - try: + try: do FollowLaneBehavior(EGO_SPEED) interrupt when withinDistanceToAnyObjs(self, DIST_THRESHOLD) and not laneChangeCompleted: @@ -53,4 +53,4 @@ cyclist = new Car following roadDirection from ego for EGO_TO_BICYCLE, with behavior SlowCarBehavior() require (distance from ego to intersection) > 10 -require (distance from cyclist to intersection) > 10 \ No newline at end of file +require (distance from cyclist to intersection) > 10 diff --git a/examples/carla/Carla_Challenge/carlaChallenge6.scenic b/examples/carla/Carla_Challenge/carlaChallenge6.scenic index f51b68262..a7885902a 100644 --- a/examples/carla/Carla_Challenge/carlaChallenge6.scenic +++ b/examples/carla/Carla_Challenge/carlaChallenge6.scenic @@ -9,8 +9,8 @@ To run this file using the Carla simulator: # N.B. Town07 is not included with CARLA by default; see installation instructions at # https://carla.readthedocs.io/en/latest/start_quickstart/#import-additional-assets -param map = localPath('../../../assets/maps/CARLA/Town07.xodr') -param carla_map = 'Town07' +param map = localPath('../../../assets/maps/CARLA/Town10HD_Opt.xodr') +param carla_map = 'Town10HD_Opt' model scenic.simulators.carla.model @@ -81,11 +81,11 @@ oncomingCar = new Car on leftLaneSec.centerline, ego = new Car at spawnPt, with behavior EgoBehavior(leftLaneSec) - + blockingCar = new Car following roadDirection from ego for BLOCKING_CAR_DIST, with viewAngle 90 deg #Make sure the oncoming Car is at a visible section of the lane require blockingCar can see oncomingCar require (distance from blockingCar to oncomingCar) < DIST_BTW_BLOCKING_ONCOMING_CARS -require (distance from blockingCar to intersection) > DIST_TO_INTERSECTION \ No newline at end of file +require (distance from blockingCar to intersection) > DIST_TO_INTERSECTION diff --git a/examples/carla/Carla_Challenge/carlaChallenge7.scenic b/examples/carla/Carla_Challenge/carlaChallenge7.scenic index 92027273b..139000da4 100644 --- a/examples/carla/Carla_Challenge/carlaChallenge7.scenic +++ b/examples/carla/Carla_Challenge/carlaChallenge7.scenic @@ -1,14 +1,14 @@ """ Scenario Description Based on 2019 Carla Challenge Traffic Scenario 07. -Ego-vehicle is going straight at an intersection but a crossing vehicle +Ego-vehicle is going straight at an intersection but a crossing vehicle runs a red light, forcing the ego-vehicle to perform a collision avoidance maneuver. -Note: The traffic light control is not implemented yet, but it will soon be. +Note: The traffic light control is not implemented yet, but it will soon be. To run this file using the Carla simulator: scenic examples/carla/Carla_Challenge/carlaChallenge7.scenic --2d --model scenic.simulators.carla.model --simulate """ -param map = localPath('../../../assets/maps/CARLA/Town05.xodr') -param carla_map = 'Town05' +param map = localPath('../../../assets/maps/CARLA/Town10HD_Opt.xodr') +param carla_map = 'Town10HD_Opt' model scenic.simulators.carla.model DELAY_TIME_1 = 1 # the delay time for ego @@ -26,7 +26,7 @@ behavior CrossingCarBehavior(trajectory): do FollowTrajectoryBehavior(trajectory = trajectory) behavior EgoBehavior(trajectory): - + try: do FollowTrajectoryBehavior(trajectory=trajectory) interrupt when withinDistanceToAnyObjs(self, SAFETY_DISTANCE): @@ -57,4 +57,4 @@ crossing_car = new Car following roadDirection from csm_spwPt for DISTANCE_TO_IN with behavior CrossingCarBehavior(crossing_car_trajectory) -"""Note: Traffic light is currently not controlled but this functionality will be added very soon """ \ No newline at end of file +"""Note: Traffic light is currently not controlled but this functionality will be added very soon """ diff --git a/examples/carla/Carla_Challenge/carlaChallenge8.scenic b/examples/carla/Carla_Challenge/carlaChallenge8.scenic index e1f8125df..e084b58f0 100644 --- a/examples/carla/Carla_Challenge/carlaChallenge8.scenic +++ b/examples/carla/Carla_Challenge/carlaChallenge8.scenic @@ -9,12 +9,12 @@ To run this file using the Carla simulator: """ ## SET MAP AND MODEL (i.e. definitions of all referenceable vehicle types, road library, etc) -param map = localPath('../../../assets/maps/CARLA/Town05.xodr') -param carla_map = 'Town05' +param map = localPath('../../../assets/maps/CARLA/Town10HD_Opt.xodr') +param carla_map = 'Town10HD_Opt' model scenic.simulators.carla.model ## CONSTANTS -EGO_MODEL = "vehicle.lincoln.mkz_2017" +EGO_MODEL = "vehicle.nissan.patrol" EGO_SPEED = 10 SAFETY_DISTANCE = 20 BRAKE_INTENSITY = 1.0 @@ -78,7 +78,6 @@ ego = new Car at ego_spawn_pt, adversary = new Car at adv_spawn_pt, with behavior AdversaryBehavior(adv_trajectory) -require (ego_start_section.laneToLeft == adv_end_section) # make sure the ego and adversary are spawned in opposite lanes -require 25 <= (distance to intersec) <= 30 +require 10 <= (distance to intersec) <= 30 require 15 <= (distance from adversary to intersec) <= 20 terminate when (distance to ego_spawn_pt) > 70 diff --git a/examples/carla/Carla_Challenge/carlaChallenge9.scenic b/examples/carla/Carla_Challenge/carlaChallenge9.scenic index 133b4e07c..209c267d7 100644 --- a/examples/carla/Carla_Challenge/carlaChallenge9.scenic +++ b/examples/carla/Carla_Challenge/carlaChallenge9.scenic @@ -5,8 +5,8 @@ Ego-vehicle is performing a right turn at an intersection, yielding to crossing To run this file using the Carla simulator: scenic examples/carla/Carla_Challenge/carlaChallenge9.scenic --2d --model scenic.simulators.carla.model --simulate """ -param map = localPath('../../../assets/maps/CARLA/Town05.xodr') -param carla_map = 'Town05' +param map = localPath('../../../assets/maps/CARLA/Town10HD_Opt.xodr') +param carla_map = 'Town10HD_Opt' model scenic.simulators.carla.model DELAY_TIME_1 = 1 # the delay time for ego diff --git a/examples/carla/NHTSA_Scenarios/bypassing/bypassing_01.scenic b/examples/carla/NHTSA_Scenarios/bypassing/bypassing_01.scenic index b041174bf..12119e72f 100644 --- a/examples/carla/NHTSA_Scenarios/bypassing/bypassing_01.scenic +++ b/examples/carla/NHTSA_Scenarios/bypassing/bypassing_01.scenic @@ -1,7 +1,7 @@ """ TITLE: Bypassing 01 AUTHOR: Francis Indaheng, findaheng@berkeley.edu -DESCRIPTION: Ego vehicle performs a lane change to bypass a slow +DESCRIPTION: Ego vehicle performs a lane change to bypass a slow adversary vehicle before returning to its original lane. SOURCE: NHSTA, #16 @@ -13,22 +13,22 @@ To run this file using the Carla simulator: # MAP AND MODEL # ################################# -param map = localPath('../../../../assets/maps/CARLA/Town03.xodr') -param carla_map = 'Town03' +param map = localPath('../../../../assets/maps/CARLA/Town10HD_Opt.xodr') +param carla_map = 'Town10HD_Opt' model scenic.simulators.carla.model ################################# # CONSTANTS # ################################# -MODEL = 'vehicle.lincoln.mkz_2017' +MODEL = 'vehicle.nissan.patrol' param EGO_SPEED = VerifaiRange(7, 10) param ADV_DIST = VerifaiRange(10, 25) param ADV_SPEED = VerifaiRange(2, 4) -BYPASS_DIST = [15, 10] +BYPASS_DIST = [20, 15] INIT_DIST = 50 TERM_TIME = 5 @@ -53,7 +53,7 @@ behavior EgoBehavior(): laneSectionToSwitch=slowerLaneSec, target_speed=globalParameters.EGO_SPEED) do FollowLaneBehavior(target_speed=globalParameters.EGO_SPEED) for TERM_TIME seconds - terminate + terminate ################################# # SPATIAL RELATIONS # diff --git a/examples/carla/NHTSA_Scenarios/bypassing/bypassing_02.scenic b/examples/carla/NHTSA_Scenarios/bypassing/bypassing_02.scenic index b95269650..8f4cb6da0 100644 --- a/examples/carla/NHTSA_Scenarios/bypassing/bypassing_02.scenic +++ b/examples/carla/NHTSA_Scenarios/bypassing/bypassing_02.scenic @@ -1,7 +1,7 @@ """ TITLE: Bypassing 02 AUTHOR: Francis Indaheng, findaheng@berkeley.edu -DESCRIPTION: Adversary vehicle performs a lane change to bypass the +DESCRIPTION: Adversary vehicle performs a lane change to bypass the slow ego vehicle before returning to its original lane. SOURCE: NHSTA, #16 @@ -13,22 +13,22 @@ To run this file using the Carla simulator: # MAP AND MODEL # ################################# -param map = localPath('../../../../assets/maps/CARLA/Town03.xodr') -param carla_map = 'Town03' +param map = localPath('../../../../assets/maps/CARLA/Town10HD_Opt.xodr') +param carla_map = 'Town10HD_Opt' model scenic.simulators.carla.model ################################# # CONSTANTS # ################################# -MODEL = 'vehicle.lincoln.mkz_2017' +MODEL = 'vehicle.nissan.patrol' param EGO_SPEED = VerifaiRange(2, 4) -param ADV_DIST = VerifaiRange(-25, -10) -param ADV_SPEED = VerifaiRange(7, 10) +param ADV_DIST = VerifaiRange(-35, -25) +param ADV_SPEED = VerifaiRange(6, 8) -BYPASS_DIST = [15, 10] +BYPASS_DIST = [25, 10] INIT_DIST = 50 TERM_TIME = 5 @@ -53,7 +53,7 @@ behavior AdversaryBehavior(): laneSectionToSwitch=slowerLaneSec, target_speed=globalParameters.ADV_SPEED) do FollowLaneBehavior(target_speed=globalParameters.ADV_SPEED) for TERM_TIME seconds - terminate + terminate ################################# # SPATIAL RELATIONS # diff --git a/examples/carla/NHTSA_Scenarios/bypassing/bypassing_03.scenic b/examples/carla/NHTSA_Scenarios/bypassing/bypassing_03.scenic index 6ec12c61e..9d89d2b31 100644 --- a/examples/carla/NHTSA_Scenarios/bypassing/bypassing_03.scenic +++ b/examples/carla/NHTSA_Scenarios/bypassing/bypassing_03.scenic @@ -1,9 +1,9 @@ """ TITLE: Bypassing 03 AUTHOR: Francis Indaheng, findaheng@berkeley.edu -DESCRIPTION: Ego vehicle performs a lane change to bypass a slow -adversary vehicle but cannot return to its original lane because -the adversary accelerates. Ego vehicle must then slow down to avoid +DESCRIPTION: Ego vehicle performs a lane change to bypass a slow +adversary vehicle but cannot return to its original lane because +the adversary accelerates. Ego vehicle must then slow down to avoid collision with leading vehicle in new lane. SOURCE: NHSTA, #16 @@ -15,15 +15,15 @@ To run this file using the Carla simulator: # MAP AND MODEL # ################################# -param map = localPath('../../../../assets/maps/CARLA/Town03.xodr') -param carla_map = 'Town03' +param map = localPath('../../../../assets/maps/CARLA/Town10HD_Opt.xodr') +param carla_map = 'Town10HD_Opt' model scenic.simulators.carla.model ################################# # CONSTANTS # ################################# -MODEL = 'vehicle.lincoln.mkz_2017' +MODEL = 'vehicle.nissan.patrol' param EGO_SPEED = VerifaiRange(7, 10) param EGO_BRAKE = VerifaiRange(0.7, 1.0) @@ -67,7 +67,7 @@ behavior EgoBehavior(): do DecelerateBehavior(globalParameters.EGO_BRAKE) interrupt when (distance to lead) > SAFE_DIST: do FollowLaneBehavior(target_speed=LEAD_SPEED) for TERM_TIME seconds - terminate + terminate behavior AdversaryBehavior(): do FollowLaneBehavior(target_speed=globalParameters.ADV_INIT_SPEED) \ diff --git a/examples/carla/NHTSA_Scenarios/bypassing/bypassing_04.scenic b/examples/carla/NHTSA_Scenarios/bypassing/bypassing_04.scenic index f4c42378c..65db750b2 100644 --- a/examples/carla/NHTSA_Scenarios/bypassing/bypassing_04.scenic +++ b/examples/carla/NHTSA_Scenarios/bypassing/bypassing_04.scenic @@ -1,7 +1,7 @@ """ TITLE: Bypassing 04 AUTHOR: Francis Indaheng, findaheng@berkeley.edu -DESCRIPTION: Ego vehicle performs multiple lane changes to bypass +DESCRIPTION: Ego vehicle performs multiple lane changes to bypass two slow adversary vehicles. SOURCE: NHSTA, #16 @@ -13,25 +13,25 @@ To run this file using the Carla simulator: # MAP AND MODEL # ################################# -param map = localPath('../../../../assets/maps/CARLA/Town03.xodr') -param carla_map = 'Town03' +param map = localPath('../../../../assets/maps/CARLA/Town10HD_Opt.xodr') +param carla_map = 'Town10HD_Opt' model scenic.simulators.carla.model ################################# # CONSTANTS # ################################# -MODEL = 'vehicle.lincoln.mkz_2017' +MODEL = 'vehicle.nissan.patrol' param EGO_SPEED = VerifaiRange(6, 8) -param ADV1_DIST = VerifaiRange(20, 25) -param ADV2_DIST = globalParameters.ADV1_DIST + VerifaiRange(15, 20) +param ADV1_DIST = VerifaiRange(25, 30) +param ADV2_DIST = globalParameters.ADV1_DIST + VerifaiRange(25, 30) param ADV_SPEED = VerifaiRange(2, 4) BYPASS_DIST = 15 INIT_DIST = 50 -TERM_DIST = globalParameters.ADV2_DIST + 15 +TERM_DIST = globalParameters.ADV2_DIST + 25 ################################# # AGENT BEHAVIORS # diff --git a/examples/carla/NHTSA_Scenarios/bypassing/bypassing_05.scenic b/examples/carla/NHTSA_Scenarios/bypassing/bypassing_05.scenic index 3001bcc92..3a007a39a 100644 --- a/examples/carla/NHTSA_Scenarios/bypassing/bypassing_05.scenic +++ b/examples/carla/NHTSA_Scenarios/bypassing/bypassing_05.scenic @@ -1,7 +1,7 @@ """ TITLE: Bypassing 05 AUTHOR: Francis Indaheng, findaheng@berkeley.edu -DESCRIPTION: Ego vehicle performs multiple lane changes to bypass three +DESCRIPTION: Ego vehicle performs multiple lane changes to bypass three slow adversary vehicles. SOURCE: NHSTA, #16 @@ -13,15 +13,15 @@ To run this file using the Carla simulator: # MAP AND MODEL # ################################# -param map = localPath('../../../../assets/maps/CARLA/Town03.xodr') -param carla_map = 'Town03' +param map = localPath('../../../../assets/maps/CARLA/Town10HD_Opt.xodr') +param carla_map = 'Town10HD_Opt' model scenic.simulators.carla.model ################################# # CONSTANTS # ################################# -MODEL = 'vehicle.lincoln.mkz_2017' +MODEL = 'vehicle.nissan.patrol' param EGO_SPEED = VerifaiRange(7, 10) param EGO_BRAKE = VerifaiRange(0.5, 1.0) diff --git a/examples/carla/NHTSA_Scenarios/intersection/intersection_01.scenic b/examples/carla/NHTSA_Scenarios/intersection/intersection_01.scenic index d17fdb7c3..7edf0a0a5 100644 --- a/examples/carla/NHTSA_Scenarios/intersection/intersection_01.scenic +++ b/examples/carla/NHTSA_Scenarios/intersection/intersection_01.scenic @@ -1,8 +1,8 @@ """ TITLE: Intersection 01 AUTHOR: Francis Indaheng, findaheng@berkeley.edu -DESCRIPTION: Ego vehicle goes straight at 4-way intersection and must -suddenly stop to avoid collision when adversary vehicle from opposite +DESCRIPTION: Ego vehicle goes straight at 4-way intersection and must +suddenly stop to avoid collision when adversary vehicle from opposite lane makes a left turn. SOURCE: NHSTA, #30 @@ -14,26 +14,26 @@ To run this file using the Carla simulator: # MAP AND MODEL # ################################# -param map = localPath('../../../../assets/maps/CARLA/Town05.xodr') -param carla_map = 'Town05' +param map = localPath('../../../../assets/maps/CARLA/Town10HD_Opt.xodr') +param carla_map = 'Town10HD_Opt' model scenic.simulators.carla.model ################################# # CONSTANTS # ################################# -MODEL = 'vehicle.lincoln.mkz_2017' +MODEL = 'vehicle.nissan.patrol' -EGO_INIT_DIST = [20, 25] -param EGO_SPEED = VerifaiRange(7, 10) +EGO_INIT_DIST = [10, 15] +param EGO_SPEED = VerifaiRange(4, 6) param EGO_BRAKE = VerifaiRange(0.5, 1.0) -ADV_INIT_DIST = [15, 20] -param ADV_SPEED = VerifaiRange(7, 10) +ADV_INIT_DIST = [10, 15] +param ADV_SPEED = VerifaiRange(8, 10) param SAFETY_DIST = VerifaiRange(10, 20) CRASH_DIST = 5 -TERM_DIST = 70 +TERM_DIST = 35 ################################# # AGENT BEHAVIORS # diff --git a/examples/carla/NHTSA_Scenarios/intersection/intersection_02.scenic b/examples/carla/NHTSA_Scenarios/intersection/intersection_02.scenic index 697e302b8..c43dd84df 100644 --- a/examples/carla/NHTSA_Scenarios/intersection/intersection_02.scenic +++ b/examples/carla/NHTSA_Scenarios/intersection/intersection_02.scenic @@ -1,8 +1,8 @@ """ TITLE: Intersection 02 AUTHOR: Francis Indaheng, findaheng@berkeley.edu -DESCRIPTION: Ego vehicle makes a left turn at 4-way intersection and -must suddenly stop to avoid collision when adversary vehicle from +DESCRIPTION: Ego vehicle makes a left turn at 4-way intersection and +must suddenly stop to avoid collision when adversary vehicle from opposite lane goes straight. SOURCE: NHSTA, #30 @@ -14,26 +14,26 @@ To run this file using the Carla simulator: # MAP AND MODEL # ################################# -param map = localPath('../../../../assets/maps/CARLA/Town05.xodr') -param carla_map = 'Town05' +param map = localPath('../../../../assets/maps/CARLA/Town10HD_Opt.xodr') +param carla_map = 'Town10HD_Opt' model scenic.simulators.carla.model ################################# # CONSTANTS # ################################# -MODEL = 'vehicle.lincoln.mkz_2017' +MODEL = 'vehicle.nissan.patrol' -EGO_INIT_DIST = [20, 25] +EGO_INIT_DIST = [10, 15] param EGO_SPEED = VerifaiRange(7, 10) param EGO_BRAKE = VerifaiRange(0.5, 1.0) -ADV_INIT_DIST = [15, 20] +ADV_INIT_DIST = [10, 15] param ADV_SPEED = VerifaiRange(7, 10) param SAFETY_DIST = VerifaiRange(10, 20) CRASH_DIST = 5 -TERM_DIST = 70 +TERM_DIST = 35 ################################# # AGENT BEHAVIORS # diff --git a/examples/carla/NHTSA_Scenarios/intersection/intersection_03.scenic b/examples/carla/NHTSA_Scenarios/intersection/intersection_03.scenic index 859898bec..28f5d1061 100644 --- a/examples/carla/NHTSA_Scenarios/intersection/intersection_03.scenic +++ b/examples/carla/NHTSA_Scenarios/intersection/intersection_03.scenic @@ -1,8 +1,8 @@ """ TITLE: Intersection 03 AUTHOR: Francis Indaheng, findaheng@berkeley.edu -DESCRIPTION: Ego vehicle either goes straight or makes a left turn at -4-way intersection and must suddenly stop to avoid collision when +DESCRIPTION: Ego vehicle either goes straight or makes a left turn at +4-way intersection and must suddenly stop to avoid collision when adversary vehicle from lateral lane continues straight. SOURCE: NHSTA, #28 #29 @@ -14,26 +14,26 @@ To run this file using the Carla simulator: # MAP AND MODEL # ################################# -param map = localPath('../../../../assets/maps/CARLA/Town05.xodr') -param carla_map = 'Town05' +param map = localPath('../../../../assets/maps/CARLA/Town10HD_Opt.xodr') +param carla_map = 'Town10HD_Opt' model scenic.simulators.carla.model ################################# # CONSTANTS # ################################# -MODEL = 'vehicle.lincoln.mkz_2017' +MODEL = 'vehicle.nissan.patrol' -EGO_INIT_DIST = [20, 25] +EGO_INIT_DIST = [6, 12] param EGO_SPEED = VerifaiRange(7, 10) param EGO_BRAKE = VerifaiRange(0.5, 1.0) -ADV_INIT_DIST = [15, 20] +ADV_INIT_DIST = [6, 12] param ADV_SPEED = VerifaiRange(7, 10) param SAFETY_DIST = VerifaiRange(10, 20) CRASH_DIST = 5 -TERM_DIST = 70 +TERM_DIST = 35 ################################# # AGENT BEHAVIORS # @@ -62,8 +62,8 @@ egoSpawnPt = new OrientedPoint in egoInitLane.centerline advInitLane = Uniform(*filter(lambda m: m.type is ManeuverType.STRAIGHT, - Uniform(*filter(lambda m: - m.type is ManeuverType.STRAIGHT, + Uniform(*filter(lambda m: + m.type is ManeuverType.STRAIGHT, egoInitLane.maneuvers) ).conflictingManeuvers) ).startLane diff --git a/examples/carla/NHTSA_Scenarios/intersection/intersection_04.scenic b/examples/carla/NHTSA_Scenarios/intersection/intersection_04.scenic index 4ef689d10..94ae7556d 100644 --- a/examples/carla/NHTSA_Scenarios/intersection/intersection_04.scenic +++ b/examples/carla/NHTSA_Scenarios/intersection/intersection_04.scenic @@ -1,8 +1,8 @@ """ TITLE: Intersection 04 AUTHOR: Francis Indaheng, findaheng@berkeley.edu -DESCRIPTION: Ego vehicle either goes straight or makes a left turn at -4-way intersection and must suddenly stop to avoid collision when +DESCRIPTION: Ego vehicle either goes straight or makes a left turn at +4-way intersection and must suddenly stop to avoid collision when adversary vehicle from lateral lane makes a left turn. SOURCE: NHSTA, #28 #29 @@ -14,26 +14,26 @@ To run this file using the Carla simulator: # MAP AND MODEL # ################################# -param map = localPath('../../../../assets/maps/CARLA/Town05.xodr') -param carla_map = 'Town05' +param map = localPath('../../../../assets/maps/CARLA/Town10HD_Opt.xodr') +param carla_map = 'Town10HD_Opt' model scenic.simulators.carla.model ################################# # CONSTANTS # ################################# -MODEL = 'vehicle.lincoln.mkz_2017' +MODEL = 'vehicle.nissan.patrol' -EGO_INIT_DIST = [20, 25] +EGO_INIT_DIST = [6, 12] param EGO_SPEED = VerifaiRange(7, 10) param EGO_BRAKE = VerifaiRange(0.5, 1.0) -ADV_INIT_DIST = [15, 20] +ADV_INIT_DIST = [6, 12] param ADV_SPEED = VerifaiRange(7, 10) param SAFETY_DIST = VerifaiRange(10, 20) CRASH_DIST = 5 -TERM_DIST = 70 +TERM_DIST = 35 ################################# # AGENT BEHAVIORS # diff --git a/examples/carla/NHTSA_Scenarios/intersection/intersection_05.scenic b/examples/carla/NHTSA_Scenarios/intersection/intersection_05.scenic index eff0df4d9..520a8df6a 100644 --- a/examples/carla/NHTSA_Scenarios/intersection/intersection_05.scenic +++ b/examples/carla/NHTSA_Scenarios/intersection/intersection_05.scenic @@ -1,7 +1,7 @@ """ TITLE: Intersection 05 AUTHOR: Francis Indaheng, findaheng@berkeley.edu -DESCRIPTION: Ego vehicle makes a right turn at 4-way intersection +DESCRIPTION: Ego vehicle makes a right turn at 4-way intersection while adversary vehicle from opposite lane makes a left turn. SOURCE: NHSTA, #25 @@ -13,17 +13,17 @@ To run this file using the Carla simulator: # MAP AND MODEL # ################################# -param map = localPath('../../../../assets/maps/CARLA/Town05.xodr') -param carla_map = 'Town05' +param map = localPath('../../../../assets/maps/CARLA/Town10HD_Opt.xodr') +param carla_map = 'Town10HD_Opt' model scenic.simulators.carla.model ################################# # CONSTANTS # ################################# -MODEL = 'vehicle.lincoln.mkz_2017' +MODEL = 'vehicle.nissan.patrol' -EGO_INIT_DIST = [20, 25] +EGO_INIT_DIST = [10, 15] param EGO_SPEED = VerifaiRange(7, 10) param EGO_BRAKE = VerifaiRange(0.5, 1.0) @@ -32,7 +32,7 @@ param ADV_SPEED = VerifaiRange(7, 10) param SAFETY_DIST = VerifaiRange(10, 20) CRASH_DIST = 5 -TERM_DIST = 70 +TERM_DIST = 35 ################################# # AGENT BEHAVIORS # @@ -59,8 +59,8 @@ egoSpawnPt = new OrientedPoint in egoInitLane.centerline advInitLane = Uniform(*filter(lambda m: m.type is ManeuverType.STRAIGHT, - Uniform(*filter(lambda m: - m.type is ManeuverType.STRAIGHT, + Uniform(*filter(lambda m: + m.type is ManeuverType.STRAIGHT, egoInitLane.maneuvers) ).reverseManeuvers) ).startLane diff --git a/examples/carla/NHTSA_Scenarios/intersection/intersection_06.scenic b/examples/carla/NHTSA_Scenarios/intersection/intersection_06.scenic index 5c74c5f34..8cd87ed66 100644 --- a/examples/carla/NHTSA_Scenarios/intersection/intersection_06.scenic +++ b/examples/carla/NHTSA_Scenarios/intersection/intersection_06.scenic @@ -1,7 +1,7 @@ """ TITLE: Intersection 06 AUTHOR: Francis Indaheng, findaheng@berkeley.edu -DESCRIPTION: Ego vehicle makes a right turn at 4-way intersection while +DESCRIPTION: Ego vehicle makes a right turn at 4-way intersection while adversary vehicle from lateral lane goes straight. SOURCE: NHSTA, #25 #26 @@ -13,26 +13,26 @@ To run this file using the Carla simulator: # MAP AND MODEL # ################################# -param map = localPath('../../../../assets/maps/CARLA/Town05.xodr') -param carla_map = 'Town05' +param map = localPath('../../../../assets/maps/CARLA/Town10HD_Opt.xodr') +param carla_map = 'Town10HD_Opt' model scenic.simulators.carla.model ################################# # CONSTANTS # ################################# -MODEL = 'vehicle.lincoln.mkz_2017' +MODEL = 'vehicle.nissan.patrol' -EGO_INIT_DIST = [20, 25] +EGO_INIT_DIST = [6, 12] param EGO_SPEED = VerifaiRange(7, 10) param EGO_BRAKE = VerifaiRange(0.5, 1.0) -ADV_INIT_DIST = [10, 15] +ADV_INIT_DIST = [6, 12] param ADV_SPEED = VerifaiRange(7, 10) param SAFETY_DIST = VerifaiRange(10, 20) CRASH_DIST = 5 -TERM_DIST = 70 +TERM_DIST = 35 ################################# # AGENT BEHAVIORS # @@ -59,8 +59,8 @@ egoSpawnPt = new OrientedPoint in egoInitLane.centerline advInitLane = Uniform(*filter(lambda m: m.type is ManeuverType.STRAIGHT, - Uniform(*filter(lambda m: - m.type is ManeuverType.STRAIGHT, + Uniform(*filter(lambda m: + m.type is ManeuverType.STRAIGHT, egoInitLane.maneuvers) ).conflictingManeuvers) ).startLane diff --git a/examples/carla/NHTSA_Scenarios/intersection/intersection_07.scenic b/examples/carla/NHTSA_Scenarios/intersection/intersection_07.scenic index 22551f68e..064e5cd01 100644 --- a/examples/carla/NHTSA_Scenarios/intersection/intersection_07.scenic +++ b/examples/carla/NHTSA_Scenarios/intersection/intersection_07.scenic @@ -1,8 +1,8 @@ """ TITLE: Intersection 07 AUTHOR: Francis Indaheng, findaheng@berkeley.edu -DESCRIPTION: Ego vehicle makes a left turn at 3-way intersection and -must suddenly stop to avoid collision when adversary vehicle from +DESCRIPTION: Ego vehicle makes a left turn at 3-way intersection and +must suddenly stop to avoid collision when adversary vehicle from lateral lane continues straight. SOURCE: NHSTA, #30 @@ -14,22 +14,22 @@ To run this file using the Carla simulator: # MAP AND MODEL # ################################# -param map = localPath('../../../../assets/maps/CARLA/Town05.xodr') -param carla_map = 'Town05' +param map = localPath('../../../../assets/maps/CARLA/Town10HD_Opt.xodr') +param carla_map = 'Town10HD_Opt' model scenic.simulators.carla.model ################################# # CONSTANTS # ################################# -MODEL = 'vehicle.lincoln.mkz_2017' +MODEL = 'vehicle.nissan.patrol' EGO_INIT_DIST = [20, 40] -param EGO_SPEED = VerifaiRange(7, 10) +param EGO_SPEED = VerifaiRange(5, 8) param EGO_BRAKE = VerifaiRange(0.5, 1.0) ADV_INIT_DIST = [0, 20] -param ADV_SPEED = VerifaiRange(7, 10) +param ADV_SPEED = VerifaiRange(5, 8) param SAFETY_DIST = VerifaiRange(10, 20) CRASH_DIST = 5 diff --git a/examples/carla/NHTSA_Scenarios/intersection/intersection_08.scenic b/examples/carla/NHTSA_Scenarios/intersection/intersection_08.scenic index 89e1482ec..d7919e702 100644 --- a/examples/carla/NHTSA_Scenarios/intersection/intersection_08.scenic +++ b/examples/carla/NHTSA_Scenarios/intersection/intersection_08.scenic @@ -1,8 +1,8 @@ """ TITLE: Intersection 08 AUTHOR: Francis Indaheng, findaheng@berkeley.edu -DESCRIPTION: Ego vehicle goes straight at 3-way intersection and must -suddenly stop to avoid collision when adversary vehicle makes a left +DESCRIPTION: Ego vehicle goes straight at 3-way intersection and must +suddenly stop to avoid collision when adversary vehicle makes a left turn. SOURCE: NHSTA, #30 @@ -14,15 +14,15 @@ To run this file using the Carla simulator: # MAP AND MODEL # ################################# -param map = localPath('../../../../assets/maps/CARLA/Town05.xodr') -param carla_map = 'Town05' +param map = localPath('../../../../assets/maps/CARLA/Town10HD_Opt.xodr') +param carla_map = 'Town10HD_Opt' model scenic.simulators.carla.model ################################# # CONSTANTS # ################################# -MODEL = 'vehicle.lincoln.mkz_2017' +MODEL = 'vehicle.nissan.patrol' EGO_INIT_DIST = [20, 40] param EGO_SPEED = VerifaiRange(7, 10) diff --git a/examples/carla/NHTSA_Scenarios/intersection/intersection_09.scenic b/examples/carla/NHTSA_Scenarios/intersection/intersection_09.scenic index e9c81ae4b..a924e2b81 100644 --- a/examples/carla/NHTSA_Scenarios/intersection/intersection_09.scenic +++ b/examples/carla/NHTSA_Scenarios/intersection/intersection_09.scenic @@ -1,7 +1,7 @@ """ TITLE: Intersection 09 AUTHOR: Francis Indaheng, findaheng@berkeley.edu -DESCRIPTION: Ego vehicle makes a right turn at 3-way intersection +DESCRIPTION: Ego vehicle makes a right turn at 3-way intersection while adversary vehicle from lateral lane goes straight. SOURCE: NHSTA, #28 #29 @@ -13,15 +13,15 @@ To run this file using the Carla simulator: # MAP AND MODEL # ################################# -param map = localPath('../../../../assets/maps/CARLA/Town05.xodr') -param carla_map = 'Town05' +param map = localPath('../../../../assets/maps/CARLA/Town10HD_Opt.xodr') +param carla_map = 'Town10HD_Opt' model scenic.simulators.carla.model ################################# # CONSTANTS # ################################# -MODEL = 'vehicle.lincoln.mkz_2017' +MODEL = 'vehicle.nissan.patrol' EGO_INIT_DIST = [20, 25] param EGO_SPEED = VerifaiRange(7, 10) diff --git a/examples/carla/NHTSA_Scenarios/intersection/intersection_10.scenic b/examples/carla/NHTSA_Scenarios/intersection/intersection_10.scenic index 50f34b6ec..58fc08199 100644 --- a/examples/carla/NHTSA_Scenarios/intersection/intersection_10.scenic +++ b/examples/carla/NHTSA_Scenarios/intersection/intersection_10.scenic @@ -1,8 +1,8 @@ """ TITLE: Intersection 10 AUTHOR: Francis Indaheng, findaheng@berkeley.edu -DESCRIPTION: Ego Vehicle waits at 4-way intersection while adversary -vehicle in adjacent lane passes before performing a lane change to +DESCRIPTION: Ego Vehicle waits at 4-way intersection while adversary +vehicle in adjacent lane passes before performing a lane change to bypass a stationary vehicle waiting to make a left turn. SOURCE: NHSTA, #16 @@ -14,27 +14,27 @@ To run this file using the Carla simulator: # MAP AND MODEL # ################################# -param map = localPath('../../../../assets/maps/CARLA/Town05.xodr') -param carla_map = 'Town05' +param map = localPath('../../../../assets/maps/CARLA/Town10HD_Opt.xodr') +param carla_map = 'Town10HD_Opt' model scenic.simulators.carla.model ################################# # CONSTANTS # ################################# -MODEL = 'vehicle.lincoln.mkz_2017' +MODEL = 'vehicle.nissan.patrol' -param EGO_INIT_DIST = VerifaiRange(10, 15) +param EGO_INIT_DIST = VerifaiRange(18, 20) param EGO_SPEED = VerifaiRange(7, 10) param EGO_BRAKE = VerifaiRange(0.5, 1.0) STAT_INIT_DIST = [0, 5] ADV_INIT_DIST = [15, 20] -ADV_SPEED = 10 +ADV_SPEED = 12 BYPASS_DIST = 8 -TERM_DIST = 70 +TERM_DIST = 40 ################################# # AGENT BEHAVIORS # @@ -55,7 +55,7 @@ behavior EgoBehavior(): intersection = Uniform(*filter(lambda i: i.is4Way, network.intersections)) -statInitLane = Uniform(*filter(lambda lane: +statInitLane = Uniform(*filter(lambda lane: all([sec._laneToRight is not None for sec in lane.sections]), intersection.incomingLanes)) statSpawnPt = new OrientedPoint in statInitLane.centerline diff --git a/examples/carla/NHTSA_Scenarios/pedestrian/pedestrian_01.scenic b/examples/carla/NHTSA_Scenarios/pedestrian/pedestrian_01.scenic index c07454ccb..72674fafe 100644 --- a/examples/carla/NHTSA_Scenarios/pedestrian/pedestrian_01.scenic +++ b/examples/carla/NHTSA_Scenarios/pedestrian/pedestrian_01.scenic @@ -1,27 +1,27 @@ """ TITLE: Pedestrian 01 AUTHOR: Francis Indaheng, findaheng@berkeley.edu -DESCRIPTION: Ego vehicle must suddenly stop to avoid collision when +DESCRIPTION: Ego vehicle must suddenly stop to avoid collision when pedestrian crosses the road unexpectedly. SOURCE: Carla Challenge, #03 To run this file using the Carla simulator: - scenic examples/carla/NHTSA_Scenarios/pedestrian/pedestrian_01.scenic --2d --model scenic.simulators.carla.model --simulate + scenic examples/carala/NHTSA_Scenarios/pedestrian/pedestrian_01.scenic --2d --model scenic.simulators.carla.model --simulate """ ################################# # MAP AND MODEL # ################################# -param map = localPath('../../../../assets/maps/CARLA/Town01.xodr') -param carla_map = 'Town01' +param map = localPath('../../../../assets/maps/CARLA/Town10HD_Opt.xodr') +param carla_map = 'Town10HD_Opt' model scenic.simulators.carla.model ################################# # CONSTANTS # ################################# -MODEL = 'vehicle.lincoln.mkz_2017' +MODEL = 'vehicle.nissan.patrol' param EGO_INIT_DIST = VerifaiRange(-30, -20) param EGO_SPEED = VerifaiRange(7, 10) @@ -31,7 +31,7 @@ PED_MIN_SPEED = 1.0 PED_THRESHOLD = 20 param SAFETY_DIST = VerifaiRange(10, 15) -BUFFER_DIST = 75 +BUFFER_DIST = 50 CRASH_DIST = 5 TERM_DIST = 50 @@ -51,7 +51,16 @@ behavior EgoBehavior(): # SPATIAL RELATIONS # ################################# -lane = Uniform(*network.lanes) +# collect all the curb-side lanes +curbLanes = [ + lg.lanes[0] + for lg in network.laneGroups + if lg is lg.road.forwardLanes +] + +# make sure to put '*' to uniformly randomly select from all elements of the list +lane = Uniform(*curbLanes) + spawnPt = new OrientedPoint on lane.centerline ################################# @@ -68,6 +77,4 @@ ped = new Pedestrian right of spawnPt by 3, with behavior CrossingBehavior(ego, PED_MIN_SPEED, PED_THRESHOLD) require (distance to intersection) > BUFFER_DIST -require always (ego.laneSection._slowerLane is None) -require always (ego.laneSection._fasterLane is None) terminate when (distance to spawnPt) > TERM_DIST diff --git a/examples/carla/NHTSA_Scenarios/pedestrian/pedestrian_02.scenic b/examples/carla/NHTSA_Scenarios/pedestrian/pedestrian_02.scenic index eb4c0ea40..d682e4bf7 100644 --- a/examples/carla/NHTSA_Scenarios/pedestrian/pedestrian_02.scenic +++ b/examples/carla/NHTSA_Scenarios/pedestrian/pedestrian_02.scenic @@ -1,7 +1,7 @@ """ TITLE: Pedestrian 02 AUTHOR: Francis Indaheng, findaheng@berkeley.edu -DESCRIPTION: Both ego and adversary vehicles must suddenly stop to avoid +DESCRIPTION: Both ego and adversary vehicles must suddenly stop to avoid collision when pedestrian crosses the road unexpectedly. SOURCE: Carla Challenge, #03 @@ -13,15 +13,15 @@ To run this file using the Carla simulator: # MAP AND MODEL # ################################# -param map = localPath('../../../../assets/maps/CARLA/Town01.xodr') -param carla_map = 'Town01' +param map = localPath('../../../../assets/maps/CARLA/Town10HD_Opt.xodr') +param carla_map = 'Town10HD_Opt' model scenic.simulators.carla.model ################################# # CONSTANTS # ################################# -MODEL = 'vehicle.lincoln.mkz_2017' +MODEL = 'vehicle.nissan.patrol' param EGO_INIT_DIST = VerifaiRange(-30, -20) param EGO_SPEED = VerifaiRange(7, 10) @@ -35,7 +35,7 @@ PED_MIN_SPEED = 1.0 PED_THRESHOLD = 20 param SAFETY_DIST = VerifaiRange(10, 15) -BUFFER_DIST = 75 +BUFFER_DIST = 50 CRASH_DIST = 5 TERM_DIST = 50 @@ -63,8 +63,9 @@ behavior AdvBehavior(): # SPATIAL RELATIONS # ################################# -road = Uniform(*filter(lambda r: len(r.forwardLanes.lanes) == len(r.backwardLanes.lanes) == 1, network.roads)) +road = Uniform(*filter(lambda r: len(r.forwardLanes.lanes) > 0 and len(r.backwardLanes.lanes) > 0, network.roads)) egoLane = Uniform(road.forwardLanes.lanes)[0] +advLane = Uniform(*road.backwardLanes.lanes) spawnPt = new OrientedPoint on egoLane.centerline advSpawnPt = new OrientedPoint following roadDirection from spawnPt for globalParameters.ADV_INIT_DIST @@ -81,14 +82,10 @@ ped = new Pedestrian right of spawnPt by 3, with regionContainedIn None, with behavior CrossingBehavior(ego, PED_MIN_SPEED, PED_THRESHOLD) -adv = new Car left of advSpawnPt by 3, +adv = new Car left of advSpawnPt by 7, with blueprint MODEL, with heading 180 deg relative to spawnPt.heading, with behavior AdvBehavior() require (distance from spawnPt to intersection) > BUFFER_DIST -require always (ego.laneSection._slowerLane is None) -require always (ego.laneSection._fasterLane is None) -require always (adv.laneSection._slowerLane is None) -require always (adv.laneSection._fasterLane is None) terminate when (distance to spawnPt) > TERM_DIST diff --git a/examples/carla/NHTSA_Scenarios/pedestrian/pedestrian_03.scenic b/examples/carla/NHTSA_Scenarios/pedestrian/pedestrian_03.scenic index d07736569..1ac6a93eb 100644 --- a/examples/carla/NHTSA_Scenarios/pedestrian/pedestrian_03.scenic +++ b/examples/carla/NHTSA_Scenarios/pedestrian/pedestrian_03.scenic @@ -1,7 +1,7 @@ """ TITLE: Pedestrian 03 AUTHOR: Francis Indaheng, findaheng@berkeley.edu -DESCRIPTION: Ego vehicle makes a left turn at an intersection and must +DESCRIPTION: Ego vehicle makes a left turn at an intersection and must suddenly stop to avoid collision when pedestrian crosses the crosswalk. SOURCE: Carla Challenge, #04 @@ -13,15 +13,15 @@ To run this file using the Carla simulator: # MAP AND MODEL # ################################# -param map = localPath('../../../../assets/maps/CARLA/Town05.xodr') -param carla_map = 'Town05' +param map = localPath('../../../../assets/maps/CARLA/Town10HD_Opt.xodr') +param carla_map = 'Town10HD_Opt' model scenic.simulators.carla.model ################################# # CONSTANTS # ################################# -MODEL = 'vehicle.lincoln.mkz_2017' +MODEL = 'vehicle.nissan.patrol' EGO_INIT_DIST = [20, 25] param EGO_SPEED = VerifaiRange(7, 10) diff --git a/examples/carla/NHTSA_Scenarios/pedestrian/pedestrian_04.scenic b/examples/carla/NHTSA_Scenarios/pedestrian/pedestrian_04.scenic index edc9ff90c..4fe9289f1 100644 --- a/examples/carla/NHTSA_Scenarios/pedestrian/pedestrian_04.scenic +++ b/examples/carla/NHTSA_Scenarios/pedestrian/pedestrian_04.scenic @@ -1,7 +1,7 @@ """ TITLE: Pedestrian 04 AUTHOR: Francis Indaheng, findaheng@berkeley.edu -DESCRIPTION: Ego vehicle makes a right turn at an intersection and must +DESCRIPTION: Ego vehicle makes a right turn at an intersection and must yield when pedestrian crosses the crosswalk. SOURCE: Carla Challenge, #04 @@ -13,15 +13,15 @@ To run this file using the Carla simulator: # MAP AND MODEL # ################################# -param map = localPath('../../../../assets/maps/CARLA/Town05.xodr') -param carla_map = 'Town05' +param map = localPath('../../../../assets/maps/CARLA/Town10HD_Opt.xodr') +param carla_map = 'Town10HD_Opt' model scenic.simulators.carla.model ################################# # CONSTANTS # ################################# -MODEL = 'vehicle.lincoln.mkz_2017' +MODEL = 'vehicle.nissan.patrol' EGO_INIT_DIST = [20, 25] param EGO_SPEED = VerifaiRange(7, 10) diff --git a/examples/carla/NHTSA_Scenarios/pedestrian/pedestrian_05.scenic b/examples/carla/NHTSA_Scenarios/pedestrian/pedestrian_05.scenic index b2b6dbb4a..6e37f69fa 100644 --- a/examples/carla/NHTSA_Scenarios/pedestrian/pedestrian_05.scenic +++ b/examples/carla/NHTSA_Scenarios/pedestrian/pedestrian_05.scenic @@ -1,7 +1,7 @@ """ TITLE: Pedestrian 05 AUTHOR: Francis Indaheng, findaheng@berkeley.edu -DESCRIPTION: Ego vehicle goes straight at an intersection and must +DESCRIPTION: Ego vehicle goes straight at an intersection and must yield when pedestrian crosses the crosswalk. SOURCE: Carla Challenge, #04 @@ -13,15 +13,15 @@ To run this file using the Carla simulator: # MAP AND MODEL # ################################# -param map = localPath('../../../../assets/maps/CARLA/Town05.xodr') -param carla_map = 'Town05' +param map = localPath('../../../../assets/maps/CARLA/Town10HD_Opt.xodr') +param carla_map = 'Town10HD_Opt' model scenic.simulators.carla.model ################################# # CONSTANTS # ################################# -MODEL = 'vehicle.lincoln.mkz_2017' +MODEL = 'vehicle.nissan.patrol' EGO_INIT_DIST = [20, 25] param EGO_SPEED = VerifaiRange(7, 10) diff --git a/examples/carla/OAS_Scenarios/oas_scenario_05.scenic b/examples/carla/OAS_Scenarios/oas_scenario_05.scenic index 4573b8376..b98f461a9 100644 --- a/examples/carla/OAS_Scenarios/oas_scenario_05.scenic +++ b/examples/carla/OAS_Scenarios/oas_scenario_05.scenic @@ -3,11 +3,11 @@ Voyage OAS Scenario Unique ID: 2-2-XX-CF-STR-CAR:Pa>E:03 The lead car suddenly stops and then resumes moving forward To run this file using the Carla simulator: - scenic examples/carla/NHTSA_Scenarios/OAS_Scenarios/oas_scenario_05.scenic --2d --model scenic.simulators.carla.model --simulate + scenic examples/carla/OAS_Scenarios/oas_scenario_05.scenic --2d --model scenic.simulators.carla.model --simulate """ -param map = localPath('../../../assets/maps/CARLA/Town01.xodr') # or other CARLA map that definitely works -param carla_map = 'Town01' +param map = localPath('../../../assets/maps/CARLA/Town10HD_Opt.xodr') # or other CARLA map that definitely works +param carla_map = 'Town10HD_Opt' model scenic.domains.driving.model MAX_BREAK_THRESHOLD = 1 @@ -28,7 +28,7 @@ behavior CollisionAvoidance(): behavior FollowLeadCarBehavior(): - try: + try: do FollowLaneBehavior() interrupt when withinDistanceToAnyObjs(self, SAFETY_DISTANCE): @@ -43,4 +43,4 @@ other = new Car on select_lane.centerline, with behavior LeadCarBehavior() ego = new Car following roadDirection from other for INITIAL_DISTANCE_APART, - with behavior FollowLeadCarBehavior() \ No newline at end of file + with behavior FollowLeadCarBehavior() diff --git a/examples/carla/OAS_Scenarios/oas_scenario_06.scenic b/examples/carla/OAS_Scenarios/oas_scenario_06.scenic index f9c0b8aeb..35bf5b050 100644 --- a/examples/carla/OAS_Scenarios/oas_scenario_06.scenic +++ b/examples/carla/OAS_Scenarios/oas_scenario_06.scenic @@ -1,15 +1,15 @@ """ Scenario Description Voyage OAS Scenario Unique ID: 2-2-XX-CF-STR-CAR:Pa>E:03 The car ahead of ego that is badly parked over the sidewalk cuts into ego vehicle's lane. -This scenario may fail if there exists any obstacle (e.g. fences) on the sidewalk +This scenario may fail if there exists any obstacle (e.g. fences) on the sidewalk To run this file using the Carla simulator: - scenic examples/carla/NHTSA_Scenarios/OAS_Scenarios/oas_scenario_06.scenic --2d --model scenic.simulators.carla.model --simulate + scenic examples/carla/OAS_Scenarios/oas_scenario_06.scenic --2d --model scenic.simulators.carla.model --simulate """ -param map = localPath('../../../assets/maps/CARLA/Town01.xodr') # or other CARLA map that definitely works -param carla_map = 'Town01' +param map = localPath('../../../assets/maps/CARLA/Town10HD_Opt.xodr') # or other CARLA map that definitely works +param carla_map = 'Town10HD_Opt' model scenic.domains.driving.model MAX_BREAK_THRESHOLD = 1 @@ -31,7 +31,7 @@ behavior CollisionAvoidance(): behavior EgoBehavior(target_speed): - try: + try: do FollowLaneBehavior(target_speed=target_speed) interrupt when withinDistanceToAnyObjs(self, SAFETY_DISTANCE): @@ -44,7 +44,7 @@ ego_lane = select_road.lanes[0] ego = new Car on ego_lane.centerline, with behavior EgoBehavior(target_speed=EGO_SPEED) - + spot = new OrientedPoint on visible curb parkedHeadingAngle = Uniform(-1,1)*Range(10,20) deg diff --git a/examples/carla/adjacentLanes.scenic b/examples/carla/adjacentLanes.scenic index 4bf11661e..ac1feb1ff 100644 --- a/examples/carla/adjacentLanes.scenic +++ b/examples/carla/adjacentLanes.scenic @@ -3,11 +3,11 @@ To run this file using the Carla simulator: scenic examples/carla/adjacentLanes.scenic --2d --model scenic.simulators.carla.model ''' -param map = localPath('../../assets/maps/CARLA/Town03.xodr') +param map = localPath('../../assets/maps/CARLA/Town10HD_Opt.xodr') model scenic.simulators.carla.model # Cars on adjacent lanes of the first section of Road 69 -roadSec = network.elements['road69'].sections[0] +roadSec = network.elements['road0'].sections[0] ego = new Car in roadSec.forwardLanes[0], # rightmost lane with color Color(1, 0, 0) c1 = new Car in roadSec.forwardLanes[1], # next lane to left diff --git a/examples/carla/adjacentOpposingPair.scenic b/examples/carla/adjacentOpposingPair.scenic index f28044289..28405c873 100644 --- a/examples/carla/adjacentOpposingPair.scenic +++ b/examples/carla/adjacentOpposingPair.scenic @@ -2,10 +2,10 @@ To run this file using the Carla simulator: scenic examples/carla/adjacentOpposingPair.scenic --2d --model scenic.simulators.carla.model ''' -param map = localPath('../../assets/maps/CARLA/Town01.xodr') +param map = localPath('../../assets/maps/CARLA/Town10HD_Opt.xodr') model scenic.simulators.carla.model ego = new Car with visibleDistance 20 c2 = new Car visible c3 = new Car at c2 offset by Range(-10, 1) @ 0 -require abs(relative heading of c3 from c2) >= 150 deg \ No newline at end of file +require abs(relative heading of c3 from c2) >= 150 deg diff --git a/examples/carla/backgroundActivity.scenic b/examples/carla/backgroundActivity.scenic index 8b29e1f01..9ed8e8289 100644 --- a/examples/carla/backgroundActivity.scenic +++ b/examples/carla/backgroundActivity.scenic @@ -7,11 +7,11 @@ To run this file using the Carla simulator: scenic examples/carla/backgroundActivity.scenic --2d --model scenic.simulators.carla.model --simulate """ # SET MAP AND MODEL (i.e. definitions of all referenceable vehicle types, road library, etc) -param map = localPath('../../assets/maps/CARLA/Town05.xodr') # or other CARLA map that definitely works -param carla_map = 'Town05' +param map = localPath('../../assets/maps/CARLA/Town10HD_Opt.xodr') # or other CARLA map that definitely works +param carla_map = 'Town10HD_Opt' model scenic.simulators.carla.model -EGO_MODEL = "vehicle.lincoln.mkz_2017" +EGO_MODEL = "vehicle.nissan.patrol" EGO_SPEED = 10 # EGO BEHAVIOR: Follow lane and brake when reaches threshold distance to obstacle @@ -27,7 +27,7 @@ behavior PedestrianBehavior(min_speed=1, threshold=10): ## DEFINING SPATIAL RELATIONS # Please refer to scenic/domains/driving/roads.py how to access detailed road infrastructure -# 'network' is the 'class Network' object in roads.py +# 'network' is the 'class Network' object in roads.py # Background activity background_vehicles = [] diff --git a/examples/carla/car.scenic b/examples/carla/car.scenic index 1f4c68cb7..7011f2b31 100644 --- a/examples/carla/car.scenic +++ b/examples/carla/car.scenic @@ -2,7 +2,7 @@ To run this file using the Carla simulator: scenic examples/carla/car.scenic --2d --model scenic.simulators.carla.model --simulate ''' -param map = localPath('../../assets/maps/CARLA/Town01.xodr') +param map = localPath('../../assets/maps/CARLA/Town10HD_Opt.xodr') model scenic.simulators.carla.model ego = new Car diff --git a/examples/carla/manual_control/carlaChallenge1.scenic b/examples/carla/manual_control/carlaChallenge1.scenic index bb024a335..94dfae3f6 100644 --- a/examples/carla/manual_control/carlaChallenge1.scenic +++ b/examples/carla/manual_control/carlaChallenge1.scenic @@ -9,13 +9,13 @@ To run this file using the Carla simulator: """ ## SET MAP AND MODEL (i.e. definitions of all referenceable vehicle types, road library, etc) -param map = localPath('../../../assets/maps/CARLA/Town01.xodr') # or other CARLA map that definitely works -param carla_map = 'Town01' +param map = localPath('../../../assets/maps/CARLA/Town10HD_Opt.xodr') # or other CARLA map that definitely works +param carla_map = 'Town10HD_Opt' param render = 0 model scenic.simulators.carla.model ## CONSTANTS -EGO_MODEL = "vehicle.lincoln.mkz_2017" +EGO_MODEL = "vehicle.nissan.patrol" EGO_SPEED = 10 ## DEFINING SPATIAL RELATIONS diff --git a/examples/carla/manual_control/carlaChallenge3_dynamic.scenic b/examples/carla/manual_control/carlaChallenge3_dynamic.scenic index 1ae36f3f4..1ead57a5b 100644 --- a/examples/carla/manual_control/carlaChallenge3_dynamic.scenic +++ b/examples/carla/manual_control/carlaChallenge3_dynamic.scenic @@ -9,13 +9,13 @@ To run this file using the Carla simulator: """ # SET MAP AND MODEL (i.e. definitions of all referenceable vehicle types, road library, etc) -param map = localPath('../../../assets/maps/CARLA/Town05.xodr') # or other CARLA map that definitely works -param carla_map = 'Town05' +param map = localPath('../../../assets/maps/CARLA/Town10HD_Opt.xodr') # or other CARLA map that definitely works +param carla_map = 'Town10HD_Opt' param render = 0 model scenic.simulators.carla.model # CONSTANTS -EGO_MODEL = "vehicle.lincoln.mkz_2017" +EGO_MODEL = "vehicle.nissan.patrol" EGO_SPEED = 10 PEDESTRIAN_MIN_SPEED = 0.5 @@ -29,7 +29,7 @@ behavior PedestrianBehavior(min_speed=1, threshold=10): ## DEFINING SPATIAL RELATIONS # Please refer to scenic/domains/driving/roads.py how to access detailed road infrastructure -# 'network' is the 'class Network' object in roads.py +# 'network' is the 'class Network' object in roads.py # make sure to put '*' to uniformly randomly select from all elements of the list, 'network.lanes' lane = Uniform(*network.lanes) diff --git a/examples/carla/manual_control/carlaChallenge4.scenic b/examples/carla/manual_control/carlaChallenge4.scenic index 4b3eb48e5..546bb51f5 100644 --- a/examples/carla/manual_control/carlaChallenge4.scenic +++ b/examples/carla/manual_control/carlaChallenge4.scenic @@ -9,13 +9,13 @@ To run this file using the Carla simulator: """ ## SET MAP AND MODEL (i.e. definitions of all referenceable vehicle types, road library, etc) -param map = localPath('../../../assets/maps/CARLA/Town01.xodr') # or other CARLA map that definitely works -param carla_map = 'Town01' +param map = localPath('../../../assets/maps/CARLA/Town10HD_Opt.xodr') # or other CARLA map that definitely works +param carla_map = 'Town10HD_Opt' param render = 0 model scenic.simulators.carla.model ## CONSTANTS -EGO_MODEL = "vehicle.lincoln.mkz_2017" +EGO_MODEL = "vehicle.nissan.patrol" BICYCLE_MIN_SPEED = 1 THRESHOLD = 15 diff --git a/examples/carla/manual_control/carlaChallenge7.scenic b/examples/carla/manual_control/carlaChallenge7.scenic index 49477f9c7..27af9793c 100644 --- a/examples/carla/manual_control/carlaChallenge7.scenic +++ b/examples/carla/manual_control/carlaChallenge7.scenic @@ -9,8 +9,8 @@ To run this file using the Carla simulator: """ ## SET MAP AND MODEL (i.e. definitions of all referenceable vehicle types, road library, etc) -param map = localPath('../../../assets/maps/CARLA/Town05.xodr') # or other CARLA map that definitely works -param carla_map = 'Town05' +param map = localPath('../../../assets/maps/CARLA/Town10HD_Opt.xodr') # or other CARLA map that definitely works +param carla_map = 'Town10HD_Opt' param render = 0 model scenic.simulators.carla.model @@ -58,7 +58,7 @@ adv_trajectory = [adv_maneuver.startLane, adv_maneuver.connectingLane, adv_maneu ego_spawn_pt = new OrientedPoint in ego_maneuver.startLane.centerline adv_spawn_pt = new OrientedPoint in adv_maneuver.startLane.centerline -# Set a specific vehicle model for the Truck. +# Set a specific vehicle model for the Truck. # The referenceable types of vehicles supported in carla are listed in scenic/simulators/carla/model.scenic # For each vehicle type, the supported models are listed in scenic/simulators/carla/blueprints.scenic ego = new Car at ego_spawn_pt, diff --git a/examples/carla/pedestrian.scenic b/examples/carla/pedestrian.scenic index 3298d69d6..e4338e6ec 100644 --- a/examples/carla/pedestrian.scenic +++ b/examples/carla/pedestrian.scenic @@ -2,9 +2,9 @@ To run this file using the Carla simulator: scenic examples/carla/pedestrian.scenic --2d --model scenic.simulators.carla.model --simulate ''' -param map = localPath('../../assets/maps/CARLA/Town03.xodr') -param carla_map = 'Town03' +param map = localPath('../../assets/maps/CARLA/Town10HD_Opt.xodr') +param carla_map = 'Town10HD_Opt' model scenic.simulators.carla.model ego = new Car -new Pedestrian on visible sidewalk \ No newline at end of file +new Pedestrian on visible sidewalk diff --git a/examples/carla/trafficLights.scenic b/examples/carla/trafficLights.scenic index 17013211f..6e2143da7 100644 --- a/examples/carla/trafficLights.scenic +++ b/examples/carla/trafficLights.scenic @@ -6,12 +6,12 @@ To run this file using the Carla simulator: """ ## SET MAP AND MODEL (i.e. definitions of all referenceable vehicle types, road library, etc) -param map = localPath('../../assets/maps/CARLA/Town01.xodr') # or other CARLA map that definitely works -param carla_map = 'Town01' +param map = localPath('../../assets/maps/CARLA/Town10HD_Opt.xodr') # or other CARLA map that definitely works +param carla_map = 'Town10HD_Opt' model scenic.simulators.carla.model ## CONSTANTS -EGO_MODEL = "vehicle.lincoln.mkz_2017" +EGO_MODEL = "vehicle.nissan.patrol" EGO_SPEED = 10 ## DEFINING BEHAVIORS diff --git a/src/scenic/simulators/carla/blueprints.py b/src/scenic/simulators/carla/blueprints.py index 1293b1b4e..71854fe7b 100644 --- a/src/scenic/simulators/carla/blueprints.py +++ b/src/scenic/simulators/carla/blueprints.py @@ -1,7 +1,36 @@ -"""CARLA blueprints for cars, pedestrians, etc.""" +""" +CARLA blueprints for cars, pedestrians, etc. + +Defines CARLA Actor blueprints for Scenic, with version-specific overrides. + +At import time we detect the installed CARLA Python package version and +select the appropriate sets of blueprint IDs for vehicles, pedestrians, +props, etc. If a blueprint is renamed in a newer CARLA, we map old names +via `oldBlueprintNames`. + +NOTE: CARLA 0.10.x currently ships *no* bicycle, motorcycle, box or +iron-plate props—those appear only in ≤0.9.x. +""" + +from importlib.metadata import PackageNotFoundError, version + +# --------------------------------------------------------------------------- +# Detect CARLA version +# --------------------------------------------------------------------------- + +try: + carla_pkg_version = version("carla") +except PackageNotFoundError: + # during docs builds or no client installed, assume an older version + carla_pkg_version = "0.0.0" + +is_carla_0_10 = carla_pkg_version.startswith("0.10") + +# --------------------------------------------------------------------------- +# Legacy name mappings +# --------------------------------------------------------------------------- #: Mapping from current names of blueprints to ones in old CARLA versions. -#: #: We provide a tuple of old names in case they change more than once. oldBlueprintNames = { "vehicle.dodge.charger_police": ("vehicle.dodge_charger.police",), @@ -11,61 +40,229 @@ "vehicle.ford.mustang": ("vehicle.mustang.mustang",), } -## Vehicle blueprints - -#: blueprints for cars -carModels = [ - "vehicle.audi.a2", - "vehicle.audi.etron", - "vehicle.audi.tt", - "vehicle.bmw.grandtourer", - "vehicle.chevrolet.impala", - "vehicle.citroen.c3", - "vehicle.dodge.charger_police", - "vehicle.jeep.wrangler_rubicon", - "vehicle.lincoln.mkz_2017", - "vehicle.mercedes.coupe", - "vehicle.mini.cooper_s", - "vehicle.ford.mustang", - "vehicle.nissan.micra", - "vehicle.nissan.patrol", - "vehicle.seat.leon", - "vehicle.tesla.model3", - "vehicle.toyota.prius", - "vehicle.volkswagen.t2", -] - -#: blueprints for bicycles -bicycleModels = [ - "vehicle.bh.crossbike", - "vehicle.diamondback.century", - "vehicle.gazelle.omafiets", -] - -#: blueprints for motorcycles -motorcycleModels = [ - "vehicle.harley-davidson.low_rider", - "vehicle.kawasaki.ninja", - "vehicle.yamaha.yzf", -] - -#: blueprints for trucks -truckModels = [ - "vehicle.carlamotors.carlacola", - "vehicle.tesla.cybertruck", -] - -## Prop blueprints - -#: blueprints for trash cans -trashModels = [ - "static.prop.trashcan01", - "static.prop.trashcan02", - "static.prop.trashcan03", - "static.prop.trashcan04", - "static.prop.trashcan05", - "static.prop.bin", -] +# --------------------------------------------------------------------------- +# Version-specific blueprint lists +# --------------------------------------------------------------------------- + +if is_carla_0_10: + # -- CARLA 0.10.x ------------------------------------------------------- + + #: blueprints for cars in CARLA 0.10.x + carModels = [ + "vehicle.taxi.ford", + "vehicle.dodgecop.charger", + "vehicle.dodge.charger", + "vehicle.nissan.patrol", + "vehicle.mini.cooper", + "vehicle.lincoln.mkz", + ] + + #: blueprints for trucks in CARLA 0.10.x + truckModels = [ + "vehicle.ambulance.ford", + "vehicle.sprinter.mercedes", + "vehicle.fuso.mitsubishi", + "vehicle.carlacola.actors", + "vehicle.firetruck.actors", + ] + + #: blueprints for trash cans in CARLA 0.10.x + trashModels = [ + "static.prop.trashcan01", + "static.prop.trashcan02", + "static.prop.trashcan03", + "static.prop.trashcan04", + ] + + #: blueprints for containers in CARLA 0.10.x + containerModels = [ + "static.prop.container", + ] + + #: blueprints for tables in CARLA 0.10.x + tableModels = [ + "static.prop.plastictable", + ] + + #: blueprints for flowerpots in CARLA 0.10.x + plantpotModels = [ + "static.prop.plantpot01", + "static.prop.plantpot02", + "static.prop.plantpot03", + "static.prop.plantpot04", + "static.prop.plantpot05", + "static.prop.plantpot06", + "static.prop.plantpot07", + ] + + #: blueprints for creased boxes in CARLA 0.10.x + creasedboxModels = [ + "static.prop.creasedbox01", + ] + + #: blueprints for benches in CARLA 0.10.x + benchModels = [ + "static.prop.bench01", + "static.prop.bench02", + ] + + #: blueprints for pedestrians in CARLA 0.10.x + walkerModels = [ + "walker.pedestrian.0015", + "walker.pedestrian.0016", + "walker.pedestrian.0017", + "walker.pedestrian.0018", + "walker.pedestrian.0019", + "walker.pedestrian.0020", + "walker.pedestrian.0021", + "walker.pedestrian.0022", + "walker.pedestrian.0023", + "walker.pedestrian.0024", + "walker.pedestrian.0025", + "walker.pedestrian.0026", + "walker.pedestrian.0027", + "walker.pedestrian.0028", + ] + + #: blueprints for bicycles (none in 0.10.x) + bicycleModels = [] + + #: blueprints for motorcycles (none in 0.10.x) + motorcycleModels = [] + + #: blueprints for boxes (none in 0.10.x) + boxModels = [] + + #: blueprints for iron plates (none in 0.10.x) + ironplateModels = [] + +else: + # -- CARLA ≤0.9.x ------------------------------------------------------- + + #: blueprints for cars + carModels = [ + "vehicle.audi.a2", + "vehicle.audi.etron", + "vehicle.audi.tt", + "vehicle.bmw.grandtourer", + "vehicle.chevrolet.impala", + "vehicle.citroen.c3", + "vehicle.dodge.charger_police", + "vehicle.jeep.wrangler_rubicon", + "vehicle.lincoln.mkz_2017", + "vehicle.mercedes.coupe", + "vehicle.mini.cooper_s", + "vehicle.ford.mustang", + "vehicle.nissan.micra", + "vehicle.nissan.patrol", + "vehicle.seat.leon", + "vehicle.tesla.model3", + "vehicle.toyota.prius", + "vehicle.volkswagen.t2", + ] + + #: blueprints for trucks + truckModels = [ + "vehicle.carlamotors.carlacola", + "vehicle.tesla.cybertruck", + ] + + #: blueprints for trash cans + trashModels = [ + "static.prop.trashcan01", + "static.prop.trashcan02", + "static.prop.trashcan03", + "static.prop.trashcan04", + "static.prop.trashcan05", + "static.prop.bin", + ] + + #: blueprints for containers + containerModels = [ + "static.prop.container", + "static.prop.clothcontainer", + "static.prop.glasscontainer", + ] + + #: blueprints for tables + tableModels = [ + "static.prop.table", + "static.prop.plastictable", + ] + + #: blueprints for flowerpots + plantpotModels = [ + "static.prop.plantpot01", + "static.prop.plantpot02", + "static.prop.plantpot03", + "static.prop.plantpot04", + "static.prop.plantpot05", + "static.prop.plantpot06", + "static.prop.plantpot07", + "static.prop.plantpot08", + ] + + #: blueprints for creased boxes + creasedboxModels = [ + "static.prop.creasedbox01", + "static.prop.creasedbox02", + "static.prop.creasedbox03", + ] + + #: blueprints for benches + benchModels = [ + "static.prop.bench01", + "static.prop.bench02", + "static.prop.bench03", + ] + + #: blueprints for pedestrians + walkerModels = [ + "walker.pedestrian.0001", + "walker.pedestrian.0002", + "walker.pedestrian.0003", + "walker.pedestrian.0004", + "walker.pedestrian.0005", + "walker.pedestrian.0006", + "walker.pedestrian.0007", + "walker.pedestrian.0008", + "walker.pedestrian.0009", + "walker.pedestrian.0010", + "walker.pedestrian.0011", + "walker.pedestrian.0012", + "walker.pedestrian.0013", + "walker.pedestrian.0014", + ] + + #: blueprints for bicycles + bicycleModels = [ + "vehicle.bh.crossbike", + "vehicle.diamondback.century", + "vehicle.gazelle.omafiets", + ] + + #: blueprints for motorcycles + motorcycleModels = [ + "vehicle.harley-davidson.low_rider", + "vehicle.kawasaki.ninja", + "vehicle.yamaha.yzf", + ] + + #: blueprints for boxes + boxModels = [ + "static.prop.box01", + "static.prop.box02", + "static.prop.box03", + ] + + #: blueprints for iron plates + ironplateModels = [ + "static.prop.ironplank", + ] + +# --------------------------------------------------------------------------- +# Models shared by all versions +# --------------------------------------------------------------------------- #: blueprints for traffic cones coneModels = [ @@ -117,19 +314,6 @@ "static.prop.trashbag", ] -#: blueprints for containers -containerModels = [ - "static.prop.container", - "static.prop.clothcontainer", - "static.prop.glasscontainer", -] - -#: blueprints for tables -tableModels = [ - "static.prop.table", - "static.prop.plastictable", -] - #: blueprints for traffic barriers barrierModels = [ "static.prop.streetbarrier", @@ -137,18 +321,6 @@ "static.prop.chainbarrierend", ] -#: blueprints for flowerpots -plantpotModels = [ - "static.prop.plantpot01", - "static.prop.plantpot02", - "static.prop.plantpot03", - "static.prop.plantpot04", - "static.prop.plantpot05", - "static.prop.plantpot06", - "static.prop.plantpot07", - "static.prop.plantpot08", -] - #: blueprints for mailboxes mailboxModels = [ "static.prop.mailbox", @@ -159,13 +331,6 @@ "static.prop.gnome", ] -#: blueprints for creased boxes -creasedboxModels = [ - "static.prop.creasedbox01", - "static.prop.creasedbox02", - "static.prop.creasedbox03", -] - #: blueprints for briefcases, suitcases, etc. caseModels = [ "static.prop.travelcase", @@ -173,20 +338,6 @@ "static.prop.guitarcase", ] -#: blueprints for boxes -boxModels = [ - "static.prop.box01", - "static.prop.box02", - "static.prop.box03", -] - -#: blueprints for benches -benchModels = [ - "static.prop.bench01", - "static.prop.bench02", - "static.prop.bench03", -] - #: blueprints for barrels barrelModels = [ "static.prop.barrel", @@ -202,32 +353,7 @@ "static.prop.kiosk_01", ] -#: blueprints for iron plates -ironplateModels = [ - "static.prop.ironplank", -] - #: blueprints for traffic warning signs trafficwarningModels = [ "static.prop.trafficwarning", ] - -## Walker blueprints - -#: blueprints for pedestrians -walkerModels = [ - "walker.pedestrian.0001", - "walker.pedestrian.0002", - "walker.pedestrian.0003", - "walker.pedestrian.0004", - "walker.pedestrian.0005", - "walker.pedestrian.0006", - "walker.pedestrian.0007", - "walker.pedestrian.0008", - "walker.pedestrian.0009", - "walker.pedestrian.0010", - "walker.pedestrian.0011", - "walker.pedestrian.0012", - "walker.pedestrian.0013", - "walker.pedestrian.0014", -] diff --git a/src/scenic/simulators/carla/model.scenic b/src/scenic/simulators/carla/model.scenic index 66433de53..6c307aa42 100644 --- a/src/scenic/simulators/carla/model.scenic +++ b/src/scenic/simulators/carla/model.scenic @@ -19,7 +19,7 @@ Global Parameters: interrupts CARLA to run behaviors, check requirements, etc.), in seconds. Default is 0.1 seconds. snapToGroundDefault (bool): Default value for :prop:`snapToGround` on `CarlaActor` objects. - Default is True if :ref:`2D compatibility mode` is enabled and False otherwise. + Default is True if :ref:`2D compatibility mode` is enabled and False otherwise. weather (str or dict): Weather to use for the simulation. Can be either a string identifying one of the CARLA weather presets (e.g. 'ClearSunset') or a @@ -30,7 +30,7 @@ Global Parameters: (127.0.0.1). port (int): Port on which to connect to CARLA. Default is 2000. timeout (float): Maximum time to wait when attempting to connect to CARLA, in - seconds. Default is 10. + seconds. Default is 60. render (int): Whether or not to have CARLA create a window showing the simulations from the point of view of the ego object: 1 for yes, 0 @@ -76,7 +76,7 @@ map_town = pathlib.Path(globalParameters.map).stem param carla_map = map_town param address = '127.0.0.1' param port = 2000 -param timeout = 10 +param timeout = 60 param render = 1 if globalParameters.render not in [0, 1]: raise ValueError('render param must be either 0 or 1') @@ -187,16 +187,30 @@ class Car(Vehicle): class NPCCar(Car): # no distinction between these in CARLA pass -class Bicycle(Vehicle): - width: 1 - length: 2 - blueprint: Uniform(*blueprints.bicycleModels) - - -class Motorcycle(Vehicle): - width: 1 - length:2 - blueprint: Uniform(*blueprints.motorcycleModels) +if blueprints.bicycleModels: + class Bicycle(Vehicle): + width: 1 + length: 2 + blueprint: Uniform(*blueprints.bicycleModels) +else: + class Bicycle(Vehicle): + def __init__(self, *args, **kwargs): + raise RuntimeError( + f"'Bicycle' object cannot be used: no bicycle blueprints available in CARLA {blueprints.carla_pkg_version}." + ) + + +if blueprints.motorcycleModels: + class Motorcycle(Vehicle): + width: 1 + length:2 + blueprint: Uniform(*blueprints.motorcycleModels) +else: + class Motorcycle(Vehicle): + def __init__(self, *args, **kwargs): + raise RuntimeError( + f"'Motorcycle' object cannot be used: no motorcycle blueprints available in CARLA {blueprints.carla_pkg_version}." + ) class Truck(Vehicle): @@ -302,8 +316,15 @@ class Case(Prop): blueprint: Uniform(*blueprints.caseModels) -class Box(Prop): - blueprint: Uniform(*blueprints.boxModels) +if blueprints.boxModels: + class Box(Prop): + blueprint: Uniform(*blueprints.boxModels) +else: + class Box(Prop): + def __init__(self, *args, **kwargs): + raise RuntimeError( + f"'Box' object cannot be used: no box blueprints available in CARLA {blueprints.carla_pkg_version}." + ) class Bench(Prop): @@ -322,8 +343,15 @@ class Kiosk(Prop): blueprint: Uniform(*blueprints.kioskModels) -class IronPlate(Prop): - blueprint: Uniform(*blueprints.ironplateModels) +if blueprints.ironplateModels: + class IronPlate(Prop): + blueprint: Uniform(*blueprints.ironplateModels) +else: + class IronPlate(Prop): + def __init__(self, *args, **kwargs): + raise RuntimeError( + f"'Iron plate' object cannot be used: no iron plate blueprints available in CARLA {blueprints.carla_pkg_version}." + ) class TrafficWarning(Prop): @@ -411,7 +439,7 @@ def setClosestTrafficLightStatus(vehicle, color, distance=100): color = _utils.scenicToCarlaTrafficLightStatus(color) if color is None: raise RuntimeError('Color must be red/yellow/green/off/unknown.') - + traffic_light = _getClosestTrafficLight(vehicle, distance) if traffic_light is not None: traffic_light.set_state(color) diff --git a/src/scenic/simulators/carla/simulator.py b/src/scenic/simulators/carla/simulator.py index 6469281d7..47fc43569 100644 --- a/src/scenic/simulators/carla/simulator.py +++ b/src/scenic/simulators/carla/simulator.py @@ -17,6 +17,10 @@ import pygame from scenic.core.simulators import SimulationCreationError +from scenic.domains.driving.controllers import ( + PIDLateralController, + PIDLongitudinalController, +) from scenic.domains.driving.simulators import DrivingSimulation, DrivingSimulator from scenic.simulators.carla.blueprints import oldBlueprintNames import scenic.simulators.carla.utils.utils as utils @@ -33,7 +37,7 @@ def __init__( map_path, address="127.0.0.1", port=2000, - timeout=10, + timeout=60, render=True, record="", timestep=0.1, @@ -154,7 +158,8 @@ def setup(self): self.cameraManager = visuals.CameraManager(self.world, egoActor, self.hud) self.cameraManager._transform_index = camPosIndex self.cameraManager.set_sensor(camIndex) - self.cameraManager.set_transform(self.camTransform) + if self.client.get_server_version() != "0.10.0": + self.cameraManager.set_transform(self.camTransform) self.world.tick() ## allowing manualgearshift to take effect # TODO still need this? @@ -302,6 +307,9 @@ def getProperties(self, obj, properties): return values def destroy(self): + # Tick once so CARLA registers any pending spawns, allowing destroy() to clean them up after a partial spawn failure. + self.world.tick() + for obj in self.objects: if obj.carlaActor is not None: if isinstance(obj.carlaActor, carla.Vehicle): @@ -310,6 +318,7 @@ def destroy(self): obj.carlaController.stop() obj.carlaController.destroy() obj.carlaActor.destroy() + if self.render and self.cameraManager: self.cameraManager.destroy_sensor() @@ -317,3 +326,53 @@ def destroy(self): self.world.tick() super().destroy() + + def getLaneFollowingControllers(self, agent): + if self.client.get_server_version() == "0.10.0": + dt = self.timestep + if agent.isCar: + lon_controller = PIDLongitudinalController( + K_P=1.0, K_D=0.2, K_I=1.4, dt=dt + ) + lat_controller = PIDLateralController(K_P=1.0, K_D=0.2, K_I=0.0, dt=dt) + else: + lon_controller = PIDLongitudinalController( + K_P=0.5, K_D=0.05, K_I=0.0, dt=dt + ) + lat_controller = PIDLateralController(K_P=1.0, K_D=0.2, K_I=0.0, dt=dt) + return lon_controller, lat_controller + return super().getLaneFollowingControllers(agent) + + def getTurningControllers(self, agent): + """Get longitudinal and lateral controllers for turning.""" + if self.client.get_server_version() == "0.10.0": + dt = self.timestep + if agent.isCar: + lon_controller = PIDLongitudinalController( + K_P=1.0, K_D=0.2, K_I=1.4, dt=dt + ) + lat_controller = PIDLateralController(K_P=2.0, K_D=0.2, K_I=0.0, dt=dt) + else: + lon_controller = PIDLongitudinalController( + K_P=0.5, K_D=0.05, K_I=0.0, dt=dt + ) + lat_controller = PIDLateralController(K_P=2.0, K_D=0.2, K_I=0.0, dt=dt) + return lon_controller, lat_controller + return super().getTurningControllers(agent) + + def getLaneChangingControllers(self, agent): + """Get longitudinal and lateral controllers for lane changing.""" + if self.client.get_server_version() == "0.10.0": + dt = self.timestep + if agent.isCar: + lon_controller = PIDLongitudinalController( + K_P=1.0, K_D=0.2, K_I=1.4, dt=dt + ) + lat_controller = PIDLateralController(K_P=0.08, K_D=0.3, K_I=0.0, dt=dt) + else: + lon_controller = PIDLongitudinalController( + K_P=0.5, K_D=0.05, K_I=0.0, dt=dt + ) + lat_controller = PIDLateralController(K_P=0.1, K_D=0.3, K_I=0.0, dt=dt) + return lon_controller, lat_controller + return super().getLaneChangingControllers(agent) diff --git a/tests/simulators/carla/test_actions.py b/tests/simulators/carla/test_actions.py index 7914ad04a..112250ed5 100644 --- a/tests/simulators/carla/test_actions.py +++ b/tests/simulators/carla/test_actions.py @@ -14,12 +14,13 @@ except ModuleNotFoundError: pytest.skip("carla package not installed", allow_module_level=True) +from scenic.simulators.carla.blueprints import is_carla_0_10 from tests.utils import compileScenic, sampleScene def checkCarlaPath(): - CARLA_ROOT = os.environ.get("CARLA_ROOT") - if not CARLA_ROOT: + CARLA_ROOT = Path(os.environ.get("CARLA_ROOT", "")) + if not CARLA_ROOT.exists(): pytest.skip("CARLA_ROOT env variable not set.") return CARLA_ROOT @@ -39,11 +40,24 @@ def getCarlaSimulator(getAssetPath): carla_process = None if not isCarlaServerRunning(): CARLA_ROOT = checkCarlaPath() + # decide which startup script to use + ue_script = ( + "CarlaUnreal.sh" + if (CARLA_ROOT / "CarlaUnreal.sh").exists() + else "CarlaUE4.sh" + ) + # and which binary to kill later + exec_name = ( + "CarlaUnreal-Linux-Shipping" + if ue_script == "CarlaUnreal.sh" + else "CarlaUE4-Linux-Shipping" + ) + carla_process = subprocess.Popen( - f"bash {CARLA_ROOT}/CarlaUE4.sh -RenderOffScreen", shell=True + f"bash {CARLA_ROOT / ue_script} -RenderOffScreen", shell=True ) - for _ in range(180): + for _ in range(600): if isCarlaServerRunning(): break time.sleep(1) @@ -55,7 +69,10 @@ def getCarlaSimulator(getAssetPath): base = getAssetPath("maps/CARLA") - def _getCarlaSimulator(town): + def _getCarlaSimulator(town=None): + if town is None: + town = "Town10HD_Opt" if is_carla_0_10 else "Town01" + path = os.path.join(base, f"{town}.xodr") simulator = CarlaSimulator(map_path=path, carla_map=town, timeout=180) return simulator, town, path @@ -63,11 +80,11 @@ def _getCarlaSimulator(town): yield _getCarlaSimulator if carla_process: - subprocess.run("killall -9 CarlaUE4-Linux-Shipping", shell=True) + subprocess.run(f"killall -9 {exec_name}", shell=True) def test_throttle(getCarlaSimulator): - simulator, town, mapPath = getCarlaSimulator("Town01") + simulator, town, mapPath = getCarlaSimulator() code = f""" param map = r'{mapPath}' param carla_map = '{town}' @@ -79,7 +96,7 @@ def test_throttle(getCarlaSimulator): while True: take SetThrottleAction(1) - ego = new Car at (369, -326), with behavior DriveWithThrottle + ego = new Car at (-3.3, -68), with behavior DriveWithThrottle record ego.speed as CarSpeed terminate after 5 steps """ @@ -91,7 +108,7 @@ def test_throttle(getCarlaSimulator): def test_brake(getCarlaSimulator): - simulator, town, mapPath = getCarlaSimulator("Town01") + simulator, town, mapPath = getCarlaSimulator() code = f""" param map = r'{mapPath}' param carla_map = '{town}' @@ -111,8 +128,8 @@ def test_brake(getCarlaSimulator): do DriveWithThrottle() for 2 steps do Brake() for 6 steps - ego = new Car at (369, -326), - with blueprint 'vehicle.toyota.prius', + ego = new Car at (-3.3, -68), + with blueprint 'vehicle.nissan.patrol', with behavior DriveThenBrake record final ego.speed as CarSpeed terminate after 8 steps @@ -121,4 +138,4 @@ def test_brake(getCarlaSimulator): scene = sampleScene(scenario) simulation = simulator.simulate(scene) finalSpeed = simulation.result.records["CarSpeed"] - assert finalSpeed == pytest.approx(0.0, abs=1e-1) + assert finalSpeed == pytest.approx(0.0, abs=2e-1) diff --git a/tests/simulators/carla/test_blueprints.py b/tests/simulators/carla/test_blueprints.py index 4b7dcba25..8f195f536 100644 --- a/tests/simulators/carla/test_blueprints.py +++ b/tests/simulators/carla/test_blueprints.py @@ -47,7 +47,9 @@ def model_blueprint(simulator, mapPath, town, modelType, modelName): param time_step = 1.0/10 model scenic.simulators.carla.model - ego = new {modelType} with blueprint '{modelName}' + ego = new {modelType} with blueprint '{modelName}', + at (-3.3, -68), + with regionContainedIn None terminate after 1 steps """ scenario = compileScenic(code, mode2D=True) @@ -94,5 +96,5 @@ def model_blueprint(simulator, mapPath, town, modelType, modelName): [(type, name) for type, names in model_data.items() for name in names], ) def test_model_blueprints(getCarlaSimulator, modelType, modelName): - simulator, town, mapPath = getCarlaSimulator("Town01") + simulator, town, mapPath = getCarlaSimulator() model_blueprint(simulator, mapPath, town, modelType, modelName)