Commit b729341d authored by perezed's avatar perezed
Browse files

Merge remote-tracking branch 'remotes/origin/WI-001958' into WI-001958

parents 346b5d43 3a0306e3
Loading
Loading
Loading
Loading
Loading
+240 −27
Original line number Diff line number Diff line
@@ -4,19 +4,79 @@ AVP-Commons-PDU-Descriptions {

DEFINITIONS AUTOMATIC TAGS ::= BEGIN  -- AVP-specific common data elements


/** 
 * This DE represents with an unsigned interger value. 
 * Size: 8 bit, 1 Byte
 *
*/
UInt8 ::= INTEGER (0..255)


/** 
 * This DE represents with a signed interger value. 
 * Size: 16 bit, 2 Bytes
 *
*/
Int16 ::= INTEGER (-32768..32767)
Int20 ::= INTEGER (-524288..524287)

/** 
 * This DE represents with an unsigned interger value. 
 * Size: 16 bit, 2 Bytes
 *
*/
UInt16 ::= INTEGER (0..65535)

/** 
 * This DE represents with an unsigned interger value. 
 * Size: 32 bit, 4 Bytes
 *
*/
UInt32 ::= INTEGER (0..4294967295)

/** 
 * This DE represents with an unsigned interger value. 
 * Size: 64 bit, 8 Bytes
 *
*/
UInt64 ::= INTEGER(0..18446744073709551615)

/** 
 * This DE represents a rolling counter 
 * The value shall be set to 0 when starting an application: 
 * This DE is incremented by 1 for each consecutive message. In case of overflow due to the size limit it restarts at 0. 
 *
*/
RollingCounter ::= UInt16

/** 
 * This DE represents a waypoint index 
 * The value shall be set according to the sequence of a path snippet or a complete driving trajectory. 
 * In case of overflow due to the size limit it restarts at 0. 
 *
*/
WaypointIndex ::= UInt16

/** 
 * This DE represents a 2 byte unspecified
 * The value shall be set due to specific requirements between a RVO sytem and vehicles of a dedicated OEM.
 *
*/
OEMSpecificData ::= UInt16

WaypointIndex ::= UInt16

/** 
 * This type represents the container of data elements to indicate the vehicle's overall position in a cartesian coordinate system 
 *
 * It includes the following components: 
 *
 * @field x: The position in x direction
 * 
 * @field y: The position in x direction
 *
 * @field psi: The orientation of the vehicle's driving direction
 *
*/
Pose ::= SEQUENCE { -- Projected to the ground, elevation not considered
                    -- x and y are cartesian coordinates
  x Centimetre,
@@ -26,35 +86,159 @@ Pose ::= SEQUENCE { -- Projected to the ground, elevation not considered
                    -- x (North) axis of the reference coordinate system
}


/** 
 * This DE represents the vehicle's Counter-clockwise orientation in a cartesian coordinate system 
 *
 * The value shall be set to: 
 * - `n` (`n >= 0` and `n <= 62831`) to indicate positive orientation equal to or less than n, and greater than (n-1),
 * - `62832` if the  radian is out of range, i.e. greater than 524287 cm,
 * - `-62833` when the data is unavailable.  Remark: 2* Pi = 6.28318
 *
 * @unit: 0.0001 radian
*/
Psi ::= INTEGER {
    xDirection  (0) -- 0.0001 radian
} (0..62831)        -- Counter-clockwise
                    -- Option: the range and enumerated values can be fine-tuned
    xDirection  (0), 
	outOfRange  (62832),
    unavailable (62833)	
} (0..62833)        			

/** 
 * This DE represents a distance in cm 
 *
 * The value shall be set to: 
 * - `n` (`n > -524287` and `n <= 0`) to indicate negative distance equal to or less than n x 1 cm, and greater than (n-1) x 1 cm,
 * - `n` (`n > 0` and `n < 524287`) to indicate positive distance equal to or less than n x 1 cm, and greater than (n-1) x 1 cm,
 * - `-524287` if the  distance is out of negative range
 * - `524287` if the  distance is out of positive range 
 * - `-524288` when the data is unavailable.
 *
 * @unit: 1 centimeter
*/
Centimetre ::= INTEGER {
	negativeOutOfRange (-524287),
    positiveOutOfRange (524287),
    unavailable        (-524288)  
}
(-524288..524287)

--                                    UNIT     FACTOR
CentimetrePerSecond ::= Int16   -- [cm/s] Option: the range and enumerated values can be fine-tuned
Centimetre ::= Int20            -- [cm]   Option: the range and enumerated values can be fine-tuned
HighResCurvature ::= Int16      -- [1/m]    0.00001 Option: CAM's curvature was not precise enough
Millisecond16 ::= Int16         -- [ms]     1  Option: CPM's relative time might not precise enough
RadPerSecond ::= Int16          -- [rad/s]  0.0001
/** 
 * This DE describes vehicle turning curve with the following information:
 * ```
 *     Value = 1 / Radius * 100000
 * ```
 * wherein radius is the vehicle turning curve radius in metres. 
 * 
 * Positive values indicate a turning curve to the left hand side of the driver.
 * It corresponds to the vehicle coordinate system as defined in ISO 8855 [21].
 *
 * The value shall be set to:
 * - `-32767` for  values smaller than -32767,
 * - `n` (`n > -32767` and `n < 0`) for negative values equal to or less than `n`, and greater than `(n-1)`,
 * - `0` when the vehicle is moving straight,
 * - `n` (`n > 0` and `n < 32767`) for positive values equal to or less than `n`, and greater than `(n-1)`,
 * - `32767`, for values  greater than 1021,
 * - `-32768`, if the information is not available.
 * 
 * @note: The present DE is limited to vehicle types as defined in ISO 8855 [21].
 * 
 * @unit: 1 over 100 000 metres
 */
HighResCurvature ::= INTEGER {
    outOfRangeNegative (-32767),
    straight           (0),
    outOfRangePositive (32767), 
    unavailable        (-32768)
} (-32768..32767)


/**
 * This DE represents the rotational speed of a steering wheel movement 
 *
 * The value shall be set to:
 * - `-32 766` to indicate that the rotational speed is equal to or greater than 3.2766 [rad/s] to the right,
 * - `n` (`n > -32 766` and `n <= 0`) to indicate that the rotation is clockwise (i.e. to the right) and is equal to or less than n x 0,01 rad/s, 
      and greater than (n-1) x 0,01 rad/s,
 * - `n` (`n > 0` and `n < 32 766`) to indicate that the rotation is anti-clockwise (i.e. to the left) and is equal to or less than n x 0,01 rad/s, 
      and greater than (n-1) x 0,01 rad/s,
 * - `32 766` to indicate that the rotational speed is greater than 3.2765 rad/second to the left,
 * - `32 767` to indicate that the information is not available.
 * 
 * @unit:0.0001 [rad/s]. 
*/
RadPerSecond ::= INTEGER {
    negativeOutOfRange (-32766), 
    positiveOutOfRange (32766), 
    unavailable        (-32767)
} (-32767..32766)

/**
 * This DE represents a signed time value, size 2 Bytes.
 * 
 * @unit: 0,001 s   (1 ms)
 */
Millisecond16 ::= Int16      

/**
 * Data element GearEnum optionally describes the desired or actual driving direction of the vehicle in alignment with the signed value of the vehicle speed . 
 * It offers the following signal values:
 * 
 * - 0 - `park`			- P: Vehicle engages P ,
 * - 1 - `backwards`	- R: Vehicle drives backwards ,
 * - 2 - `neutral`		- N: Vehicle engages neutral gear,
 * - 3 - `forwards`		- D: Vehicle drives forwards,
 * - 4 - `unknown`		- unknown gear status. Not used for commanding a vehicle gear position.
 *
 */
GearEnum ::= ENUMERATED {
  park(0),       -- P: Vehicle is in secure standstill, e.g. in PARK gear
  backwards(1),  -- R: Vehicle is driving backwards
  neutral(2),    -- N: Neutral / Driving direction is unknown
  forwards(3),   -- D: Vehicle is driving forwards
  unknown (4)	 -- Do not use as a command: Unknown or faulted gear state from vehicle
  park(0),       
  backwards(1),  
  neutral(2),    
  forwards(3),   
  unknown (4)	
}

/**
 * Data element VidVehicleStateEnum describes the current state in the vehicle identification process .
 * It offers the following signal values:
 * 
 * - 0 - `vehicle-undefined`					- Default value ,
 * - 1 - `vehicle-ready`						- Vehicle is ready to get flashing code ,
 * - 2 - `vehicle-lightflashing-inprogress`		- Vehicle flashing is in progress,
 * - 3 - `vehicle-lightflashing-completed`		- Flashing is finished,
 * - 4 - `vehicle-lightflashing-failed`			- This indicates that the vehicle can’t flash because of vehicle error,
 * - 5 - `vehicle-authorized`					- Vehicle identification was successful and vehicle has switched its state.
 *
 */
VidVehicleStateEnum ::= ENUMERATED {
  vehicle-undefined(0),           			-- Default value
  vehicle-ready(1),               			-- Vehicle is ready to get flashing code
  vehicle-lightflashing-inprogress (2), 	-- Vehicle flashing in progress
  vehicle-lightflashing-completed(3),  		-- Flashing is finished
  vehicle-lightflashing-failed (4), 		-- indicating vehicle can’t flash because of vehicle error
  vehicle-authorized(5)           			-- Vehicle identification was successful and vehicle has switched its state
  vehicle-undefined(0),   
  vehicle-ready(1),        
  vehicle-lightflashing-inprogress (2), 
  vehicle-lightflashing-completed(3),   
  vehicle-lightflashing-failed (4),  
  vehicle-authorized(5)      
}

/**
 * Data element SafetyViolationsEnum reports the outcome of a specific safety cycle.  
 * As a result a violation leads to stopping the vehicle.
 *
 * It offers the following signal values:
 * 
 * - 0 - `no-violation`							- Default value ,
 * - 1 - `no-driving-permission-received`		- Vehicle has not received a driving permission ,
 * - 2 - `last-driving-permission-too-old`		- The driving permission is outdated,
 * - 3 - `crc-violation-clock-sync-response`	- The time synchronization response has an invalid checksum,
 * - 4 - `crc-violation-driving-permission`		- The driving permission has an invalid checksum,
 * - 5 - `expiration-time-violation`			- the allowed time is expired.
 * - 6 - `driving-direction-mismatch`			- wrong driving direction is indcated, plausibility error with speed signal,
 * - 7 - `velocity-violation`					- The speed value is out of the allowed range ,
 * - 8 - `curvature-min-violation`				- The allowed minimal curvature is out of range ,
 * - 9 - `curvature-max-violation`				- The allowed maximal curvature is out of range ,
 * - 10 - `clocks-not-synchronized`				- RVO and vehicle clocks are not synchrionized,
 * - 11 - `expiration-time-too-high`			- The experiation time is out of the allowed range,
 * - 12 - `monitoring`							- Violation monitoring is ongoing.
 */
 SafetyViolationsEnum ::= ENUMERATED {
  no-violation(0),
  no-driving-permission-received(1),
@@ -71,15 +255,44 @@ SafetyViolationsEnum ::= ENUMERATED {
  monitoring(12),
  ...
}
SessionMissionID ::= IA5String (SIZE(17..32)) -- Session ID response, also suitable to carry VIN for special use cases!

Description ::=  IA5String (SIZE(1..200)) -- for detailed  description, eg. of an error 
/** 
 * This DE represents a the identification of an driving session or mission  
 * The value be freely selected as a string of 17 to 32 characters. 
 *
*/
SessionMissionID ::= IA5String (SIZE(17..32)) 

/** 
 * This DE represents a detailed description.
 * It can serve to generate a more extensive, user-friendly description e.g. of an error. 
 * The value be freely selected as a string of 1 to 200 characters. 
 *
*/
Description ::=  IA5String (SIZE(1..200))  

ParkingControlE2EProtection ::= SEQUENCE { -- AUTOSAR Profile 4 e2e protection
/** 
 * This type represents the container of data elements supporting E2E protection mechanisms for the Parking Control messages 
 * It complies with AUTOSAR Profile 4 e2e protection. It protects the body of the message and starts in a byte aligned position in the BTP stream.
 *
 * It includes the following components: 
 *
 * @field length: represents the overall payload of the body container in the Park Control message. Starting point is this data element.
 * 
 * @field rollingCounter: This is a recurring identifier of a Park control message. This identifier is incremented by 1 for the consecutive  message. 
 *                        In case of overflow due to the size limit it restarts at 0.
 *
 * @field dataID: The data element is usable to identify the originating system (RVO or vehicle). It is of free choice;
 *                It is negotiated between the RVO and the vehicle OEM in case they want to identify each other with this signal
 *
 * @field crc32: The CRC is calculated in byte limits of the body container, considering the data element length. The signal crc32 itself is excluded from the payload
 *
*/
ParkingControlE2EProtection ::= SEQUENCE {
  length UInt16,
  rollingCounter UInt16,  
  dataID UInt32,
  crc32 UInt32                        -- Cyclic redundency check, hamming distance >= 6
  crc32 UInt32                     
}

END
+384 −89

File changed.

Preview size limit exceeded, changes collapsed.

+157 −45
Original line number Diff line number Diff line
@@ -19,6 +19,35 @@ PCVM ::= SEQUENCE {
```

### <a name="Pcvm"></a>Pcvm
This type represents the optional container added to the PCVM message mainly as a surrogate for missing static vehicle data that RVO will possibly need.  

 It includes the following components: 

 @ field msgGenerationTime  
 
 @ field sessionID: Represents a 32 character session ID.   				
 
 @ field missionID: Represents a 32 character mission ID.
 
 @ field rollingCounterFromPcim: Represents the rolling counter of last received PCIM.
 
 @ field vehicleState: Relevant vehicle state information.
 
 @ field vidResponse: Represents the current vehicle identification status.
 
 @ field safetyTimeSyncResponse: Represents a functional safety time related container.
 
 @ field safeVehicleTypeConfirmation: Represents a functional safety related container.
 
 @ field vehicleError: Error information. Depending on the given error, the infrastructure either tries to resolve the issue or aborts the mission.
 
 @ field vehicleDebug: Represents optional debug information.
 
 @ field vehicleSafetyFeedback: Represents relevant safety information from vehicle.
 
 @ field vehicleProperties: Represents vehicle-specific data elements as feedback from vehicle to external system.
 
 @ field oemSpecific. Represents an OEM specific 16 bit field for special purposes.

* _msgGenerationTime_ of type [**TimestampIts**](ETSI-ITS-CDD.md#TimestampIts)  OPTIONAL<br>
* _sessionID_ of type [**SessionMissionID**](AVP-Commons-PDU-Descriptions.md#SessionMissionID) <br>
@@ -55,7 +84,7 @@ Pcvm ::= SEQUENCE {
### <a name="VehicleState"></a>VehicleState

* _vehicleStateGenerationTime_ of type [**TimestampIts**](ETSI-ITS-CDD.md#TimestampIts)  OPTIONAL<br>
* _operationMode_ of type [**VehicleOperationModeEnum**](#VehicleOperationModeEnum) <br>
* _operationMode_ of type [**OperationModeEnum**](#OperationModeEnum) <br>
* _gearSelected_ of type [**GearEnum**](AVP-Commons-PDU-Descriptions.md#GearEnum) <br>
* _currentVelocity_ of type [**CentimetrePerSecond**](AVP-Commons-PDU-Descriptions.md#CentimetrePerSecond) <br>
* _currentCurvature_ of type [**HighResCurvature**](AVP-Commons-PDU-Descriptions.md#HighResCurvature) <br>
@@ -65,7 +94,7 @@ Pcvm ::= SEQUENCE {
```asn1
VehicleState ::= SEQUENCE {
  vehicleStateGenerationTime  TimestampIts OPTIONAL,  
  operationMode VehicleOperationModeEnum,             
  operationMode OperationModeEnum,                    
  gearSelected GearEnum,                              
  currentVelocity CentimetrePerSecond,                
  currentCurvature HighResCurvature,                  
@@ -121,12 +150,23 @@ VehicleSafetyFeedback ::= SEQUENCE (SIZE(1..5)) OF VehicleSafetyFeedbackContaine
```

### <a name="VehicleSafetyFeedbackContainer"></a>VehicleSafetyFeedbackContainer
This type represents the optional container added to the PCVM message mainly as a surrogate for missing static vehicle data that RVO will possibly need.  

 It includes the following components:

* _remainingTimeToDrive_ of type [**Millisecond16**](AVP-Commons-PDU-Descriptions.md#Millisecond16) <br>
* _--_ of type [**Option**](#Option) : CPM's relative time unit could be used if -1500..1500 is enough<br>
  Represents the time which the vehicle is allowed to keep driving until brakes must be engaged. Signed value.

* _drivingAllowed_ of type **BOOLEAN** <br>
  True if the vehicle is currently allowed to drive, false if a safety stop happened.

* _safetyViolations_ of type [**SafetyViolationsContainer**](#SafetyViolationsContainer) <br>
  Represents a list of violations which currently lead to stopping the vehicle.

* _currentVehicleSafetyClockTime_ of type [**TimestampIts**](ETSI-ITS-CDD.md#TimestampIts) <br>
  Represents the time when safety component created this container
    

```asn1
VehicleSafetyFeedbackContainer ::= SEQUENCE {
  remainingTimeToDrive Millisecond16,         
@@ -168,18 +208,44 @@ SafeVehicleTypeConfirmation ::= SEQUENCE {
```

### <a name="VehicleProperties"></a>VehicleProperties
This type represents the optional container added to the PCVM message mainly as a surrogate for missing static vehicle data that RVO will possibly need.  

 It includes the following components:

* _basicVehicleClass_ of type [**BasicVehicleClassEnum**](#BasicVehicleClassEnum) <br>
  It shares the vehicle class information to the RVO. 

* _vehicleLength_ of type [**Centimetre**](AVP-Commons-PDU-Descriptions.md#Centimetre) <br>
  Represents the overall vehicle length in (cm).

* _vehicleWheelbase_ of type [**Centimetre**](AVP-Commons-PDU-Descriptions.md#Centimetre) <br>
  Represents the wheelbase value (cm).

* _vehicleRearOverhang_ of type [**Centimetre**](AVP-Commons-PDU-Descriptions.md#Centimetre) <br>
  Represents the rear overhang value (cm). 

* _vehicleWidth_ of type [**Centimetre**](AVP-Commons-PDU-Descriptions.md#Centimetre) <br>
  Represents the overall vehicle width value (cm).  

* _vehicleTireWidth_ of type [**Centimetre**](AVP-Commons-PDU-Descriptions.md#Centimetre) <br>
  Represents a rough vehicle mass value imported fom the CDD.

* _vehicleTrackWidth_ of type [**Centimetre**](AVP-Commons-PDU-Descriptions.md#Centimetre) <br>
  Represents the specified width of tires value (cm). 

* _vehicleMass_ of type [**VehicleMass**](ETSI-ITS-CDD.md#VehicleMass) <br>
  Represents a rough vehicle mass value imported fom the CDD.

* _vehicleSpeedLimit_ of type [**CentimetrePerSecond**](AVP-Commons-PDU-Descriptions.md#CentimetrePerSecond) <br>
  Represents the limit value of the vehicle speed according to the use case, unit in (cm/s).   

* _vehicleCuvatureLimit_ of type [**HighResCurvature**](AVP-Commons-PDU-Descriptions.md#HighResCurvature) <br>
  Represents the maximum curvature for left and right turning (assumed symmetrical).

* _vehicleMaxAngularSteeringRate_ of type [**RadPerSecond**](AVP-Commons-PDU-Descriptions.md#RadPerSecond) <br>
  Represents maximum steering rate for automated operation (rate of road wheel angle).
    

```asn1
VehicleProperties ::= SEQUENCE {
  basicVehicleClass BasicVehicleClassEnum,
@@ -197,15 +263,32 @@ VehicleProperties ::= SEQUENCE {
}
```

### <a name="VehicleOperationModeEnum"></a>VehicleOperationModeEnum
### <a name="OperationModeEnum"></a>OperationModeEnum
This DE saves this state for logging purposes and forwards its content to the backend.

 The value shall be set to:
 - 0 - `unknown(0),
 - 1 - `initializing(1)`  		  - The vehicle is preparing for the mission, but hasn’t entered automted mode yet,
 - 2 - `prepared(2)`      		  - The vehicle is in automted mode, but currently doesn’t follow one of the control interfaces (waypoints, direct control, ...),
 - 3 - `driving(3)`       		  - The vehicle is in automted mode and actively follows one of the control interfaces (waypoints, direct control, ...). It hasn’t reached the end of the given path yet. Also applies if the vehicle stopped temporarily,
 - 4 - `terminating(4)`   		  - The vehicle left automated mode and is terminating related functions,
 - 5 - `suspend (5)` 				  - The vehicle is in a critical error state and requires external operator intervention,
 - 6 - `temp-error (6)`        - The vehicle is in a non-critical error state and is initiating a deceleration into stop and hold, prior to suspend,
 - 7 - `human-in-control (7)`  - Manual control of the vehicle has been taken over ,
 - 8 - `station-hold (8)`		  - The external mfg./customer environment interlocks have taken over and is holding the vehicle from marshalling.

Values:
* **unknown** (0)<br>
* **initializing** (1)<br>
* **prepared** (2)<br>
* **driving** (3)<br>
* **terminating** (4)<br>
* **suspend** (5)<br>
* **temp-error** (6)<br>
* **human-in-control** (7)<br>
* **station-hold** (8)<br>
```asn1
VehicleOperationModeEnum ::= ENUMERATED {
OperationModeEnum ::= ENUMERATED {
  unknown           (0),
  initializing      (1),  		
  prepared          (2),      	
@@ -220,23 +303,52 @@ VehicleOperationModeEnum ::= ENUMERATED {
```

### <a name="VehCodeEnum"></a>VehCodeEnum
This DE saves this state for logging purposes and forwards its content to the backend.

 The value shall be set to:
 - 0 - `unspecified`        		- Any kind of error that is not specified otherwise. Infrastructure aborts the mission,
 - 1 - `pathNotDriveable`  		- The vehicle can’t follow the given waypoints, based on the given DetectedVehiclePose. Infrastructure tries to plan a different path or aborts the mission otherwise,
 - 2 - `onboardVehicleFault` 	- Failure during vehicle onboarding,
 - 3 - `communicationFault`		- vehicle internal comms fault,
 - 4 - `vehicleEgressFault`	  - Failure during vehicle AVP egress or shutdown process.

Values:
* **onboard-vehicle-fault** (2)<br>
* **communication-fault** (3)<br>
* **vehicle-egress-fault** (4)<br>
* **unspecified** (0)<br>
* **pathNotDriveable** (1)<br>
* **onboardVehicleFault** (2)<br>
* **communicationFault** (3)<br>
* **vehicleEgressFault** (4)<br>
```asn1
VehCodeEnum ::= ENUMERATED {
  unspecified         (0),        		
  path-not-driveable(1),  		
  onboard-vehicle-fault (2), 	
  communication-fault (3),		
  vehicle-egress-fault (4),		
  pathNotDriveable    (1),  		
  onboardVehicleFault (2), 	
  communicationFault  (3),	
  vehicleEgressFault  (4),		
  ...
}
```

### <a name="BasicVehicleClassEnum"></a>BasicVehicleClassEnum
This data element specified a generic vehicle class that the RVO has to cope with.

 The value shall be set to:
 - 0 - `none`                    - Not known or unavailable category,
 - 1 - `unknown`                 - Does not fit any other category,
 - 2 - `special`                 - Special use,
 - 3 - `moto`                    - Motorcycle,
 - 4 - `car`                     - Passenger car,
 - 5 - `carOther`                - Four tire single units,
 - 6 - `bus`                     - Buses,
 - 7 - `axleCnt2`                - Two axle, six tire single units,
 - 8 - `axleCnt3`                - Three axle, single units,
 - 9 - `axleCnt4`                - Four or more axle, single unit,
 - 10 - `axleCnt4Trailer`        - Four or less axle, single trailer,
 - 11 - `axleCnt5Trailer`        - Five or less axle, single trailer,
 - 12 - `axleCnt6Trailer`        - Six or more axle, single trailer,
 - 13 - `axleCnt5MultiTrailer`   - Five or less axle, multi-trailer,
 - 14 - `axleCnt6MultiTrailer`   - Six axle, multi-trailer,
 - 15 - `axleCnt7MultiTrailer`   - Seven or more axle, multi-trailer.

Values:
* **none** (0)<br>