1 | /*********************************************************************
|
---|
2 | // created: 2011/06/03 - 18:00
|
---|
3 | // filename: structureCanMobileye.h
|
---|
4 | //
|
---|
5 | // author: Paul George
|
---|
6 | // Copyright Heudiasyc UMR UTC/CNRS 6599
|
---|
7 | //
|
---|
8 | // version: $Id: $
|
---|
9 | //
|
---|
10 | // purpose: Description of the CAN structures of Mobileye
|
---|
11 | *********************************************************************/
|
---|
12 |
|
---|
13 | #ifndef __STRUCTURECANMOBILEYE_H__
|
---|
14 | #define __STRUCTURECANMOBILEYE_H__
|
---|
15 |
|
---|
16 | #include "kernel/road_time.h"
|
---|
17 |
|
---|
18 | #define MOBILEYE_MAX_OBSTACLE_COUNT 10
|
---|
19 | #define OBSTACLE_MAX_X 250.0
|
---|
20 | #define OBSTACLE_MAX_Y 31.93
|
---|
21 |
|
---|
22 | enum LaneValidStatus
|
---|
23 | {
|
---|
24 | LANE_UNDEFINED = 0,
|
---|
25 | LANE_NEW = 1,
|
---|
26 | LANE_VALID = 2,
|
---|
27 | LANE_INVALID = 3
|
---|
28 | };
|
---|
29 |
|
---|
30 | // corresponding CAN frame = 0x731,0x732
|
---|
31 | typedef struct {
|
---|
32 | LaneValidStatus LaneValid;// 0 : undefined, 1 : new lane, 2 : valid lane, 3 : invalid lane
|
---|
33 | double LaneCurvature; //
|
---|
34 | double LaneHeading; //
|
---|
35 | double LaneOffset; //
|
---|
36 | int LaneConf; // Confidence : 0 -> 3
|
---|
37 | }StructMobileyeLane;
|
---|
38 |
|
---|
39 | typedef struct{
|
---|
40 | road_time_t time;
|
---|
41 | road_timerange_t timerange;
|
---|
42 | StructMobileyeLane d;
|
---|
43 | }TimestampedStructMobileyeLane;
|
---|
44 |
|
---|
45 | // corresponding CAN frame = 0x7FF
|
---|
46 | typedef struct {
|
---|
47 | int obstacleCount; // Nombre d'obstacles
|
---|
48 | }StructMobileyeObstaclesHeader;
|
---|
49 |
|
---|
50 | typedef struct{
|
---|
51 | road_time_t time;
|
---|
52 | road_timerange_t timerange;
|
---|
53 | StructMobileyeObstaclesHeader d;
|
---|
54 | }TimestampedStructMobileyeObstaclesHeader;
|
---|
55 |
|
---|
56 | enum ObstacleType
|
---|
57 | {
|
---|
58 | OBSTACLE_VEHICLE = 0,
|
---|
59 | OBSTACLE_TRUCK = 1,
|
---|
60 | OBSTACLE_BIKE = 2,
|
---|
61 | OBSTACLE_PEDESTRIAN = 3,
|
---|
62 | OBSTACLE_BICYCLE = 4
|
---|
63 | };
|
---|
64 |
|
---|
65 | enum ObstacleStatus
|
---|
66 | {
|
---|
67 | OBSTACLE_UNDEFINED = 0,
|
---|
68 | OBSTACLE_STANDING = 1,
|
---|
69 | OBSTACLE_STOPPED = 2,
|
---|
70 | OBSTACLE_MOVING = 3,
|
---|
71 | OBSTACLE_ONCOMING = 4,
|
---|
72 | OBSTACLE_PARKED = 5
|
---|
73 | };
|
---|
74 |
|
---|
75 | // corresponding CAN frame = 0x739,0x73C,0x73F,0x742,0x745,0x748,0x74B,0x74E,0x751,0x754
|
---|
76 | typedef struct {
|
---|
77 | int id; //
|
---|
78 | double x; //
|
---|
79 | double y; //
|
---|
80 | ObstacleType type; //
|
---|
81 | ObstacleStatus status; // 0 : Undefined, 1 : Standing, 2 : Stopped, 3 : Moving, 4 : Oncoming, 5 : Parked
|
---|
82 | }StructMobileyeObstacle1;
|
---|
83 |
|
---|
84 | typedef struct{
|
---|
85 | road_time_t time;
|
---|
86 | road_timerange_t timerange;
|
---|
87 | StructMobileyeObstacle1 d;
|
---|
88 | }TimestampedStructMobileyeObstacle1;
|
---|
89 |
|
---|
90 | // corresponding CAN frame = 0x73A,0x73D,0x740,0x743,0x746,0x749,0x74C,0x74F,0x752,0x755
|
---|
91 | typedef struct {
|
---|
92 | double width; //
|
---|
93 | int age; //
|
---|
94 | }StructMobileyeObstacle2;
|
---|
95 |
|
---|
96 | typedef struct{
|
---|
97 | road_time_t time;
|
---|
98 | road_timerange_t timerange;
|
---|
99 | StructMobileyeObstacle2 d;
|
---|
100 | }TimestampedStructMobileyeObstacle2;
|
---|
101 |
|
---|
102 | typedef struct {
|
---|
103 | StructMobileyeLane rightLane; // 40 bytes
|
---|
104 | StructMobileyeLane leftLane; // 40 bytes
|
---|
105 | StructMobileyeObstaclesHeader obstaclesHeader; // 8 bytes
|
---|
106 | StructMobileyeObstacle1 obstacles1[MOBILEYE_MAX_OBSTACLE_COUNT]; // 10 * 32 = 320 bytes
|
---|
107 | StructMobileyeObstacle2 obstacles2[MOBILEYE_MAX_OBSTACLE_COUNT]; // 10 * 16 = 160 bytes ; total = 568 bytes
|
---|
108 | } MobileyeDatas;
|
---|
109 |
|
---|
110 | typedef struct{
|
---|
111 | unsigned int LaneType;
|
---|
112 | unsigned int LaneQuality;
|
---|
113 | unsigned int LaneDegree;
|
---|
114 | double LanePositionC0;
|
---|
115 | //double LaneHeadingC1;
|
---|
116 | double LaneCurvatureC2;
|
---|
117 | double LaneCurvatureDerivC3;
|
---|
118 | road_time_t TimeStamp;
|
---|
119 | } LaneInfoPart1;
|
---|
120 |
|
---|
121 | typedef struct{
|
---|
122 | double LaneHeadingC1;
|
---|
123 | road_time_t TimeStamp;
|
---|
124 | } LaneInfoPart2;
|
---|
125 |
|
---|
126 | typedef struct {
|
---|
127 | LaneInfoPart1 LanePart1;
|
---|
128 | LaneInfoPart2 LanePart2;
|
---|
129 | } MobileyeLaneData;
|
---|
130 |
|
---|
131 | #endif
|
---|