Merge remote-tracking branch 'upstream/master' into lta

pull/30109/head
Shane Smiskol 2 years ago
commit d610aa336d
  1. 7
      .devcontainer/Dockerfile
  2. 23
      .devcontainer/container_post_create.sh
  3. 8
      .devcontainer/container_post_start.sh
  4. 18
      .devcontainer/host_setup.sh
  5. 1
      selfdrive/car/toyota/values.py
  6. 8
      tools/sim/bridge/common.py
  7. 4
      tools/sim/lib/common.py
  8. 4
      tools/sim/lib/keyboard_ctrl.py
  9. 9
      tools/sim/lib/simulated_car.py

@ -1,8 +1,13 @@
FROM ghcr.io/commaai/openpilot-base:latest FROM ghcr.io/commaai/openpilot-base:latest
RUN apt update && apt install -y vim net-tools usbutils htop ripgrep tmux RUN apt update && apt install -y vim net-tools usbutils htop ripgrep tmux wget mesa-utils xvfb libxtst6 libxv1 libglu1-mesa libegl1-mesa
RUN pip install ipython jupyter jupyterlab RUN pip install ipython jupyter jupyterlab
RUN cd /tmp && \
ARCH=$(arch | sed s/aarch64/arm64/ | sed s/x86_64/amd64/) && \
curl -L -o virtualgl.deb "https://downloads.sourceforge.net/project/virtualgl/3.1/virtualgl_3.1_$ARCH.deb" && \
dpkg -i virtualgl.deb
USER batman USER batman
RUN cd $HOME && \ RUN cd $HOME && \

@ -3,17 +3,34 @@
TARGET_USER=batman TARGET_USER=batman
source .devcontainer/.host/.env source .devcontainer/.host/.env
# override display flag for mac # override display flag for mac hosts
if [[ $HOST_OS == darwin ]]; then if [[ $HOST_OS == darwin ]]; then
echo "Setting up DISPLAY override for macOS..." echo "Setting up DISPLAY override for macOS..."
cat <<EOF >> /home/$TARGET_USER/.bashrc cat <<EOF >> /home/$TARGET_USER/.bashrc
if [ -n "\$DISPLAY" ]; then source .devcontainer/.host/.env
DISPLAY_NUM=\$(echo "\$DISPLAY" | awk -F: '{print \$NF}') if [ -n "\$HOST_DISPLAY" ]; then
DISPLAY_NUM=\$(echo "\$HOST_DISPLAY" | awk -F: '{print \$NF}')
export DISPLAY=host.docker.internal:\$DISPLAY_NUM export DISPLAY=host.docker.internal:\$DISPLAY_NUM
fi fi
EOF EOF
fi fi
# setup virtualgl for mac hosts
if [[ $HOST_OS == darwin ]]; then
echo "Setting up virtualgl for macOS..."
cat <<EOF >> /home/$TARGET_USER/.bashrc
if [ -n "\$HOST_DISPLAY" ]; then
export VGL_PORT=10000
export VGL_CLIENT=host.docker.internal
export VGL_COMPRESS=rgb
export VGL_DISPLAY=:99
export VGL_FPS=60
# prevent vglrun from running exec
alias exec=:; source vglrun :; unalias exec
fi
EOF
fi
# These lines are temporary, to remain backwards compatible with old devcontainers # These lines are temporary, to remain backwards compatible with old devcontainers
# that were running as root and therefore had their caches written as root # that were running as root and therefore had their caches written as root
sudo chown -R $TARGET_USER: /tmp/scons_cache sudo chown -R $TARGET_USER: /tmp/scons_cache

@ -1,7 +1,15 @@
#!/usr/bin/env bash #!/usr/bin/env bash
source .devcontainer/.host/.env
# setup safe directories for submodules # setup safe directories for submodules
SUBMODULE_DIRS=$(git config --file .gitmodules --get-regexp path | awk '{ print $2 }') SUBMODULE_DIRS=$(git config --file .gitmodules --get-regexp path | awk '{ print $2 }')
for DIR in $SUBMODULE_DIRS; do for DIR in $SUBMODULE_DIRS; do
git config --global --add safe.directory "$PWD/$DIR" git config --global --add safe.directory "$PWD/$DIR"
done done
# virtual display for virtualgl
if [[ "$HOST_OS" == "darwin" ]] && [[ -n "$HOST_DISPLAY" ]]; then
echo "Starting virtual display at :99 ..."
tmux new-session -d -s fakedisplay Xvfb :99 -screen 0 1920x1080x24
fi

@ -2,6 +2,7 @@
# pull base image # pull base image
if [[ -z $USE_LOCAL_IMAGE ]]; then if [[ -z $USE_LOCAL_IMAGE ]]; then
echo "Updating openpilot_base image if needed..."
docker pull ghcr.io/commaai/openpilot-base:latest docker pull ghcr.io/commaai/openpilot-base:latest
fi fi
@ -27,3 +28,20 @@ fi
HOST_INFO_FILE=".devcontainer/.host/.env" HOST_INFO_FILE=".devcontainer/.host/.env"
SYSTEM=$(uname -s | tr '[:upper:]' '[:lower:]') SYSTEM=$(uname -s | tr '[:upper:]' '[:lower:]')
echo "HOST_OS=\"$SYSTEM\"" > $HOST_INFO_FILE echo "HOST_OS=\"$SYSTEM\"" > $HOST_INFO_FILE
echo "HOST_DISPLAY=\"$DISPLAY\"" >> $HOST_INFO_FILE
# run virtualgl if macos
if [[ $SYSTEM == "darwin" ]]; then
echo
if [[ -f /opt/VirtualGL/bin/vglclient ]]; then
echo "Starting VirtualGL client at port 10000..."
VGL_LOG_FILE=".devcontainer/.host/.vgl/vglclient.log"
mkdir -p "$(dirname $VGL_LOG_FILE)"
/opt/VirtualGL/bin/vglclient -l "$VGL_LOG_FILE" -display "$DISPLAY" -port 10000 -detach
else
echo "VirtualGL not found. GUI tools may not work properly. Some GUI tools require OpenGL to work properly. To use them with XQuartz on mac, VirtualGL needs to be installed. To install it run:"
echo
echo " brew install --cask virtualgl"
echo
fi
fi

@ -1653,6 +1653,7 @@ FW_VERSIONS = {
(Ecu.engine, 0x700, None): [ (Ecu.engine, 0x700, None): [
b'\x01896634A88100\x00\x00\x00\x00', b'\x01896634A88100\x00\x00\x00\x00',
b'\x01896634AJ2000\x00\x00\x00\x00', b'\x01896634AJ2000\x00\x00\x00\x00',
b'\x01896634A89100\x00\x00\x00\x00',
], ],
(Ecu.fwdRadar, 0x750, 0xf): [ (Ecu.fwdRadar, 0x750, 0xf): [
b'\x018821F0R03100\x00\x00\x00\x00', b'\x018821F0R03100\x00\x00\x00\x00',

@ -109,6 +109,8 @@ Ignition: {self.simulator_state.ignition} Engaged: {self.simulator_state.is_enga
throttle_op = steer_op = brake_op = 0.0 throttle_op = steer_op = brake_op = 0.0
self.simulator_state.cruise_button = 0 self.simulator_state.cruise_button = 0
self.simulator_state.left_blinker = False
self.simulator_state.right_blinker = False
throttle_manual = steer_manual = brake_manual = 0. throttle_manual = steer_manual = brake_manual = 0.
@ -131,6 +133,11 @@ Ignition: {self.simulator_state.ignition} Engaged: {self.simulator_state.is_enga
self.simulator_state.cruise_button = CruiseButtons.CANCEL self.simulator_state.cruise_button = CruiseButtons.CANCEL
elif m[1] == "main": elif m[1] == "main":
self.simulator_state.cruise_button = CruiseButtons.MAIN self.simulator_state.cruise_button = CruiseButtons.MAIN
elif m[0] == "blinker":
if m[1] == "left":
self.simulator_state.left_blinker = True
elif m[1] == "right":
self.simulator_state.right_blinker = True
elif m[0] == "ignition": elif m[0] == "ignition":
self.simulator_state.ignition = not self.simulator_state.ignition self.simulator_state.ignition = not self.simulator_state.ignition
elif m[0] == "reset": elif m[0] == "reset":
@ -140,6 +147,7 @@ Ignition: {self.simulator_state.ignition} Engaged: {self.simulator_state.is_enga
self.simulator_state.user_brake = brake_manual self.simulator_state.user_brake = brake_manual
self.simulator_state.user_gas = throttle_manual self.simulator_state.user_gas = throttle_manual
self.simulator_state.user_torque = steer_manual * 10000
steer_manual = steer_manual * -40 steer_manual = steer_manual * -40

@ -49,9 +49,13 @@ class SimulatorState:
self.user_gas: float = 0 self.user_gas: float = 0
self.user_brake: float = 0 self.user_brake: float = 0
self.user_torque: float = 0
self.cruise_button = 0 self.cruise_button = 0
self.left_blinker = False
self.right_blinker = False
@property @property
def speed(self): def speed(self):
return math.sqrt(self.velocity.x ** 2 + self.velocity.y ** 2 + self.velocity.z ** 2) return math.sqrt(self.velocity.x ** 2 + self.velocity.y ** 2 + self.velocity.z ** 2)

@ -67,6 +67,10 @@ def keyboard_poll_thread(q: 'Queue[str]'):
q.put("brake_%f" % 1.0) q.put("brake_%f" % 1.0)
elif c == 'd': elif c == 'd':
q.put("steer_%f" % -0.15) q.put("steer_%f" % -0.15)
elif c == 'z':
q.put("blinker_left")
elif c == 'x':
q.put("blinker_right")
elif c == 'i': elif c == 'i':
q.put("ignition") q.put("ignition")
elif c == 'r': elif c == 'r':

@ -59,7 +59,7 @@ class SimulatedCar:
msg.append(self.packer.make_can_msg("GEARBOX", 0, {"GEAR": 4, "GEAR_SHIFTER": 8})) msg.append(self.packer.make_can_msg("GEARBOX", 0, {"GEAR": 4, "GEAR_SHIFTER": 8}))
msg.append(self.packer.make_can_msg("GAS_PEDAL_2", 0, {})) msg.append(self.packer.make_can_msg("GAS_PEDAL_2", 0, {}))
msg.append(self.packer.make_can_msg("SEATBELT_STATUS", 0, {"SEATBELT_DRIVER_LATCHED": 1})) msg.append(self.packer.make_can_msg("SEATBELT_STATUS", 0, {"SEATBELT_DRIVER_LATCHED": 1}))
msg.append(self.packer.make_can_msg("STEER_STATUS", 0, {})) msg.append(self.packer.make_can_msg("STEER_STATUS", 0, {"STEER_TORQUE_SENSOR": simulator_state.user_torque}))
msg.append(self.packer.make_can_msg("STEERING_SENSORS", 0, {"STEER_ANGLE": simulator_state.steering_angle})) msg.append(self.packer.make_can_msg("STEERING_SENSORS", 0, {"STEER_ANGLE": simulator_state.steering_angle}))
msg.append(self.packer.make_can_msg("VSA_STATUS", 0, {})) msg.append(self.packer.make_can_msg("VSA_STATUS", 0, {}))
msg.append(self.packer.make_can_msg("STANDSTILL", 0, {"WHEELS_MOVING": 1 if simulator_state.speed >= 1.0 else 0})) msg.append(self.packer.make_can_msg("STANDSTILL", 0, {"WHEELS_MOVING": 1 if simulator_state.speed >= 1.0 else 0}))
@ -68,7 +68,12 @@ class SimulatedCar:
msg.append(self.packer.make_can_msg("DOORS_STATUS", 0, {})) msg.append(self.packer.make_can_msg("DOORS_STATUS", 0, {}))
msg.append(self.packer.make_can_msg("CRUISE_PARAMS", 0, {})) msg.append(self.packer.make_can_msg("CRUISE_PARAMS", 0, {}))
msg.append(self.packer.make_can_msg("CRUISE", 0, {})) msg.append(self.packer.make_can_msg("CRUISE", 0, {}))
msg.append(self.packer.make_can_msg("SCM_FEEDBACK", 0, {"MAIN_ON": 1})) msg.append(self.packer.make_can_msg("SCM_FEEDBACK", 0,
{
"MAIN_ON": 1,
"LEFT_BLINKER": simulator_state.left_blinker,
"RIGHT_BLINKER": simulator_state.right_blinker
}))
msg.append(self.packer.make_can_msg("POWERTRAIN_DATA", 0, msg.append(self.packer.make_can_msg("POWERTRAIN_DATA", 0,
{ {
"ACC_STATUS": int(simulator_state.is_engaged), "ACC_STATUS": int(simulator_state.is_engaged),

Loading…
Cancel
Save