RflySimSDK v3.05
RflySimSDK说明文档
载入中...
搜索中...
未找到
rfly_data.h
1#pragma once
2
3#include "rfly_wgs84.h"
4
5typedef signed char int8_t;
6typedef short int16_t;
7typedef int int32_t;
8// typedef long long int64_t;
9typedef unsigned char uint8_t;
10typedef unsigned short uint16_t;
11typedef unsigned int uint32_t;
12// typedef unsigned long long uint64_t;
13
14
16 int checksum;
17 int32_t gpsHome[3]; //Home GPS position, lat&long: deg*1e7, alt: m*1e3 and up is positive
18 float AngEular[3]; //Estimated Euler angle, unit: rad
19 float localPos[3]; //Estimated locoal position, NED, unit: m
20 float localVel[3]; //Estimated locoal velocity, NED, unit: m/s
22 reset();
23 }
24 void reset(){
25 checksum = 0;
26 for(int i=0;i<3;i++){
27 gpsHome[i]=0;
28 AngEular[i]=0;
29 localPos[i]=0;
30 localVel[i]=0;
31 }
32 }
33};
34
36 uint32_t time_boot_ms; //Timestamp of the message 消息时间ćˆ?
37 uint32_t copterID; //Copter ID, start from 1
38 int32_t GpsPos[3]; //Estimated GPS position��lat&long: deg*1e7, alt: m*1e3 and up is positive
39 int32_t GpsVel[3]; //Estimated GPS velocity, NED, m/s*1e2->cm/s
40 int32_t gpsHome[3]; //Home GPS position, lat&long: deg*1e7, alt: m*1e3 and up is positive
41 int32_t relative_alt; //alt: m*1e3 and up is positive
42 int32_t hdg; //Course angle, NED,deg*1000, 0~360
43 int32_t satellites_visible; //GPS Raw data, sum of satellite
44 int32_t fix_type; //GPS Raw data, Fixed type, 3 for fixed (good precision)
45 int32_t resrveInit; //Int, reserve for the future use
46 float AngEular[3]; //Estimated Euler angle, unit: rad
47 float localPos[3]; //Estimated locoal position, NED, unit: m
48 float localVel[3]; //Estimated locoal velocity, NED, unit: m/s
49 float pos_horiz_accuracy; //GPS horizontal accuracy, unit: m
50 float pos_vert_accuracy; //GPS vertical accuracy, unit: m
51 float resrveFloat; //float,reserve for the future use
53 reset();
54 }
55 void load(outHILStateShort hil) {
56 reset();
57 for(int i=0;i<3;i++){
58 gpsHome[i]=hil.gpsHome[i];
59 AngEular[i]=hil.AngEular[i];
60 localPos[i]=hil.localPos[i];
61 localVel[i]=hil.localVel[i];
62 }
63 }
64 void reset(){
65 time_boot_ms = 0;
66 for(int i=0;i<3;i++){
67 GpsPos[i]=0;
68 }
69 for(int i=0;i<3;i++){
70 GpsVel[i]=0;
71 }
72 relative_alt=0;
73 hdg=0;
74 for(int i=0;i<3;i++){
75 AngEular[i]=0;
76 }
77 for(int i=0;i<3;i++){
78 localPos[i]=0;
79 }
80 for(int i=0;i<3;i++){
81 localVel[i]=0;
82 }
83 for(int i=0;i<3;i++){
84 gpsHome[i]=0;
85 }
86 pos_horiz_accuracy=0;
87 pos_vert_accuracy=0;
88 satellites_visible=0;
89 fix_type=0;
90 }
91};
92
94 uint32_t time_boot_ms; //Timestamp of the message 消息时间ćˆ?
95 uint32_t copterID; //Copter ID, start from 1
96 int32_t GpsPos[3]; //Estimated GPS position��lat&long: deg*1e7, alt: m*1e3 and up is positive
97 int32_t GpsVel[3]; //Estimated GPS velocity, NED, m/s*1e2->cm/s
98 int32_t gpsHome[3]; //Home GPS position, lat&long: deg*1e7, alt: m*1e3 and up is positive
99 int32_t relative_alt; //alt: m*1e3 and up is positive
100 int32_t hdg; //Course angle, NED,deg*1000, 0~360
101 int32_t satellites_visible; //GPS Raw data, sum of satellite
102 int32_t fix_type; //GPS Raw data, Fixed type, 3 for fixed (good precision)
103 int32_t resrveInit; //Int, reserve for the future use
104 float AngEular[3]; //Estimated Euler angle, unit: rad
105 float AngRate[3]; //Estimated Euler angle, unit: rad
106 float localPos[3]; //Estimated locoal position, NED, unit: m
107 float localVel[3]; //Estimated locoal velocity, NED, unit: m/s
108 float pos_horiz_accuracy; //GPS horizontal accuracy, unit: m
109 float pos_vert_accuracy; //GPS vertical accuracy, unit: m
110 float resrveFloat; //float,reserve for the future use
111 double GlobalPos[3];
112
113 WgsConversions wgs; //Class from rfly_wgs84.h for gps conversion
114 RflySimData() {
115 reset();
116 }
118 load(hil);
119 }
121 load(hil);
122 }
123 void load(outHILStateShort hil) {
124 //reset();
125 for(int i=0;i<3;i++){
126 gpsHome[i]=hil.gpsHome[i];
127 AngEular[i]=hil.AngEular[i];
128 localPos[i]=hil.localPos[i];
129 localVel[i]=hil.localVel[i];
130 }
131 }
132 void load(outHILStateData hil) {
133 //reset();
134 time_boot_ms = hil.time_boot_ms;
135 for(int i=0;i<3;i++){
136 GpsPos[i]=hil.GpsPos[i];
137 GlobalPos[i]=0;
138 AngRate[i]=0;
139 }
140 for(int i=0;i<3;i++){
141 GpsVel[i]=hil.GpsVel[i];
142 }
143 relative_alt=hil.relative_alt;
144 hdg=hil.hdg;
145 for(int i=0;i<3;i++){
146 AngEular[i]=hil.AngEular[i];
147 }
148 for(int i=0;i<3;i++){
149 localPos[i]=hil.localPos[i];
150 }
151 for(int i=0;i<3;i++){
152 localVel[i]=hil.localVel[i];
153 }
154 for(int i=0;i<3;i++){
155 gpsHome[i]=hil.gpsHome[i];
156 }
157 pos_horiz_accuracy=hil.pos_horiz_accuracy;
158 pos_vert_accuracy=hil.pos_vert_accuracy;
159 satellites_visible=hil.satellites_visible;
160 fix_type=hil.fix_type;
161 }
162 void reset(){
163 time_boot_ms = 0;
164 for(int i=0;i<3;i++){
165 GpsPos[i]=0;
166 GlobalPos[i]=0;
167 AngRate[i]=0;
168 }
169 for(int i=0;i<3;i++){
170 GpsVel[i]=0;
171 }
172 relative_alt=0;
173 hdg=0;
174 for(int i=0;i<3;i++){
175 AngEular[i]=0;
176 }
177 for(int i=0;i<3;i++){
178 localPos[i]=0;
179 }
180 for(int i=0;i<3;i++){
181 localVel[i]=0;
182 }
183 for(int i=0;i<3;i++){
184 gpsHome[i]=0;
185 }
186 pos_horiz_accuracy=0;
187 pos_vert_accuracy=0;
188 satellites_visible=0;
189 fix_type=0;
190 }
191 bool calcGlobalPos(double GpsOrin[3]){
192 // Get global position according to GPS pos and given GPSOrin from SParamInfo
193 if((fabs(gpsHome[0])<1&&fabs(gpsHome[1])<1)||(fabs(GpsOrin[0])<0.001&&fabs(GpsOrin[1])<0.001)){
194 GlobalPos[0]=0;
195 GlobalPos[1]=0;
196 GlobalPos[2]=0;
197 return false;
198 }else{
199 double GpsHomePos[3]={0};
200 GpsHomePos[0] = (double)gpsHome[0] * 1e-7;
201 GpsHomePos[1] = (double)gpsHome[1] * 1e-7;
202 GpsHomePos[2] = (double)gpsHome[2] * 1e-3;
203 double enu[3]={0};
204 wgs.lla2enu(enu,GpsHomePos,GpsOrin);
205 GlobalPos[0] = enu[1] + localPos[0];
206 GlobalPos[1] = enu[0] + localPos[1];
207 GlobalPos[2] = -enu[2] + localPos[2];
208 return true;
209 }
210 }
211};
212
213
214
215
216
217typedef struct _netDataShortShort {
218 int tg;
219 int len;
220 char payload[112];
222 memset(payload, 0, sizeof(payload));
223 }
225
226
227
229 uint32_t time_boot_ms;
230 uint32_t copterID;
231 uint32_t modes;
232 uint32_t flags;
233 float ctrls[16];
234 inHILCMDData() {
235 reset();
236 }
237 void reset(){
238 time_boot_ms = 0;
239 copterID=0;
240 flags = 0;
241 modes=0;
242 for(int i=0;i<16;i++){
243 ctrls[i]=0;
244 }
245 }
246};
247
248
250 int checksum;
251 int ctrlMode;
252 float controls[4];
254 reset();
255 }
256 void reset(){
257 checksum = 0;
258 ctrlMode=0;
259 for(int i=0;i<4;i++){
260 controls[i]=0;
261 }
262 }
263};
264
265
267 uint32_t cmdBitmap;
268 uint16_t typeMask;
269 float controls[20];
270 inRealflyData() {
271 reset();
272 }
273 void reset(){
274 cmdBitmap = 0;
275 typeMask = 0;
276 for(int i=0;i<20;i++){
277 controls[i]=0;
278 }
279 }
280};
281
282
283
284
285// Python解码标识4i24f7d,数据长度168字节
286//解析方法:对比包长168,然后按4i24f7d编码进行解析
287//解析示例详见:PX4MavCtrlV4.py/getTrueDataMsg()函数
288//发送示例详见:UE4CtrlAPI.py/sendUE4PosFull()函数
289//输出到模拟器的数据
290//FULL完整模式,输出到RflySim3D的数据
292 int checksum; // 校验码123456789,必须设定为本值,才会认为是有效数据
293 int copterID; //飞机ID序号
294 int vehicleType; //载具样式ID,对应UE的XML中ClassID
295 int reserv; //备用标志位,Int型,将来用于表示碰撞、或大地图等标识
296 float VelE[3]; //速度,北东地,单位米/s
297 float AngEuler[3]; //欧拉角,滚转俯仰偏航,单位弧度
298 float AngQuatern[4]; //姿态四元数向量,w x y z
299 float MotorRPMS[8]; //执行器偏转量或转速,旋翼类对应RPM转每分
300 float AccB[3]; //载具机体FRD坐标系下加速度
301 float RateB[3]; //载具机体FRD坐标系下角速度,pqr,单位rad/s
302 double runnedTime; //时间戳,仿真开始为0时刻。
303 double PosE[3]; //北东地位置,单位米,z向下为正
304 double PosGPS[3]; //载具纬度、经度、高度向量,单位度和米,高度向上为正
306 reset();
307 }
308 void reset(){
309 checksum=0;
310 copterID = -1;
311 vehicleType= -1;
312 runnedTime = 0;
313 reserv=0;
314
315 for (int i = 0; i < 3; i++) {
316 PosE[i] = 0;
317 AngEuler[i] = 0;
318 VelE[i]=0;
319 PosGPS[i]=0;
320 RateB[i]=0;
321 AccB[i]=0;
322 AngQuatern[i]=0;
323 }
324 AngQuatern[3]=0;
325
326 for(int i=0;i<8;i++){
327 MotorRPMS[i]=0;
328 }
329 }
330};
定义 rfly_wgs84.h:17
定义 rfly_data.h:93
定义 rfly_data.h:291
定义 rfly_data.h:217
定义 rfly_data.h:228
定义 rfly_data.h:249
定义 rfly_data.h:266
定义 rfly_data.h:35
定义 rfly_data.h:15