Tesla

From comma wiki
Revision as of 00:21, 20 June 2018 by WashedOut (talk | contribs) (format usb purchase link)

Jump to: navigation, search


Welcome to the Tesla Openpilot Wiki!

We're just getting started filling this out, so feel free to jump in and help document things that need to be here.

This port is currently focused on bringing Openpilot to Teslas from 2014 and earlier, before Autopilot was offered.

Status of Latitudinal control (steering)

Electronic steering is partially present in pre-autopilot Teslas, but disabled. Their Electric Power Assisted Steering units (EPAS) are capable of turning the steering wheel electronically if fed the right commands. With that in mind, we run a cable from a comma.ai Panda to the car's EPAS unit in the frunk. It allows us to:

  1. Intercept messages the car periodically sends to disable the EPAS' steering feature.
  2. Transmit steering commands from a comma.ai EON camera to the EPAS unit.

This setup allows the car to steer autonomously.

Status of Longitudinal control (accelerator and breaks)

Longitudinal control is an ongoing effort. These cars lack electronic pedal control and radar. So the driver must still operate the accelerator and brakes manually (for now). Future work may allow the EON to judge distances with computer vision instead of radar.

Community ToDo List

  • Need a writeup of creating the wiring harness for EPAS bypass
  • Need a writeup of installing the wiring harness
  • Need to compare comma code with ours, regarding continue.sh / launch_openpilo.sh / launch_chffr.sh so that on reboot it fetches our repo (auto update). Not all users want to ssh in to update
  • Open source giraffe hardware
  • Code change to OP port to auto flash panda
  • Add longitudinal control (this is a much larger issue than 1 bullet point)
  • Further testing of EPAS enable spamming
  • Have more Teslas using OP than any other car!!! :)



Confirmed Users with Working OP
1 Kalud 0.4.7
2 zax123 0.3.5 (until next week)
3 Bobby 0.4.7
4 SteveRadich 0.4.7
5 BogGyver
6 RobP
7 Edgar
8 TBD
9 TBD
10 TBD
Bounty claimed!

Here's what you'll need to get OpenPilot working on your pre-AP Tesla

  • Panda (white $99, grey $199)
    • Grey Panda includes high accuracy GPS which OpenPilot may use for more accurate steering in the future. So Grey is recommended but not strictly necessary today.
  • Custom Giraffe and Wiring harness for the Model S.
    • There are 2 variations based on your car manufacture date (before or after May 31, 2013). If you are unsure, check if the OBD connector in your driver footwell is the newer style with metal contacts for pins 1 and 9
    • Contact @appleguru in the #tesla channel on the comma slack to arrange purchase.
    • Approximately $50 in parts for the giraffe, $10 for a case, and $25 in parts for the harness. Will cost more after assembly and shipping

Total price of parts is approximately $1,000.

Instructions to set it all up

(this is very much in progress and not yet complete)

  • Make sure your Eon is up to date This will bring you to the latest version of OpenPilot and update your EON to the latest version of NEOS. If you have problems they aren't Tesla related, check the other wiki / slack places.
  • Install the wiring harness to the EPAS unit and the OBDII port in the driver footwell
  • Install Panda on Giraffe OBDII port (driver footwell)
  • Run the 10 foot USB cable from the EON along your headliner, down the driver side A-Pillar, and down to the Panda
  • Connect EON to Panda via USB cable
  • Install custom tesla branch of OpenPilot on your EON by doing the following:
cd /data
mv openpilot openpilot.stock
git clone https://github.com/jeankalud/openpilot.git
cd openpilot
git checkout tesla
reboot
  • Update your Panda while SSH'ed in and Panda connected to ODB port and EON connected to Panda via USB (perhaps) - automated soon - Do we need to do this without data on bus?
cd /data/openpilot/panda/board
killall boardd
make clean
make recover
make

Enjoy!



First Troubleshooting steps:

  • Try a different USB cable (a shorter one, or one with EMI filter)
  • Make sure you're using the correct tesla repo
  • run make in /data/openpilot/panda/board
  • make sure CAN-H and CAN-L are not reversed.
  • make sure there is a 120 ohms resistor across CAN-H and CAN-L going to the EPAS (power steering)
  • if using a custom harness ensure these:
    • car CAN on panda port 1 (first port)
    • EPAS CAN on last on port 3 (last one)
  • If everything looks correct (right code, right wiring, right everything), you can always try: Shutdown car ("Power Off" in car settings), wait a few sec and try again.
  • If you've broken your source control (wrong git command, etc) you can always backup/check out from scratch:
cd /data
mv openpilot openpilot.bak
git clone https://github.com/jeankalud/openpilot
cd openpilot
git checkout tesla
cd panda/board
make clean
make recover
make 
reboot

How to change to the development branch of the Tesla OP port

Here's the commands to run on your EON to switch to the tesla_devel branch of the code

cd /data/openpilot
git fetch
git checkout tesla_devel
cd /data/openpilot/panda/board
make
reboot



How to transfer files to your EON

Sometimes while testing or debugging issues you may want to manually transfer files to your EON. One easy way to do this is to use the popular FTP client Filezilla.

  1. Enable SSH. Click on "Settings" in OpenPilot and make sure the "Enable SSH" option is turned on.
  2. Next find the ip address of your EON. Under Settings > Wifi settings > Advanced (click on the 3 dots in the upper right hand corner) scroll all the way to the bottom to find IP. (Make sure your EON is on the same wifi as your computer)
  3. Create a file called openpilot.ppk and save the text at the bottom of this section in it.
  4. In Filezilla, go to your Site Manager and create a new entry for your EON and enter the IP address you found in the Host field. The port is 8022. The protocol should be SFTP. Logon Type will be "Key File". User is "root". Key file is the file you just created. Then hit connect.

If you're having issues connecting, check to make sure you can ping your device on the IP you found. If ping doesn't work, then SSH won't either. You can try turning wifi off and then on again if you can't connect.

All the settings listed above can be used to connect via PuTTY as well for command line access. You specify the keyfile in the settings under Connection -> SSH -> Auth -> Private key for authentication

PuTTY-User-Key-File-2: ssh-rsa
Encryption: none
Comment: imported-openssh-key
Public-Lines: 6
AAAAB3NzaC1yc2EAAAADAQABAAABAQC+iXXq30Tq+J5NKat3KWHCzcmwZ55nGh6W
ggAqECa5CasBlM9VeROpVu3beA+5h0MibRgbD4DMtVXBt6gEvZ8nd04E7eLA9LTZ
yFDZ7SkSOVj4oXOQsT0GnJmKrASW5KslTWqVzTfo2XCtZ+004ikLxmyFeBO8NOcE
rW1pa8gFdQDToH9FrA7kgysic/XVESTOoe7XlzRoe/eZacEQ+jtnmFd21A4aEADk
k00Ahjr0uKaJiLUAPatxs2icIXWpgYtfqqtaKF23wSt61OTu6cAwXbOWr3m+IUSR
UO0IRzEIQS3z1jfd1svgzSgSSwZ1Lhj4AoKxIEAIc8qJrO4uymCJ
Private-Lines: 14
AAABAQCEhXr8RxnaC92ecZMOqDuUkCjthsRHlYUczYJrvxwPqsfDq8qg+jtQlmON
N+5H7eolsZcIizncJ2tj9ubnlTNy8anUB9ikuA5pQsfpKuhcAoL9Ot30DzIQvS6V
opr2kEjxAu1VD40JaOLT2OrE02AVDodANYoUZv8e47irkAlosQqvAvw1ZwdV+Jho
/lt5yXOU8FSbYCW24ga6uj1q4bwf96ppMR0S+3VNkgW9ojURdSy2N9HScf3A+91A
yjR65a7I5N1CXNvTKePzJWnSr1JEajcJWMUrgLSVdJ2d/ohZC7N2nUkx3SaQpUHq
+OUedaxQ5VbA89mQaW/4UTUaBg7hAAAAgQDoDUSLEurtBg6HdxteHKHdbiSlW8D8
U98ofU4zLc404P9j05r4z/C2FbXBKhEvaf664hbk4CFMi8gSK+PpsBmxNPe3Cu86
u9i72vH1qWfinwGHK92N5biRLtPwU/miXoug63axM/dPUs64k865C86OUo8ogyHd
zdEU1ZOcbMw9rQAAAIEA0jNiPLxP3A2nrX0keKDI+VHuvOY88gdh0W5BuLMLovOI
Dk9aQFIbBbMuW1OTjHKv9NK+Lrw+YbCFqOGf1dU/UN5gSyE8lX/QFsUGUqUZx574
nJZnOIcy3ONOnQLcvHAQToLFAGUd7PWgP3CtHkt9hEv2koUwL4voikTP1u9Gkc0A
AACAPLxtzP7rcHi76uESO5e1O2/otgWo3ytjpszYv8boH3i42OpNrX0Bkbr+qaU4
3obY4trr4A1pIIyVID32aYq9yEbFTFIhYJaFhhxEzstEL3OQMLakyRS0w9Vs2trg
YpUlSBLIOmPNxonJIfnozphLGOnKNe0RWgGR8BnwhRYzu+k=
Private-MAC: 2af7f5a599fa35e22392b7770a2eb7a0be8718b7


Most of the action is happening in the #tesla channel on the comma slack: https://comma.slack.com

Current Tesla branch URL: https://github.com/jeankalud/openpilot/

Some background info on the tesla port: http://openpilot.robertcotran.com/

Glossary/Acronyms

ABS/iBooster/ESP2
AntiLock Braking System, iBooster - a component that allows brakes to applied via electronic control, Electronic Stability Program. These are parts of the automatic braking system that are found on AP1 and later cars. Using EON to control brakes is not feasibly possible on pre-AP Teslas. There has been some talk of upgrading AP0 Teslas to have this hardware, but this is a major undertaking and requires root access.
AP, AP0, AP1, AP2, AP2.5
Tesla AutoPilot. AP0 or pre-AP means no AutoPilot. AP1 is the version 1 using Mobileye technology. AP2 ditched the Mobileye components and is all Tesla parts and software. AP2.5 is upgraded AP2 hardware.
cabana
Comma's system for playing back and showing the recorded data from uploaded drives.
CAN,CAN-bus
Controller Area Network This is a network system inside cars that allow messages to be sent to different auto components.
Chassis Can
Steering and braking controls are found on this CAN-bus, so this is the main one that OP uses.
DAS
Driver assistance system - the AP1 camera/computer module located behind the windshield on AP1 hardware cars
DBC
DataBase Container These are files that contain the definitions of the messages cars send on the CAN-bus.
Diag, Diag port
Diagnostic port that can be found under the MCU (screen) in a Tesla. Chassis-CAN is able to be accessed from this port.
DPDT
Double Pole Double Throw. It's a type of switch that some use in their wiring harness.
EON
Main hardware component that Comma sells. It's the brains that runs OpenPilot.
EPAS/EPS
Electronic Power (Assisted) Steering. This component allows OP to move the steering wheel.
flash
Process of installing software on embedded hardware.
Giraffe
Piece of hardware that allows the Panda to interface with the OBD port in the car.
IC
Instrument Cluster. The screen behind the steering wheel that has the speedometer on a Tesla.
LKAS
Lane Keeping Assist System. System built into cars to automatically steer to keep the car in the current lane.
MCU
Media Control Unit - The big screen in a Tesla.
MRR
Mid Range Radar. Modern cars use radar units to see objects around the car. Pre-AP Teslas don't have any radar units.
MS, MX, M3
Model S, Model X, Model 3. The current Tesla lineup.
NEO
The predecessor to the EON. A customized OnePlus3 phone with a custom hardware board attached that also can run OpenPilot.
NEOS
The operating system softare that runs on the EON.
OBD, OBDii, OBDII, OBD2
OnBoard Diagnostics This is a port in the driver footwell that would normally provide emissions diagnostics on most cars, but is useless for that on Teslas. For Teslas built after May 31, 2013, Chassis CAN-bus is able to be accessed from this port.
OP
OpenPilot
Panda
Piece of Comma hardware that plugs into the OBD port to access the Chassis CAN-bus to send steering and braking messages from OpenPilot running on the EON.
PCB
Printed Circuit Board
PCM
Powertrain Control Module. This component basically tells the car how much power to put out to make the car go.
PR, pull request, merge
Pull requests or merge refers to a request to integrate code written by others to be "pulled" into the OpenPilot software maintained by Comma.
Repo, git repo
Repository where software is stored. The code for the Tesla version of OpenPilot currently sits in a different repo than the main OpenPilot code.
root, root access
Process of gaining access into the Tesla sofware system at a root level that allows access internal diagnostic not normally available and also allows for changes to be made to the Tesla software.
SCCM
Steering Column Control Module - This component is part of the steering column and controls all the messages sent from the buttons on the steering wheel as well as the cruise control stalk.
SOC
State Of Charge. The percent of power left in your car's battery pack.
SSH
Secure SHell - a method of connecting to your EON in order to be able to make changes to it and issue commands for it to run.