The Grand Cooperative Driving Challenge – Some hints from the

The Grand Cooperative Driving Challenge
– Some hints from the winning team
GCDC Halmstad Team
Víctor Díez Rodríguez – Segula Technologies
Halmstad University, Sweden
hh.se
GCDC
Grand Cooperative Driving Challenge
Cooperative driving competition
10 teams (5 SWE, 1 DEU, 1 ESP, 1 NLD, 1 FRA, 1 LVA)
3 autonomous driving scenarios based on V2V
2
hh.se
3
hh.se
(a) Pace Making
ST
O
M
RSU
(b) Pairing
CompetitionZone 2
B
MergeZone
A
CompetitionZone 1
MergeZone
CompetitionZone 2
B
CompetitionZone 1
A
MergeZone
CompetitionZone 1
A
B
CompetitionZone 2
GCDC
Scenario 1: Merging
ST
O
M
(c) Merging Done
GCDC
Scenario 2: Intersection
Competition Zone
Competition Zone
(d) Initialization
(e) Entering Road
(f) Exit crossing
4
hh.se
GCDC
Communication requirements
ITS-G5 / IEEE 802.11p
G5-CCH: 5 900 MHz / 10 MHz
/ 6 Mbit/s
No DCC
GeoNetworking
Single Hop Broadcast
GeoBroadcast
Communication range: 200 m
Data age: 200 ms
Periodic messages at 25 Hz
Multiple implementations:
Interoperability issues
BTP-B
ASN.1 UPER
CAM – Cooperative Awareness Message
DENM – Decentralized Environmental Notification Message
iCLCM – i-GAME Cooperative Lane Change Message
5
hh.se
Our system
Hardware
6
hh.se
Our system
Hardware
7
hh.se
Our system
Software Architecture
COM Communication
DS Data Source
HLC High Level Control
MLC Mid Level Control
LLC Low Level Control
HMI Human-Machine
Interface
8
hh.se
Our system
Inter-module communication: LCM
Lightweight Communications and Marshalling
Low-latency inter-process communication
UDP Multicast
Publish/subscribe message passing (channels)
Logging and playback
C, C++, C# / .NET, Java, Lua, Python
9
hh.se
Our system
Type definition
LCM Type Specification Language
struct ICLCM_t
{
const int8_t INTENTION_STRAIGHT =1 , INTENTION_LEFT =2 , INTENTION_RIGHT =3;
int32_t stationID ;
int16_t
generationDeltaTime
;
//
millisec
int8_t
stationType
;
//
enum
int16_t
vehicleRearAxleLocation ;
//
0.01 m
int8_t
controllerType ;
//
enum
int16_t
vehicleResponseTimeConstant
;
//
0.01 s
int16_t
vehicleResponseTimeDelay
;
//
0.01 s
int16_t
targetLongitudinalAcceleration ;
//
0.01 m / s2
....
}
About 130 different signals and 20 types
10
hh.se
Our system
Module configuration
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
11
{
" name " : " CommService " ,
" logging " : true ,
" address " : " udpm : // 2 39. 255 .76 .67 :76 67 ? ttl = 1 ",
" managementChannel " :
{ " name " :" mng " ,
" type " :" se . hh . lsf . management_t " },
" inputChannels " : [
{ " name " :" ego_iclcm " ,
" type " : " se . hh . gcdc 201 6. lcm . ICLCM_t " },
{ " name " :" cam_clean " ,
" type " :" se . hh . gcdc 2 016 . lcm . CAM_t " },
{ " name " :" denm " ,
" type " :" se . hh . gcdc 2 016 . lcm . DENM_t " }
],
" outputChannels " :[
{ " name " :" cam_dirty " ,
" type " :" se . hh . gcdc 2 016 . lcm . CAM_t " },
{ " name " :" denm " ,
" type " :" se . hh . gcdc 2 016 . lcm . DENM_t " },
{ " name " :" iclcm_dirty " ,
" type " :" se . hh . gcdc 2 016 . lcm . ICLCM_t " }
]
}
hh.se
Our system
Bad
Good
12
Fast parallel development
Hard to maintain
Easy mock-up and testing
Different interface versions
Integrated monitoring
Extra documentation required
Scalable and flexible
Implicit dependencies
hh.se
Simulation
Module simulation
LCM interface
Scenario simulation
PreScan
Multiple instances of
the complete system
Multicast for V2V
13
hh.se
Communication module
ITS-G5 Stack
https://github.com/alexvoronov/geonetworking
14
hh.se
Communication module
Our side
15
hh.se
Communication module
Receiving V2V messages
16
hh.se
Communication module
Sending V2V messages
17
hh.se
Communication module
Performance considerations
Slow encoding and decoding
50 messages per second per vehicle => 400 messages/s
FIFO queue
Evolution of packet waiting time
Evolution of packet waiting time
No class
60
40
20
0
5000
10000
Run Time (ms)
Low load
18
hh.se
15000
Packet Waiting Time (ms)
Packet Waiting Time (ms)
80
No class
6000
5000
4000
3000
2000
1000
0
2000
4000
Run Time (ms)
High load
6000
Communication module
Stream-wise Accumulating Priority Queue
An Approach for Receiver-Side Awareness Control in Vehicular Ad-Hoc Networks.
19
hh.se
Communication module
Stream-wise Accumulating Priority Queue
Evolution of packet waiting time
1000
Evolution of packet waiting time
Class 4
Class 3
Class 2
Class 1
40
30
20
10
Packet Waiting Time (ms)
Packet Waiting Time (ms)
50
600
400
200
0
0
5000
10000
15000
Run Time (ms)
Low load
Robustness against changing conditions
Reduced hardware costs
20
Class 4
Class 3
Class 2
Class 1
800
hh.se
0
2000
4000
Run Time (ms)
High load
6000
Lessons learned
Document everything
Expect failures
Make changes
Design for testing
Simulate when possible
https://www.youtube.com/watch?v=MK-tA_C9kdk
21
hh.se
The Halmstad Team
Supervisors
Core Team, MSc students:
Jérôme Detournay (Belgium)
Maytheewat Aramrattana
(Thailand)
Wojciech Mostowski (Poland)
Víctor Díez Rodríguez (Spain)
Viktor Frimodig (Sweden)
Oscar Uddman Jansson (Sweden)
Thomas Rosenstatter (Austria)
Golam Shahanoor (Bangladesh)
Support
Tony Larsson
Thomas Lithén
Jessika Rosenberg
Kristina Rörström
Louise Wandel
And others!
22
hh.se
The Halmstad Team
23
hh.se
24
hh.se
Thank You!