Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
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