intravehicular communication - uavcan · 2019. 6. 25. · iot, general robotics, industrial...

Post on 25-Sep-2020

0 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Intravehicular communication

IoT,general robotics, industrial automation

Constrained, cheap toverify & validate

Flexible, hard toverify & validate

High-level,abstract

Low-level,high coupling

Legacy Non-viable options

Modernsoftware-defined

vehicles

IoT,general robotics, industrial automation

Constrained, cheap toverify & validate

Flexible, hard toverify & validate

High-level,abstract

Low-level,high couplingRC PWM...

DDS

Legacy Non-viable options

Modernsoftware-defined

vehicles

IoT,general robotics, industrial automation

Constrained, cheap toverify & validate

Flexible, hard toverify & validate

High-level,abstract

Low-level,high couplingRC PWM...

CANopen,CANaerospace

MQTT

Legacy

ARINC 429

Non-viable options

Modernsoftware-defined

vehicles

DDS

Modernsoftware-defined

vehicles

IoT,general robotics, industrial automation

Constrained, cheap toverify & validate

Flexible, hard toverify & validate

High-level,abstract

Low-level,high couplingRC PWM...

CANopen,CANaerospace

MQTT

Legacy

ARINC 429

Non-viable options

AFDX

DDS

Modernsoftware-defined

vehicles

IoT,general robotics, industrial automation

Constrained, cheap toverify & validate

Flexible, hard toverify & validate

High-level,abstract

Low-level,high couplingRC PWM...

CANopen,CANaerospace

MQTT

Legacy

ARINC 429

TCPI2C

Non-viable options

AFDX

DDS

IoT,general robotics, industrial automation

Modernsoftware-defined

vehiclesConstrained, cheap toverify & validate

Flexible, hard toverify & validate

High-level,abstract

Low-level,high couplingRC PWM...

AFDX

CANopen,CANaerospace

UAVCAN MQTT

Legacy

ARINC 429

TCPI2C

Non-viable options

DDS

Core design goals● Real-time● Viable for safety-critical systems● Low memory footprint● Low overhead● Simple

Real-time● Deterministic transport● Constant-complexity algorithms● Bounded data structures

High latency, worseLow latency, better

UAVCAN over C

AN FD

DShot15

0

UAVCAN over C

AN 2.0

Onesh

ot125

Multish

ot, O

nesh

ot42,

DShot60

0, etc

.

RC PW

M

(terrib

le)

ca. 150 𝜇sca. 100 𝜇s ca. 1500 𝜇s

Real-time

Safety-critical● Fully decentralized, democratic● No shared state● Power-up-and-go● Redundant transports● About 1000 SLoC (libcanard)

Safety-criticalDesign trade-offs:

● Robust transport assumed● Static architecture● No arbitrary-size data objects: uint8[<=256] data

NXP LPC11C24ARM Cortex M050 MHz8K RAM32K ROMno RTOS

Low memory footprint

STM32F302ARM Cortex M4F72 MHz16K RAM64K ROMno RTOS

Low memory footprint

Protocol RAM ROMUAVCAN 8 K 32 KCANaerospace 4 K 8 K

DDS/XRCE 32 K 250 K

DDS/RTPS 100 K ≫250 K

Low memory footprint

Simple● Complexity comparable to CANaerospace● Detailed specification under 80 pages + standard data types● About 1 man/month to implement from scratch (excl. DSDL)● Robust reference implementations in C, C++, Python, Rust (WIP)

Simple

SimpleFamiliar communication abstractions:

● Stateless publish-subscribe● Simple request-response (RPC)● Very low semantic overhead

Brief history of UAVCAN

Micro-satellitesUAV Manned

aircraftRobotic systems Light EV

Common high-level communication requirements

CAN 2.0 CAN FD Ethernet IEEE 802.15.4

Other transports

Scope ofUAVCAN v0

Micro-satellitesUAV Manned

aircraftRobotic systems Light EV

Common high-level communication requirements

CAN 2.0 CAN FD Ethernet IEEE 802.15.4

Other transports

Scope of UAVCAN v1

MY STANDARD DATA TYPES

Micro-satellitesUAV Manned

aircraftRobotic systems Light EV

Common high-level communication requirements

CAN 2.0 CAN FD Ethernet IEEE 802.15.4

Other transports

Scope of UAVCAN v1

Dronecodeprofile

Integrating UAVCAN

Open● MIT licensed● Github hosted reference implementations● Open specification (no membership required)

Useful● Tools● Documentation● Reference Implementations● Communication● Validation Suites

Forward Looking● Not encumbered with legacy and bloat● Designed with new technology in mind● Lowers the chance of getting locked-in to a bus technology

DSDL in Practice● Enables good system design by defining interfaces between sub-systems● Similar to ROS, sub-systems are decoupled and can be developed in parallel● Versioning allows a vehicle system to evolve over time● As an IDL it avoids technology lock-in● Certifiable generators could be produced

Core Application Functions● Heartbeat/status● GetInfo● Diagnostics, data flow, registers● Plug-and-play● Node software update and ExecuteCommand

What changed?

v0

v1

WHAT DID I DO?!?

(When you realize you need to change the dsdl type you just manufactured into to 3 million devices)

WHAT DID I DO?!?

https://forum.uavcan.org/t/simpler-and-better-dsdl-versioning/280

Kjetil Kjeka

Migration to UAVCAN v1

UAVCAN v1 reference implementations

Implementation Language Transports Status

Libcanard C99 CAN (FD) Usable

PyUAVCAN Python CAN (FD), UDP/IP, serial, … Usable

Libuavcan C++11 CAN (FD) ETA Aug 2019

uavcan.rs Rust CAN (FD) TBA

v1v0 discussion & feedback transition

Migration proposal

Vendo

rs no

tified

of

impe

nding

brea

kage

The P

X4 midd

leware

migrate

d to v

1 (bre

aking

)

Now PX4 v1.11March 2020

EOL ofPX4 v1.10

EOL of th

e las

t PX4

supp

orting

v0

Migration proposalHR resources secured

How do I build stuff with UAVCAN v1?

https://new.uavcan.org

Future of UAVCAN

Remaining Work● Finish the reference implementations● Finish the new tools (Yukon)● Define and deploy a type management process● Lowering the entry barrier

Broad strokes● New transports: UDP/IP, serial, wireless● Lowering the entry barrier● Maintaining the high software quality standards● Deploy in two vehicle systems● Formal standardization

Project Health● Higher (lower?) bus factor is needed● More representation is needed by vendors and manufacturers● A PX4 integration expert/maintainer is needed

Conclusion● UAVCAN v1 is the recommended choice for new projects● Legacy systems based on UAVCAN v0 will be supported until 2021 at least● Ongoing research on heterogeneous UDP, serial, and wireless transports

Resources● Dev call every Wednesday 18:00 UTC; see bit.ly/2MVdPBx● Forum: https://forum.uavcan.org● Specification: https://new.uavcan.org (soon to be https://uavcan.org)● Github: https://github.com/UAVCAN

○ Python: https://github.com/UAVCAN/pyuavcan/tree/uavcan-v1.0 ○ C: https://github.com/UAVCAN/libcanard/tree/uavcan-v1.0 ○ C++: https://github.com/UAVCAN/libuavcan/tree/uavcan-v1.0○ Stand-alone DSDL to code generator: https://github.com/UAVCAN/nunavut

UncomplicatedApplication-levelVehicularCommunicationAndNetworking

Intravehicular communication

top related