You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					58 lines
				
				2.5 KiB
			
		
		
			
		
	
	
					58 lines
				
				2.5 KiB
			| 
											2 years ago
										 | # tools/car_porting
 | ||
|  | 
 | ||
|  | Check out [this blog post](https://blog.comma.ai/how-to-write-a-car-port-for-openpilot/) for a high-level overview of porting a car.
 | ||
|  | 
 | ||
|  | ## Useful car porting utilities
 | ||
|  | 
 | ||
|  | Testing car ports in your car is very time-consuming. Check out these utilities to do basic checks on your work before running it in your car.
 | ||
|  | 
 | ||
|  | ### [Cabana](/tools/cabana/README.md)
 | ||
|  | 
 | ||
|  | View your car's CAN signals through DBC files, which openpilot uses to parse and create messages that talk to the car.
 | ||
|  | 
 | ||
|  | Example:
 | ||
|  | ```bash
 | ||
|  | > tools/cabana/cabana '1bbe6bf2d62f58a8|2022-07-14--17-11-43'
 | ||
|  | ```
 | ||
|  | 
 | ||
|  | ### [tools/car_porting/auto_fingerprint.py](/tools/car_porting/auto_fingerprint.py)
 | ||
|  | 
 | ||
|  | Given a route and platform, automatically inserts FW fingerprints from the platform into the correct place in fingerprints.py
 | ||
|  | 
 | ||
|  | Example:
 | ||
|  | ```bash
 | ||
|  | > python tools/car_porting/auto_fingerprint.py '1bbe6bf2d62f58a8|2022-07-14--17-11-43' 'SUBARU OUTBACK 6TH GEN'
 | ||
|  | Attempting to add fw version for:  SUBARU OUTBACK 6TH GEN
 | ||
|  | ```
 | ||
|  | 
 | ||
|  | ### [selfdrive/car/tests/test_car_interfaces.py](/selfdrive/car/tests/test_car_interfaces.py)
 | ||
|  | 
 | ||
|  | Finds common bugs for car interfaces, without even requiring a route.
 | ||
|  | 
 | ||
|  | 
 | ||
|  | #### Example: Typo in signal name
 | ||
|  | ```bash
 | ||
|  | > pytest selfdrive/car/tests/test_car_interfaces.py -k subaru  # replace with the brand you are working on
 | ||
|  | 
 | ||
|  | =====================================================================
 | ||
|  | FAILED selfdrive/car/tests/test_car_interfaces.py::TestCarInterfaces::test_car_interfaces_165_SUBARU_LEGACY_7TH_GEN - KeyError: 'CruiseControlOOPS'
 | ||
|  | 
 | ||
|  | ```
 | ||
|  | 
 | ||
|  | ### [tools/car_porting/test_car_model.py](/tools/car_porting/test_car_model.py)
 | ||
|  | 
 | ||
|  | Given a route, runs most of the car interface to check for common errors like missing signals, blocked panda messages, and safety mismatches.
 | ||
|  | 
 | ||
|  | #### Example: panda safety mismatch for gasPressed
 | ||
|  | ```bash
 | ||
|  | > python tools/car_porting/test_car_model.py '4822a427b188122a|2023-08-14--16-22-21'
 | ||
|  | 
 | ||
|  | =====================================================================
 | ||
|  | FAIL: test_panda_safety_carstate (__main__.CarModelTestCase.test_panda_safety_carstate)
 | ||
|  | Assert that panda safety matches openpilot's carState
 | ||
|  | ----------------------------------------------------------------------
 | ||
|  | Traceback (most recent call last):
 | ||
|  |   File "/home/batman/xx/openpilot/openpilot/selfdrive/car/tests/test_models.py", line 380, in test_panda_safety_carstate
 | ||
|  |     self.assertFalse(len(failed_checks), f"panda safety doesn't agree with openpilot: {failed_checks}")
 | ||
|  | AssertionError: 1 is not false : panda safety doesn't agree with openpilot: {'gasPressed': 116}
 | ||
|  | ```
 |