parent
1ba6b0004d
commit
f64c4df8c8
7 changed files with 0 additions and 2268 deletions
@ -1,3 +0,0 @@ |
||||
gen |
||||
node_modules |
||||
package-lock.json |
@ -1,62 +0,0 @@ |
||||
PWD := $(shell pwd)
|
||||
|
||||
SRCS := log.capnp car.capnp
|
||||
|
||||
GENS := gen/cpp/car.capnp.c++ gen/cpp/log.capnp.c++
|
||||
JS := gen/js/car.capnp.js gen/js/log.capnp.js
|
||||
|
||||
UNAME_M ?= $(shell uname -m)
|
||||
|
||||
GENS += gen/c/car.capnp.c gen/c/log.capnp.c gen/c/include/c++.capnp.h gen/c/include/java.capnp.h
|
||||
|
||||
ifeq ($(UNAME_M),x86_64) |
||||
|
||||
ifneq (, $(shell which capnpc-java)) |
||||
GENS += gen/java/Car.java gen/java/Log.java
|
||||
else |
||||
$(warning capnpc-java not found, skipping java build) |
||||
endif |
||||
|
||||
endif |
||||
|
||||
|
||||
ifeq ($(UNAME_M),aarch64) |
||||
CAPNPC=PATH=$(PWD)/../phonelibs/capnp-cpp/aarch64/bin/:$$PATH capnpc
|
||||
else |
||||
CAPNPC=capnpc
|
||||
endif |
||||
|
||||
.PHONY: all |
||||
all: $(GENS) |
||||
js: $(JS) |
||||
|
||||
.PHONY: clean |
||||
clean: |
||||
rm -rf gen
|
||||
rm -rf node_modules
|
||||
rm -rf package-lock.json
|
||||
|
||||
gen/c/%.capnp.c: %.capnp |
||||
@echo "[ CAPNPC C ] $@"
|
||||
mkdir -p gen/c/
|
||||
$(CAPNPC) '$<' -o c:gen/c/
|
||||
|
||||
gen/js/%.capnp.js: %.capnp |
||||
@echo "[ CAPNPC JavaScript ] $@"
|
||||
mkdir -p gen/js/
|
||||
sh ./generate_javascript.sh
|
||||
|
||||
gen/cpp/%.capnp.c++: %.capnp |
||||
@echo "[ CAPNPC C++ ] $@"
|
||||
mkdir -p gen/cpp/
|
||||
$(CAPNPC) '$<' -o c++:gen/cpp/
|
||||
|
||||
gen/java/Car.java gen/java/Log.java: $(SRCS) |
||||
@echo "[ CAPNPC java ] $@"
|
||||
mkdir -p gen/java/
|
||||
$(CAPNPC) $^ -o java:gen/java
|
||||
|
||||
# c-capnproto needs some empty headers
|
||||
gen/c/include/c++.capnp.h gen/c/include/java.capnp.h: |
||||
mkdir -p gen/c/include
|
||||
touch '$@'
|
@ -1,8 +0,0 @@ |
||||
import os |
||||
import capnp |
||||
|
||||
CEREAL_PATH = os.path.dirname(os.path.abspath(__file__)) |
||||
capnp.remove_import_hook() |
||||
|
||||
log = capnp.load(os.path.join(CEREAL_PATH, "log.capnp")) |
||||
car = capnp.load(os.path.join(CEREAL_PATH, "car.capnp")) |
@ -1,385 +0,0 @@ |
||||
using Cxx = import "./include/c++.capnp"; |
||||
$Cxx.namespace("cereal"); |
||||
|
||||
using Java = import "./include/java.capnp"; |
||||
$Java.package("ai.comma.openpilot.cereal"); |
||||
$Java.outerClassname("Car"); |
||||
|
||||
@0x8e2af1e708af8b8d; |
||||
|
||||
# ******* events causing controls state machine transition ******* |
||||
|
||||
struct CarEvent @0x9b1657f34caf3ad3 { |
||||
name @0 :EventName; |
||||
enable @1 :Bool; |
||||
noEntry @2 :Bool; |
||||
warning @3 :Bool; |
||||
userDisable @4 :Bool; |
||||
softDisable @5 :Bool; |
||||
immediateDisable @6 :Bool; |
||||
preEnable @7 :Bool; |
||||
permanent @8 :Bool; |
||||
|
||||
enum EventName @0xbaa8c5d505f727de { |
||||
# TODO: copy from error list |
||||
commIssue @0; |
||||
steerUnavailable @1; |
||||
brakeUnavailable @2; |
||||
gasUnavailable @3; |
||||
wrongGear @4; |
||||
doorOpen @5; |
||||
seatbeltNotLatched @6; |
||||
espDisabled @7; |
||||
wrongCarMode @8; |
||||
steerTempUnavailable @9; |
||||
reverseGear @10; |
||||
buttonCancel @11; |
||||
buttonEnable @12; |
||||
pedalPressed @13; |
||||
cruiseDisabled @14; |
||||
radarCommIssue @15; |
||||
dataNeeded @16; |
||||
speedTooLow @17; |
||||
outOfSpace @18; |
||||
overheat @19; |
||||
calibrationIncomplete @20; |
||||
calibrationInvalid @21; |
||||
controlsMismatch @22; |
||||
pcmEnable @23; |
||||
pcmDisable @24; |
||||
noTarget @25; |
||||
radarFault @26; |
||||
modelCommIssue @27; |
||||
brakeHold @28; |
||||
parkBrake @29; |
||||
manualRestart @30; |
||||
lowSpeedLockout @31; |
||||
plannerError @32; |
||||
ipasOverride @33; |
||||
debugAlert @34; |
||||
steerTempUnavailableMute @35; |
||||
resumeRequired @36; |
||||
preDriverDistracted @37; |
||||
promptDriverDistracted @38; |
||||
driverDistracted @39; |
||||
geofence @40; |
||||
driverMonitorOn @41; |
||||
driverMonitorOff @42; |
||||
preDriverUnresponsive @43; |
||||
promptDriverUnresponsive @44; |
||||
driverUnresponsive @45; |
||||
belowSteerSpeed @46; |
||||
calibrationProgress @47; |
||||
lowBattery @48; |
||||
invalidGiraffeHonda @49; |
||||
vehicleModelInvalid @50; |
||||
controlsFailed @51; |
||||
sensorDataInvalid @52; |
||||
} |
||||
} |
||||
|
||||
# ******* main car state @ 100hz ******* |
||||
# all speeds in m/s |
||||
|
||||
struct CarState { |
||||
errorsDEPRECATED @0 :List(CarEvent.EventName); |
||||
events @13 :List(CarEvent); |
||||
|
||||
# car speed |
||||
vEgo @1 :Float32; # best estimate of speed |
||||
aEgo @16 :Float32; # best estimate of acceleration |
||||
vEgoRaw @17 :Float32; # unfiltered speed from CAN sensors |
||||
yawRate @22 :Float32; # best estimate of yaw rate |
||||
standstill @18 :Bool; |
||||
wheelSpeeds @2 :WheelSpeeds; |
||||
|
||||
# gas pedal, 0.0-1.0 |
||||
gas @3 :Float32; # this is user + computer |
||||
gasPressed @4 :Bool; # this is user pedal only |
||||
|
||||
# brake pedal, 0.0-1.0 |
||||
brake @5 :Float32; # this is user pedal only |
||||
brakePressed @6 :Bool; # this is user pedal only |
||||
brakeLights @19 :Bool; |
||||
|
||||
# steering wheel |
||||
steeringAngle @7 :Float32; # deg |
||||
steeringRate @15 :Float32; # deg/s |
||||
steeringTorque @8 :Float32; # TODO: standardize units |
||||
steeringPressed @9 :Bool; # if the user is using the steering wheel |
||||
|
||||
# cruise state |
||||
cruiseState @10 :CruiseState; |
||||
|
||||
# gear |
||||
gearShifter @14 :GearShifter; |
||||
|
||||
# button presses |
||||
buttonEvents @11 :List(ButtonEvent); |
||||
leftBlinker @20 :Bool; |
||||
rightBlinker @21 :Bool; |
||||
genericToggle @23 :Bool; |
||||
|
||||
# lock info |
||||
doorOpen @24 :Bool; |
||||
seatbeltUnlatched @25 :Bool; |
||||
|
||||
# which packets this state came from |
||||
canMonoTimes @12: List(UInt64); |
||||
|
||||
struct WheelSpeeds { |
||||
# optional wheel speeds |
||||
fl @0 :Float32; |
||||
fr @1 :Float32; |
||||
rl @2 :Float32; |
||||
rr @3 :Float32; |
||||
} |
||||
|
||||
struct CruiseState { |
||||
enabled @0 :Bool; |
||||
speed @1 :Float32; |
||||
available @2 :Bool; |
||||
speedOffset @3 :Float32; |
||||
standstill @4 :Bool; |
||||
} |
||||
|
||||
enum GearShifter { |
||||
unknown @0; |
||||
park @1; |
||||
drive @2; |
||||
neutral @3; |
||||
reverse @4; |
||||
sport @5; |
||||
low @6; |
||||
brake @7; |
||||
} |
||||
|
||||
|
||||
# send on change |
||||
struct ButtonEvent { |
||||
pressed @0 :Bool; |
||||
type @1 :Type; |
||||
|
||||
enum Type { |
||||
unknown @0; |
||||
leftBlinker @1; |
||||
rightBlinker @2; |
||||
accelCruise @3; |
||||
decelCruise @4; |
||||
cancel @5; |
||||
altButton1 @6; |
||||
altButton2 @7; |
||||
altButton3 @8; |
||||
} |
||||
} |
||||
} |
||||
|
||||
# ******* radar state @ 20hz ******* |
||||
|
||||
struct RadarData @0x888ad6581cf0aacb { |
||||
errors @0 :List(Error); |
||||
points @1 :List(RadarPoint); |
||||
|
||||
# which packets this state came from |
||||
canMonoTimes @2 :List(UInt64); |
||||
|
||||
enum Error { |
||||
commIssue @0; |
||||
fault @1; |
||||
wrongConfig @2; |
||||
} |
||||
|
||||
# similar to LiveTracks |
||||
# is one timestamp valid for all? I think so |
||||
struct RadarPoint { |
||||
trackId @0 :UInt64; # no trackId reuse |
||||
|
||||
# these 3 are the minimum required |
||||
dRel @1 :Float32; # m from the front bumper of the car |
||||
yRel @2 :Float32; # m |
||||
vRel @3 :Float32; # m/s |
||||
|
||||
# these are optional and valid if they are not NaN |
||||
aRel @4 :Float32; # m/s^2 |
||||
yvRel @5 :Float32; # m/s |
||||
|
||||
# some radars flag measurements VS estimates |
||||
measured @6 :Bool; |
||||
} |
||||
} |
||||
|
||||
# ******* car controls @ 100hz ******* |
||||
|
||||
struct CarControl { |
||||
# must be true for any actuator commands to work |
||||
enabled @0 :Bool; |
||||
active @7 :Bool; |
||||
|
||||
gasDEPRECATED @1 :Float32; |
||||
brakeDEPRECATED @2 :Float32; |
||||
steeringTorqueDEPRECATED @3 :Float32; |
||||
|
||||
actuators @6 :Actuators; |
||||
|
||||
cruiseControl @4 :CruiseControl; |
||||
hudControl @5 :HUDControl; |
||||
|
||||
struct Actuators { |
||||
# range from 0.0 - 1.0 |
||||
gas @0: Float32; |
||||
brake @1: Float32; |
||||
# range from -1.0 - 1.0 |
||||
steer @2: Float32; |
||||
steerAngle @3: Float32; |
||||
} |
||||
|
||||
struct CruiseControl { |
||||
cancel @0: Bool; |
||||
override @1: Bool; |
||||
speedOverride @2: Float32; |
||||
accelOverride @3: Float32; |
||||
} |
||||
|
||||
struct HUDControl { |
||||
speedVisible @0: Bool; |
||||
setSpeed @1: Float32; |
||||
lanesVisible @2: Bool; |
||||
leadVisible @3: Bool; |
||||
visualAlert @4: VisualAlert; |
||||
audibleAlert @5: AudibleAlert; |
||||
rightLaneVisible @6: Bool; |
||||
leftLaneVisible @7: Bool; |
||||
rightLaneDepart @8: Bool; |
||||
leftLaneDepart @9: Bool; |
||||
|
||||
enum VisualAlert { |
||||
# these are the choices from the Honda |
||||
# map as good as you can for your car |
||||
none @0; |
||||
fcw @1; |
||||
steerRequired @2; |
||||
brakePressed @3; |
||||
wrongGear @4; |
||||
seatbeltUnbuckled @5; |
||||
speedTooHigh @6; |
||||
} |
||||
|
||||
enum AudibleAlert { |
||||
# these are the choices from the Honda |
||||
# map as good as you can for your car |
||||
none @0; |
||||
chimeEngage @1; |
||||
chimeDisengage @2; |
||||
chimeError @3; |
||||
chimeWarning1 @4; |
||||
chimeWarning2 @5; |
||||
chimeWarningRepeat @6; |
||||
chimePrompt @7; |
||||
} |
||||
} |
||||
} |
||||
|
||||
# ****** car param ****** |
||||
|
||||
struct CarParams { |
||||
carName @0 :Text; |
||||
carFingerprint @1 :Text; |
||||
|
||||
enableGasInterceptor @2 :Bool; |
||||
enableCruise @3 :Bool; |
||||
enableCamera @4 :Bool; |
||||
enableDsu @5 :Bool; # driving support unit |
||||
enableApgs @6 :Bool; # advanced parking guidance system |
||||
|
||||
minEnableSpeed @7 :Float32; |
||||
minSteerSpeed @8 :Float32; |
||||
safetyModel @9 :Int16; |
||||
safetyParam @10 :Int16; |
||||
|
||||
steerMaxBP @11 :List(Float32); |
||||
steerMaxV @12 :List(Float32); |
||||
gasMaxBP @13 :List(Float32); |
||||
gasMaxV @14 :List(Float32); |
||||
brakeMaxBP @15 :List(Float32); |
||||
brakeMaxV @16 :List(Float32); |
||||
|
||||
|
||||
# things about the car in the manual |
||||
mass @17 :Float32; # [kg] running weight |
||||
wheelbase @18 :Float32; # [m] distance from rear to front axle |
||||
centerToFront @19 :Float32; # [m] GC distance to front axle |
||||
steerRatio @20 :Float32; # [] ratio between front wheels and steering wheel angles |
||||
steerRatioRear @21 :Float32; # [] rear steering ratio wrt front steering (usually 0) |
||||
|
||||
# things we can derive |
||||
rotationalInertia @22 :Float32; # [kg*m2] body rotational inertia |
||||
tireStiffnessFront @23 :Float32; # [N/rad] front tire coeff of stiff |
||||
tireStiffnessRear @24 :Float32; # [N/rad] rear tire coeff of stiff |
||||
|
||||
longitudinalTuning @25 :LongitudinalPIDTuning; |
||||
lateralTuning :union { |
||||
pid @26 :LateralPIDTuning; |
||||
indi @27 :LateralINDITuning; |
||||
} |
||||
|
||||
steerLimitAlert @28 :Bool; |
||||
|
||||
vEgoStopping @29 :Float32; # Speed at which the car goes into stopping state |
||||
directAccelControl @30 :Bool; # Does the car have direct accel control or just gas/brake |
||||
stoppingControl @31 :Bool; # Does the car allows full control even at lows speeds when stopping |
||||
startAccel @32 :Float32; # Required acceleraton to overcome creep braking |
||||
steerRateCost @33 :Float32; # Lateral MPC cost on steering rate |
||||
steerControlType @34 :SteerControlType; |
||||
radarOffCan @35 :Bool; # True when radar objects aren't visible on CAN |
||||
|
||||
steerActuatorDelay @36 :Float32; # Steering wheel actuator delay in seconds |
||||
openpilotLongitudinalControl @37 :Bool; # is openpilot doing the longitudinal control? |
||||
carVin @38 :Text; # VIN number queried during fingerprinting |
||||
|
||||
struct LateralPIDTuning { |
||||
kpBP @0 :List(Float32); |
||||
kpV @1 :List(Float32); |
||||
kiBP @2 :List(Float32); |
||||
kiV @3 :List(Float32); |
||||
kf @4 :Float32; |
||||
} |
||||
|
||||
struct LongitudinalPIDTuning { |
||||
kpBP @0 :List(Float32); |
||||
kpV @1 :List(Float32); |
||||
kiBP @2 :List(Float32); |
||||
kiV @3 :List(Float32); |
||||
deadzoneBP @4 :List(Float32); |
||||
deadzoneV @5 :List(Float32); |
||||
} |
||||
|
||||
|
||||
struct LateralINDITuning { |
||||
outerLoopGain @0 :Float32; |
||||
innerLoopGain @1 :Float32; |
||||
timeConstant @2 :Float32; |
||||
actuatorEffectiveness @3 :Float32; |
||||
} |
||||
|
||||
|
||||
enum SafetyModels { |
||||
# does NOT match board setting |
||||
noOutput @0; |
||||
honda @1; |
||||
toyota @2; |
||||
elm327 @3; |
||||
gm @4; |
||||
hondaBosch @5; |
||||
ford @6; |
||||
cadillac @7; |
||||
hyundai @8; |
||||
chrysler @9; |
||||
tesla @10; |
||||
subaru @11; |
||||
} |
||||
|
||||
enum SteerControlType { |
||||
torque @0; |
||||
angle @1; |
||||
} |
||||
} |
@ -1,26 +0,0 @@ |
||||
# Copyright (c) 2013-2014 Sandstorm Development Group, Inc. and contributors |
||||
# Licensed under the MIT License: |
||||
# |
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy |
||||
# of this software and associated documentation files (the "Software"), to deal |
||||
# in the Software without restriction, including without limitation the rights |
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
||||
# copies of the Software, and to permit persons to whom the Software is |
||||
# furnished to do so, subject to the following conditions: |
||||
# |
||||
# The above copyright notice and this permission notice shall be included in |
||||
# all copies or substantial portions of the Software. |
||||
# |
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
||||
# THE SOFTWARE. |
||||
|
||||
@0xbdf87d7bb8304e81; |
||||
$namespace("capnp::annotations"); |
||||
|
||||
annotation namespace(file): Text; |
||||
annotation name(field, enumerant, struct, enum, interface, method, param, group, union): Text; |
@ -1,28 +0,0 @@ |
||||
# Copyright (c) 2013-2015 Sandstorm Development Group, Inc. and contributors |
||||
# Licensed under the MIT License: |
||||
# |
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy |
||||
# of this software and associated documentation files (the "Software"), to deal |
||||
# in the Software without restriction, including without limitation the rights |
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
||||
# copies of the Software, and to permit persons to whom the Software is |
||||
# furnished to do so, subject to the following conditions: |
||||
# |
||||
# The above copyright notice and this permission notice shall be included in |
||||
# all copies or substantial portions of the Software. |
||||
# |
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
||||
# THE SOFTWARE. |
||||
|
||||
@0xc5f1af96651f70ea; |
||||
|
||||
annotation package @0x9ee4c8f803b3b596 (file) : Text; |
||||
# Name of the package, such as "org.example.foo", in which the generated code will reside. |
||||
|
||||
annotation outerClassname @0x9b066bb4881f7cd3 (file) : Text; |
||||
# Name of the outer class that will wrap the generated code. |
File diff suppressed because it is too large
Load Diff
Loading…
Reference in new issue