source: pacpussensors/trunk/StereoVisionDisparity/SensorsApplicationStructures.h@ 57

Last change on this file since 57 was 57, checked in by phudelai, 10 years ago

SensorsApplicationStructures.h

File size: 7.2 KB
Line 
1#ifndef _SENSORSAPPLICATIONSTRUCTURES_H_
2#define _SENSORSAPPLICATIONSTRUCTURES_H_
3
4#include "Pacpus/kernel/cstdint.h"
5#include "Pacpus/kernel/road_time.h"
6
7#include "../StdDbtPlayerComponents/ImageBaseStructure.h"
8
9// some constants defined for the Alasca component
10static const uint32_t MAX_SENSOR_POINTS = 500;
11static const uint32_t MAX_GRID_POINTS = 360;
12static const uint32_t MAX_SENSOR_GRID_POINTS = (uint32_t)(500*500);
13
14//----------------- Sensor Occupancy Grid Properties -------------
15typedef struct
16{
17 //------------------------- Default parameters --------------------------------------
18 std::string sensors_name; // sensor input name
19 int type; // sensor reading type: 0 = laser; 1 = stereo camera like laser; 2 = generic sensor
20 double x; // sensor pose related to the robot frame
21 double y; // sensor pose related to the robot frame
22 double theta; // sensor pose related to the robot frame
23
24 //------------------------ Specifique parameters ------------------------------------
25 int num_readings; // number of readings
26 double sigma_zt; // standard deviantion in distance. For the camera = s_div*2.0 (2 meters)
27 double sigma_thetat; // standard deviation in angle. For the camera = CV_PI*(camera_FOV/num_readings)/180.0
28 double max_range; // maximum range of the sensor
29 int mMaxSensorInputSize; // size of the input data of sensor
30 bool use_udp; // if the data is from the udp connection
31
32 //--------------------------- UDP parameters ----------------------------------------
33 std::string host_address; // IP address to receive the data
34 unsigned int port; // communication port
35} s_properties; // Sensor properties
36
37//----------------- Camera Obstacle Data -------------------------
38// Camera obstacle data as laser readings
39typedef struct
40{
41 int num_readings; // number of readings
42 double radius[MAX_SENSOR_POINTS]; // distance measurements
43 double angle[MAX_SENSOR_POINTS]; // angle of each measurement
44} camera_occ_data; // Sensor properties
45
46typedef struct
47{
48 road_time_t time;
49 road_timerange_t timerange;
50 camera_occ_data data;
51} TimestampedCameraOccData;
52//----------------------------------------------------------------
53
54//-------------------- Sensor Grid Data --------------------------
55// Generic sensor occupancy grid
56typedef struct
57{
58 int rows; // number of rows
59 int cols; // number of cols
60 float sensor_x0; // sensor x origin in the occ data (x orientated to the right)
61 float sensor_y0; // sensor y origin in the occ data
62 float sensor_x; // sensor x position in the robot frame
63 float sensor_y; // sensor y position in the robot frame
64 float sensor_theta; // sensor theta orientation in the robot frame
65 float ratio; // sensor grid ratio (m/px)
66 float occ_data[MAX_SENSOR_GRID_POINTS]; // sensor occupancy grid data with size rows*cols
67} sensor_occ_data; // Sensor properties
68
69typedef struct
70{
71 road_time_t time;
72 road_timerange_t timerange;
73 sensor_occ_data data;
74} TimestampedSensorOccData;
75//----------------------------------------------------------------
76
77//------------------ Occupancy Grid Data -------------------------
78typedef struct
79{
80 int num_readings; // number of readings
81 double radius[MAX_GRID_POINTS]; // distance measurements
82 double angle[MAX_GRID_POINTS]; // angle of each measurement
83} occ_grid_data; // Sensor properties
84
85typedef struct
86{
87 road_time_t time;
88 road_timerange_t timerange;
89 occ_grid_data data;
90} TimestampedOccGridData;
91//----------------------------------------------------------------
92
93//--------------------- Robot State Data -------------------------
94typedef struct
95{
96 double x; // Delta X related to the last frame
97 double y; // Delta Y related to the last frame
98 double theta; // Delta theta (orientation angle) related to the last frame
99 double phi; // Delta phi (steering angle) related to the last frame
100} robot_pose_data; // pose properties
101
102typedef struct
103{
104 double v1; // Linear velocity
105 double v2; // Steering angle velocity
106} robot_velocity_data; // velocities properties
107
108typedef struct
109{
110 road_time_t time;
111 road_timerange_t timerange;
112 robot_pose_data pose_data;
113 robot_velocity_data velocity_data;
114} TimestampedRobotStateData;
115//----------------------------------------------------------------
116
117//------------------ Line Features Data -------------------------
118typedef struct
119{
120 int center_point_x,
121 center_point_y; // Reference line point
122 double center_angle; // Reference line angle
123 // For road surface
124 int left_point_x,
125 left_point_y; // Left road boundary
126 double left_angle; // Left road boundary angle
127 int right_point_x,
128 right_point_y; // Left road boundary
129 double right_angle; // Left road boundary angle
130} line_features_data; // line features
131
132typedef struct
133{
134 road_time_t time;
135 road_timerange_t timerange;
136 line_features_data data;
137} TimestampedLineFeaturesData;
138//----------------------------------------------------------------
139
140//------------------ Robot Control Inputs -------------------------
141typedef struct
142{
143 double v1; // Linear velocity in km/h
144 double v2; // Angular velocity for the wifibot and Steering
145 // angle velocity for the car-like robot in degrees/s
146 double phi; // Final steering angle setpoint in degrees
147 double acc; // Desired acceleration/deceleration m/s^2
148} control_data; // Control Data
149
150typedef struct
151{
152 road_time_t time;
153 road_timerange_t timerange;
154 control_data data;
155} TimestampedControlData;
156//----------------------------------------------------------------
157
158//------------------ CAN DATA -------------------------
159typedef struct
160{
161 double frontLeftWheelSpeed; ///< speed of the front left wheel (in m/s)
162 double frontRightWheelSpeed; ///< speed of the front right wheel (in m/s)
163 double rearLeftWheelSpeed; ///< speed of the rear left wheel (in m/s)
164 double rearRightWheelSpeed; ///< speed of the rear right wheel (in m/s)
165 double averageFrontWheelSpeed; ///< average front wheels speed (in m/s)
166} CANSpeed_data; // Speed data
167
168typedef struct
169{
170 road_time_t time;
171 road_timerange_t timerange;
172 CANSpeed_data data;
173} TimestampedCANSpeedData;
174
175typedef struct
176{
177 double angle; ///< in rad positive in trigonometric direction (to the left)
178 double rotationSpeed; ///< in rad/s
179} CANSteering_data; // Steering data converted to the front wheel frame
180
181typedef struct
182{
183 road_time_t time;
184 road_timerange_t timerange;
185 CANSteering_data data;
186} TimestampedCANSteeringData;
187//----------------------------------------------------------------
188
189//------------------ Visual Odometry Data -------------------------
190typedef struct
191{
192 double delta_d; // Camera translaction from the last interaction
193 double delta_theta; // Camera angle relate to the last camera frame
194 double delta_t; // Time interval between calculations
195} viso_data; // Visual odometry Data
196
197typedef struct
198{
199 road_time_t time;
200 road_timerange_t timerange;
201 viso_data data;
202} TimestampedVisoData;
203//----------------------------------------------------------------
204
205#endif
Note: See TracBrowser for help on using the repository browser.