Difference between revisions of "Subaru"

From comma wiki
Jump to: navigation, search
Line 2: Line 2:
 
= Status =
 
= Status =
  
Supported models
+
=== Lateral control (steering) ===
 +
 
 +
Openpilot handles steering using EON, Panda and Giraffe or custom wire harness.
 +
 
 +
=== Longitudinal control (accelerator and brakes) ===
 +
 
 +
Eyesight handles longitudinal control using stock ACC. Stop and go support - stop is automatic, go requires ACC resume button
 +
 
 +
=== Supported models ===
  
 
{|
 
{|
Line 29: Line 37:
 
|2018
 
|2018
 
|AU
 
|AU
 +
|-
 +
|}
 +
 +
=== Community supported models ===
 +
{|
 +
! style="text-align:left;"| Model
 +
! Trim
 +
! Year
 +
! Region
 
|-
 
|-
 
|Outback
 
|Outback
Line 67: Line 84:
 
|}
 
|}
  
Main requirements for adding Openpilot support are Eyesight and LKAS. Adding Openpilot support to models not listed means adding a new fingerprint.  
+
Main requirements for adding Openpilot support are Eyesight and LKAS. Adding Openpilot support to models not listed means adding a new fingerprint and may require some PI+feedforward tuning.
 +
 
 +
= TODO =
 +
Pre-global models
 +
 
 +
* Lateral
 +
** CAN messages (DBC) - DONE
 +
** Panda CAN forwarding - DONE
 +
** Panda CAN filtering - DONE
 +
** Panda safety - DONE
 +
** tuning - in progress
 +
** upstream pre-global PR [https://github.com/commaai/openpilot/pull/717 #717] - in progress
 +
 
 +
= Getting started =
  
 
== Installation ==
 
== Installation ==
Line 74: Line 104:
 
* Pre-global - https://www.youtube.com/watch?v=-1Snpp3cQEg
 
* Pre-global - https://www.youtube.com/watch?v=-1Snpp3cQEg
  
== Lateral control (steering) ==
+
=== Required hardware ===
 +
* [https://comma.ai/shop/products/comma-two-devkit Comma Two]
 +
* Subaru Car Harness
 +
 
 +
OR
 +
 
 +
* [https://community.comma.ai/wiki/index.php/Main_Page#EON EON]  from [https://comma.ai/shop/products/eon-gold-dashcam-devkit comma.ai shop]
 +
* Black Panda+Subaru Car Harness
  
Openpilot handles steering using EON, Panda and Giraffe or custom wire harness.
+
== Known issues ==
 +
2020 Outback and possibly other 2020 models require changing following pins on the Subaru Car Harness 26-pin connector:
  
== Longitudinal control (accelerator and brakes) ==
+
Pin 4 -> 10
  
Eyesight handles longitudinal control using stock ACC. Stop and go support - stop is automatic, go requires ACC resume button
+
Pin 6 -> 8
  
= TODO =
+
Pin 8 -> 6
Global
 
* Upstreamable hardware solution for Giraffe relay control - in progress
 
  
Pre-global
+
Pin 10 -> 4
  
* Lateral
+
Pin 18 - > 24
** CAN messages (DBC) - DONE
 
** Panda CAN forwarding - DONE
 
** Panda CAN filtering - DONE
 
** Panda safety - DONE
 
** tuning - in progress
 
** upstream pre-global PR [https://github.com/commaai/openpilot/pull/717 #717] - in progress
 
  
= Getting started =
+
Pin 20 -> 22
  
Required hardware
+
Pin 24 -> 18
* [https://community.comma.ai/wiki/index.php/Main_Page#EON EON]  from [https://comma.ai/shop/products/eon-gold-dashcam-devkit comma.ai shop] (or DIY using OnePlus 3T and cooling method)
 
* [https://community.comma.ai/wiki/index.php/Main_Page#Panda Panda] from [https://comma.ai/shop/products/car-harness comma.ai shop] - Black Panda/Car Harness is recommended
 
  
 
== Adding support for new model ==
 
== Adding support for new model ==
  
Read first
+
=== Read first ===
 
* [https://medium.com/@comma_ai/a-panda-and-a-cabana-how-to-get-started-car-hacking-with-comma-ai-b5e46fae8646 Panda and Cabana - How to get started with car hacking]  
 
* [https://medium.com/@comma_ai/a-panda-and-a-cabana-how-to-get-started-car-hacking-with-comma-ai-b5e46fae8646 Panda and Cabana - How to get started with car hacking]  
 
* [https://medium.com/@energee/add-support-for-your-car-to-comma-ai-openpilot-3d2da8c12647 Add support for your car to Openpilot]
 
* [https://medium.com/@energee/add-support-for-your-car-to-comma-ai-openpilot-3d2da8c12647 Add support for your car to Openpilot]
  
Check if your car fingerprint is already added to any of the forks/branches
+
=== Check if your car fingerprint is already added to any of the forks/branches ===
 
* [https://github.com/bugsy924/openpilot/blob/subaru/selfdrive/car/subaru/values.py subaru]
 
* [https://github.com/bugsy924/openpilot/blob/subaru/selfdrive/car/subaru/values.py subaru]
 
* [https://github.com/martinl/openpilot/blob/subaru-giraffe-devel/selfdrive/car/subaru/values.py subaru-giraffe-devel]
 
* [https://github.com/martinl/openpilot/blob/subaru-giraffe-devel/selfdrive/car/subaru/values.py subaru-giraffe-devel]
 
* [https://github.com/martinl/openpilot/blob/diy-giraffe-devel/selfdrive/car/subaru/values.py diy-giraffe-devel]
 
* [https://github.com/martinl/openpilot/blob/diy-giraffe-devel/selfdrive/car/subaru/values.py diy-giraffe-devel]
  
Porting
+
=== Clone a community fork ===
 
* [https://community.comma.ai/wiki/index.php/Configuring_OpenPilot ssh] into EON
 
* [https://community.comma.ai/wiki/index.php/Configuring_OpenPilot ssh] into EON
* move stock openpilot and set up a fork (choose according to global/pre-global and type of giraffe below)
+
* [https://community.comma.ai/wiki/index.php/Configuring_OpenPilot#Switching_to_a_different_Fork.2FBranch switch to a different fork/branch]
** killall tmux
+
 
** mkdir /data/commaai
+
=== Openpilot community forks and branches to use as base for porting ===
** mv /data/openpilot /data/commaai
+
* Pre-Global (2015-2017)
** mkdir /data/<fork>
+
** [https://github.com/bugsy924/openpilot bugsy924] subaru - supports pre-global models and giraffe, Eyesight on CAN2
** cd /data/<fork>
+
 
** git clone https://github.com/<fork>/openpilot.git
+
* Global (2018+)
** cd openpilot
+
** [https://github.com/martinl/openpilot martinl] subaru-giraffe-devel - supports comma giraffe with relay, Eyesight on CAN2
** git checkout <branch>
+
** [https://github.com/martinl/openpilot martinl] diy-giraffe-devel - supports DIY giraffe, Eyesight on CAN2
** cd /data
 
** ln -sf /data/<fork>/openpilot .
 
** cd /data/openpilot
 
  
* flash panda
+
=== Flash panda ===
 
** cd /data/openpilot/panda/board
 
** cd /data/openpilot/panda/board
 
** killall boardd
 
** killall boardd
 
** make
 
** make
 +
** reboot
  
* test build and start openpilot
+
=== Create fingerprint ===
 +
* Create Openpilot [https://community.comma.ai/wiki/index.php/Creating_Fingerprints fingerprint] for the car
 +
* For global models add fingerprint to IMPREZA as first step in selfdrive/car/subaru/values.py
 +
* Use [https://community.comma.ai/wiki/index.php/Main_Page#Cabana Cabana] to reverse engineer any missing CAN messages required for Openpilot
 +
** DBC files
 +
*** [https://github.com/commaai/opendbc/blob/master/subaru_global_2017.dbc Subaru Global]
 +
*** [https://github.com/commaai/opendbc/blob/master/subaru_outback_2015_eyesight.dbc Subaru Outback 2015]
 +
 
 +
=== General troubleshooting ===
 +
 
 +
Test build and start openpilot
 
** cd /data/openpilot
 
** cd /data/openpilot
 
** make
 
** make
 
** ./launch_openpilot.sh
 
** ./launch_openpilot.sh
  
* kill openpilot running from console
+
Stop openpilot running from console
 
** ssh in (second session)
 
** ssh in (second session)
 
** killall manager.py
 
** killall manager.py
  
* when nothing checks out
+
If everything else fails
 
** restart car, reconnect panda and try again
 
** restart car, reconnect panda and try again
 
* Create Openpilot [https://community.comma.ai/wiki/index.php/Creating_Fingerprints fingerprint] for the car
 
* For global models add fingerprint to IMPREZA as first step in selfdrive/car/subaru/values.py
 
* Use [https://community.comma.ai/wiki/index.php/Main_Page#Cabana Cabana] to reverse engineer any missing CAN messages required for Openpilot
 
** DBC files
 
*** [https://github.com/commaai/opendbc/blob/master/subaru_global_2017.dbc Subaru Global]
 
*** [https://github.com/commaai/opendbc/blob/master/subaru_outback_2015_eyesight.dbc Subaru Outback 2015]
 
 
Openpilot forks and branches to use as base for porting
 
* Pre-Global (2015-2017)
 
** [https://github.com/bugsy924/openpilot bugsy924] subaru - supports pre-global models and giraffe, Eyesight on CAN2
 
 
* Global (2018+)
 
** [https://github.com/martinl/openpilot martinl] subaru-giraffe-devel - supports comma giraffe with relay, Eyesight on CAN2
 
** [https://github.com/martinl/openpilot martinl] diy-giraffe-devel - supports DIY giraffe, Eyesight on CAN2
 
  
 
= Models =
 
= Models =
Line 209: Line 230:
 
* 2006 - SI-cruise Control by laser radar
 
* 2006 - SI-cruise Control by laser radar
 
* 2008 - EyeSight (stereo cameras only)
 
* 2008 - EyeSight (stereo cameras only)
* 2010 - EyeSight ver 2
+
* 2010 - EyeSight Gen 2
* 2014 - EyeSight ver 3
+
* 2014 - EyeSight Gen 3
 +
* 2016 - EyeSight Gen 4
 +
* 2018 - EyeSight Gen 5
 +
* 2020 - EyeSight Gen 6
  
 
Source: [https://www.subaru.co.jp/en/ir/library/pdf/fact/2017/fact_all.pdf Subaru Factbook 2017]
 
Source: [https://www.subaru.co.jp/en/ir/library/pdf/fact/2017/fact_all.pdf Subaru Factbook 2017]
Line 242: Line 266:
  
  
Gen3 - 2016+ Legacy, Outback, Impreza,
+
Gen4 - 2016+ Legacy, Outback, Impreza
 
* LKAS - Active lane keep (lane departure prevention)  
 
* LKAS - Active lane keep (lane departure prevention)  
 
* ACC - Adaptive cruise control
 
* ACC - Adaptive cruise control
Line 251: Line 275:
 
* Sway warning
 
* Sway warning
 
* Preceding vehicle start monitoring function
 
* Preceding vehicle start monitoring function
 +
 +
Gen5 - 2018+ Impreza, Crosstrek (Global platform)
 +
* ACC Hold (with electronic handbrake)
 +
 +
Gen6 - 2020+ Outback
 +
* LCA - Lane centering assist
  
 
Optional extras:
 
Optional extras:
 
* BSD - blind spot detection (2 radars with 75 degree FOV in rear corners)
 
* BSD - blind spot detection (2 radars with 75 degree FOV in rear corners)
 
** LCA - lane change assistance
 
** LCA - lane change assistance
** RCTA - reversing assistance
+
** RCTA - reverse cross traffic assistance
 
* RAB (reverse assisted braking, 4 sonar sensors in rear bumper)
 
* RAB (reverse assisted braking, 4 sonar sensors in rear bumper)
  

Revision as of 13:04, 21 January 2020

Status

Lateral control (steering)

Openpilot handles steering using EON, Panda and Giraffe or custom wire harness.

Longitudinal control (accelerator and brakes)

Eyesight handles longitudinal control using stock ACC. Stop and go support - stop is automatic, go requires ACC resume button

Supported models

Model Trim Year Region
Impreza Limited 2019 US
Impreza 2.0i-L 2018 AU
XV Active 2.0 2018 EU
XV 2.0i-S 2018 AU

Community supported models

Model Trim Year Region
Outback Premium 2.5i 2015 AU
Outback Premium 2.5i 2015 US
Outback Premium 2.5i 2018 US
Outback Premium 2.5i 2016 US
Outback Premium 3.6i 2015 US
Legacy 2.5i 2017 US
Legacy 2018 US

Main requirements for adding Openpilot support are Eyesight and LKAS. Adding Openpilot support to models not listed means adding a new fingerprint and may require some PI+feedforward tuning.

TODO

Pre-global models

  • Lateral
    • CAN messages (DBC) - DONE
    • Panda CAN forwarding - DONE
    • Panda CAN filtering - DONE
    • Panda safety - DONE
    • tuning - in progress
    • upstream pre-global PR #717 - in progress

Getting started

Installation

Required hardware

OR

Known issues

2020 Outback and possibly other 2020 models require changing following pins on the Subaru Car Harness 26-pin connector:

Pin 4 -> 10

Pin 6 -> 8

Pin 8 -> 6

Pin 10 -> 4

Pin 18 - > 24

Pin 20 -> 22

Pin 24 -> 18

Adding support for new model

Read first

Check if your car fingerprint is already added to any of the forks/branches

Clone a community fork

Openpilot community forks and branches to use as base for porting

  • Pre-Global (2015-2017)
    • bugsy924 subaru - supports pre-global models and giraffe, Eyesight on CAN2
  • Global (2018+)
    • martinl subaru-giraffe-devel - supports comma giraffe with relay, Eyesight on CAN2
    • martinl diy-giraffe-devel - supports DIY giraffe, Eyesight on CAN2

Flash panda

    • cd /data/openpilot/panda/board
    • killall boardd
    • make
    • reboot

Create fingerprint

  • Create Openpilot fingerprint for the car
  • For global models add fingerprint to IMPREZA as first step in selfdrive/car/subaru/values.py
  • Use Cabana to reverse engineer any missing CAN messages required for Openpilot

General troubleshooting

Test build and start openpilot

    • cd /data/openpilot
    • make
    • ./launch_openpilot.sh

Stop openpilot running from console

    • ssh in (second session)
    • killall manager.py

If everything else fails

    • restart car, reconnect panda and try again

Models

Legacy/Outback

  • 2015 Eyesight
    • Compatible with Panda and steering controller accepts LKAS message from 2016
    • DBC
  • MY2016 Eyesight
    • Compatible with Panda and steering controller accepts LKAS message sent by OpenPilot
    • ES DBC
  • 2017 Eyesight
    • Compatible with Panda and steering controller accepts LKAS message sent by OpenPilot
    • Stock lane keep assist disabled OpenPilot runs while ACC is active
    • Outback 2015 DBC

WRX

BRZ

XV/Crosstrek

  • 2013
    • Adaptive Cruise Control (ACC) - Not available on tested model
    • Automatic Braking - Not available on tested model
    • Auto Parking Features - Not available on tested model
    • Blind Spot Detection - Not available on tested model
    • Lane Keep Assist System (LKAS/LKA) - Not available on tested model
  • 2018
    • Panda wireless works with Chffr via OBD2. OBD2 connector CAN messages are filtered by CAN gateway (Body Integrated Unit - BIU). Getting unfiltered CAN messages requires CAN bus wiring harness.
    • Adaptive Cruise Control (ACC) - yes
    • Automatic Braking - yes
    • Auto Parking Features - Not available on tested model
    • Blind Spot Detection (BSD) - Not available on tested model (optional extra)
    • Reverse Automatic Braking (RAB) - Not available on tested model (optional extra)
    • Lane Keep Assist System (LKAS/LKA) - yes
    • DBC

Subaru Eyesight

Development timeline

  • 1989 - development started
  • 1999 - Active Driving Assist (ADA) - worlds first
  • 2003 - New ADA (sensor fusion, stereo cameras + radar)
  • 2006 - SI-cruise Control by laser radar
  • 2008 - EyeSight (stereo cameras only)
  • 2010 - EyeSight Gen 2
  • 2014 - EyeSight Gen 3
  • 2016 - EyeSight Gen 4
  • 2018 - EyeSight Gen 5
  • 2020 - EyeSight Gen 6

Source: Subaru Factbook 2017 Eyesight development timeline

Overview

Subaru eyesight was first available in the following years/models and includes the following features:

  • Pre-Collision Warning, Braking, and Throttle Management (Throttle lift-off during emergency braking)
  • Lane Departure Warning
  • Adaptive Cruise Control
  • Dual cameras instead of radar

Gen1 of Eyesight only featured 'notification' systems to alert the driver of lane departure/braking events; Gen2 allows emergency braking at any time. Gen3 includes color cameras, LKAS(2016+) after lane departure and ACC restart after full stops.

Gen2 - 2014 Forester Touring, Legacy

  • Pre-Collision Warning, Braking, and Throttle Management (Throttle lift-off during emergency braking)
  • LDW
  • ACC
  • Stereoscopic cameras


Gen3 (CVT) - 2015 Legacy, Outback, Crosstrek

  • ACC - Adaptive cruise control
  • Constant speed cruise control
  • Pre-collision braking
  • AT rapid start prevention control
  • Lane departure warning
  • Sway warning
  • Preceding vehicle start monitoring function


Gen4 - 2016+ Legacy, Outback, Impreza

  • LKAS - Active lane keep (lane departure prevention)
  • ACC - Adaptive cruise control
  • Constant speed cruise control
  • Pre-collision braking
  • AT rapid start prevention control
  • Lane departure warning
  • Sway warning
  • Preceding vehicle start monitoring function

Gen5 - 2018+ Impreza, Crosstrek (Global platform)

  • ACC Hold (with electronic handbrake)

Gen6 - 2020+ Outback

  • LCA - Lane centering assist

Optional extras:

  • BSD - blind spot detection (2 radars with 75 degree FOV in rear corners)
    • LCA - lane change assistance
    • RCTA - reverse cross traffic assistance
  • RAB (reverse assisted braking, 4 sonar sensors in rear bumper)

More information can be found here

Main CAN bus wiring harness

CAN messages are filtered by CAN gateway (Body Integrated Unit) on the global platform and MY18+ cars. Getting unfiltered CAN messages requires direct connection to main CAN bus. Here are two possible options for directly connecting to CAN bus:

A-pillar

Eyesight compartment

Removing Eyesight cover

Additional Info

(*) Note - Data is unverified until someone can confirm they are correct.