Automotive Vehicle Source
Node ID: vehicle · Role: Source · Realtime config: no
Description
High-level vehicle CAN source with built-in DBC-based presets for specific car models. Decodes wheel speeds, steering angle, and other signals into VehicleSpeed and VehicleState data.
Inputs / Outputs
- Inputs: (none)
- Outputs:
VehicleSpeed, VehicleState
Config aliases
AutomotiveVehicleSource, vehicle
Properties
The following fields are exposed in the node’s Properties panel in the UI. Types map to UI widgets (e.g. string → text input, number → numeric, boolean → toggle, select → dropdown, json → JSON editor).
| Key | Label | Type | Default | Options | Description / Notes |
canInterface | CAN Interface | select | PeakCAN | PeakCAN, Vector, Internal | CAN adapter family: PeakCAN (PCAN), Vector (CANalyzer / XL), or Internal (built-in CAN). |
baudrate | Baudrate | number | 500000 | — | CAN bus speed in bits per second (500000 = 500 kbit/s, standard for most passenger cars). |
channel | Channel | number | 0 | — | Hardware channel index on the selected adapter (0 = first channel). |
debug | Debug Output | boolean | false | — | Enable verbose logging of decoded CAN frames and derived vehicle state. |
Subtypes
| Value | Display name | Extra properties |
Minimal | Minimal | 7 field(s) |
External | External (with Steering) | 13 field(s) |
Citroen | Preset: Citroen | 1 field(s) |
Cupra | Preset: Cupra | 1 field(s) |
Honda Envix | Preset: Honda Envix | 1 field(s) |
Hyundai | Preset: Hyundai | 1 field(s) |
Picasso | Preset: Picasso | 1 field(s) |
R56 | Preset: R56 | 1 field(s) |
Subaru | Preset: Subaru | 1 field(s) |
Tesla Model 3 | Preset: Tesla Model 3 | none |
Subtype: Minimal — Minimal
| Key | Label | Type | Default | Description / Notes |
speedCanId | Speed CAN ID | number | 0 | CAN ID (decimal) of the frame carrying vehicle speed (e.g. 599 for Tesla Model 3 DI_speed). |
speedStartBit | Speed Start Bit | number | 0 | Bit position where the speed signal starts (LSB-first numbering, as per DBC). Bit 0 = LSB of byte 0. |
speedBitsLength | Speed Length (bits) | number | 8 | Length of the speed signal in bits. May cross byte boundaries. |
speedScale | Speed Scale (kph per bit) | number | 1.0 | Scale factor applied to the raw value, in kph per bit. Output is converted to m/s internally. |
speedOffset | Speed Offset (kph) | number | 0.0 | Offset added to the scaled raw value, in kph. |
speedIsBigEndian | Speed Big Endian | boolean | false | Byte order. Motorola DBC signals = big endian; Intel DBC signals = little endian. |
speedIsSigned | Speed Signed | boolean | false | Treat the bit field as a signed two’s-complement integer (e.g. for signals that can go negative). |
Subtype: External — External (with Steering)
| Key | Label | Type | Default | Description / Notes |
speedCanId | Speed CAN ID | number | 0 | CAN ID (decimal) carrying vehicle speed. |
speedStartByte | Speed Start Byte | number | 0 | Byte offset of the speed field in the payload. |
speedLength | Speed Length (bytes) | number | 1 | Length of the speed field in bytes (1, 2, or 4). |
speedScale | Speed Scale | number | 1.0 | Scale factor applied to the raw speed value. |
speedOffset | Speed Offset | number | 0.0 | Offset added to the scaled speed value. |
speedIsBigEndian | Speed Big Endian | boolean | false | Byte order of the multi-byte speed value. |
steeringCanId | Steering CAN ID | number | 0 | CAN ID (decimal) carrying the steering angle. |
steeringStartByte | Steering Start Byte | number | 0 | Byte offset of the steering field in the payload. |
steeringLength | Steering Length (bytes) | number | 1 | Length of the steering field in bytes. |
steeringScale | Steering Scale | number | 1.0 | Scale factor applied to the raw steering value to obtain radians. |
steeringOffset | Steering Offset | number | 0.0 | Offset added to the scaled steering value (radians). |
wheelBase | Wheel Base (m) | number | 2.9 | Vehicle wheelbase in meters. Used by the bicycle / Ackermann vehicle model. |
trackWidth | Track Width (m) | number | 1.6 | Vehicle track width in meters. Used by the vehicle model. |
Subtype: Citroen — Preset: Citroen
| Key | Label | Type | Default | Options | Description / Notes |
driveModel | Drive Model | select | Differential | Differential, Ackermann, SimpleAckermann | — |
Subtype: Cupra — Preset: Cupra
| Key | Label | Type | Default | Options | Description / Notes |
driveModel | Drive Model | select | Differential | Differential, Ackermann, SimpleAckermann | — |
Subtype: Honda Envix — Preset: Honda Envix
| Key | Label | Type | Default | Options | Description / Notes |
driveModel | Drive Model | select | Differential | Differential, Ackermann, SimpleAckermann | — |
Subtype: Hyundai — Preset: Hyundai
| Key | Label | Type | Default | Options | Description / Notes |
driveModel | Drive Model | select | Differential | Differential, Ackermann, SimpleAckermann | — |
Subtype: Picasso — Preset: Picasso
| Key | Label | Type | Default | Options | Description / Notes |
driveModel | Drive Model | select | Differential | Differential, Ackermann, SimpleAckermann | — |
Subtype: R56 — Preset: R56
| Key | Label | Type | Default | Options | Description / Notes |
driveModel | Drive Model | select | Differential | Differential, Ackermann, SimpleAckermann | — |
Subtype: Subaru — Preset: Subaru
| Key | Label | Type | Default | Options | Description / Notes |
driveModel | Drive Model | select | Differential | Differential, Ackermann, SimpleAckermann | — |
Example node definition
A full node definition in config.json looks like the block below. Paste it under the sources key of your config, keyed by the node’s instance name (any identifier; it doesn’t have to match the node ID).
{
"sources": {
"vehicle": {
"outEndpoint": "inproc://vehicle_data",
"type": "Minimal",
"settings": {
"baudrate": 500000,
"canInterface": "PeakCAN",
"channel": 0,
"debug": false,
"speedCanId": 0,
"speedStartBit": 0,
"speedBitsLength": 8,
"speedScale": 1.0,
"speedOffset": 0.0,
"speedIsBigEndian": false,
"speedIsSigned": false
}
}
}
}
Field reference
| Field | Purpose |
outEndpoint | ZMQ / inproc endpoint this source binds to publish its output. The runtime auto-generates one if omitted. |
type | Subtype / backend selector. See the Subtypes section above for valid values. |
settings | All user-configurable fields — see the Properties table above. |
Connections can also be declared at the top-level connections array when settings.explicitConnections is true, as an alternative to filling inputEndpoints on each node.
Loading documentation…