mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-05-29 19:17:28 +08:00
*** empty log message ***
This commit is contained in:
@@ -28,6 +28,12 @@ all: fdm_step
|
|||||||
fdm_step: fdm_step.c
|
fdm_step: fdm_step.c
|
||||||
gcc -g -O2 -Wall `pkg-config glib-2.0 --cflags` -o $@ $^ `pkg-config glib-2.0 --libs` `pcre-config --libs` -lglibivy
|
gcc -g -O2 -Wall `pkg-config glib-2.0 --cflags` -o $@ $^ `pkg-config glib-2.0 --libs` `pcre-config --libs` -lglibivy
|
||||||
|
|
||||||
clean:
|
|
||||||
rm -f *~ core *.o *.bak .depend fdm_step
|
fms_steps_attitude: fms_steps_attitude.c
|
||||||
|
gcc -g -O2 -Wall `pkg-config glib-2.0 --cflags` -o $@ $^ `pkg-config glib-2.0 --libs` `pcre-config --libs` -lglibivy
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f *~ core *.o *.bak .depend fdm_step fms_steps_attitude
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
#ifndef BOOZ2_FMS_EXTERN_H
|
||||||
|
#define BOOZ2_FMS_EXTERN_H
|
||||||
|
|
||||||
|
#define FMS_H_MODE_RATE 0
|
||||||
|
#define FMS_H_MODE_ATTITUDE 1
|
||||||
|
#define FMS_H_MODE_SPEED 2
|
||||||
|
#define FMS_H_MODE_POS 3
|
||||||
|
|
||||||
|
#define FMS_ATTITUDE_OF_DEG(_d) ((int32_t)((_d)*0.0000546))
|
||||||
|
|
||||||
|
#define FMS_V_MODE_DIRECT 0
|
||||||
|
#define FMS_V_MODE_CLIMB 1
|
||||||
|
#define FMS_V_MODE_HEIGHT 2
|
||||||
|
|
||||||
|
//#define BOOZ2_SEND_IVY_FMS_COMMAND
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* BOOZ2_FMS_EXTERN_H */
|
||||||
@@ -1,10 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* fdm_step
|
* fdm_step
|
||||||
*
|
*
|
||||||
* send joystick control to paparazzi through ivy
|
|
||||||
*
|
|
||||||
* based on Force Feedback: Constant Force Stress Test
|
|
||||||
* Copyright (C) 2001 Oliver Hamann
|
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -0,0 +1,92 @@
|
|||||||
|
/*
|
||||||
|
* fms_steps_attitude
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <glib.h>
|
||||||
|
#include <Ivy/ivy.h>
|
||||||
|
#include <Ivy/ivyglibloop.h>
|
||||||
|
|
||||||
|
#include <inttypes.h>
|
||||||
|
#include "booz2_fms_extern.h"
|
||||||
|
|
||||||
|
|
||||||
|
#define TIMEOUT_PERIOD 100
|
||||||
|
#define DEFAULT_AC_ID 150
|
||||||
|
#define STEP_VAL 2
|
||||||
|
#define STEP_PERIOD 3
|
||||||
|
|
||||||
|
static int aircraft_id = DEFAULT_AC_ID;
|
||||||
|
static int counter;
|
||||||
|
|
||||||
|
static gboolean periodic(gpointer data __attribute__ ((unused)));
|
||||||
|
|
||||||
|
|
||||||
|
void parse_args(int argc, char * argv[])
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 1; i < argc; i++) {
|
||||||
|
if (!strcmp(argv[i],"-a") && i<argc-1) aircraft_id = atoi(argv[++i]);
|
||||||
|
else if (!strcmp(argv[i],"-h")) goto l_help;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
|
||||||
|
l_help:
|
||||||
|
printf("Usage:\n");
|
||||||
|
printf(" %s <option> [<option>...]\n",argv[0]);
|
||||||
|
printf("Options:\n");
|
||||||
|
printf(" -a <int> aircraft id (default: %d)\n",DEFAULT_AC_ID);
|
||||||
|
printf(" -h display this help\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean periodic(gpointer data __attribute__ ((unused))) {
|
||||||
|
|
||||||
|
counter++;
|
||||||
|
|
||||||
|
uint8_t h_mode = FMS_H_MODE_ATTITUDE;
|
||||||
|
uint8_t v_mode = FMS_V_MODE_DIRECT;
|
||||||
|
int32_t pitch = FMS_ATTITUDE_OF_DEG(0);
|
||||||
|
int32_t roll = FMS_ATTITUDE_OF_DEG(STEP_VAL);
|
||||||
|
int32_t yaw = FMS_ATTITUDE_OF_DEG(0);
|
||||||
|
int32_t unused = 0;
|
||||||
|
if ((counter%(2*STEP_PERIOD)) >= STEP_PERIOD) roll = -roll;
|
||||||
|
|
||||||
|
IvySendMsg("dl BOOZ2_FMS_COMMAND %d %d %d %d,%d,%d %d", aircraft_id, h_mode, v_mode, roll, pitch, yaw, unused);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int main ( int argc, char** argv) {
|
||||||
|
|
||||||
|
GMainLoop *ml = g_main_loop_new(NULL, FALSE);
|
||||||
|
|
||||||
|
parse_args(argc, argv);
|
||||||
|
|
||||||
|
IvyInit ("IvyBooz2FmsAttStep", "IvyBooz2FmsAttStep READY", NULL, NULL, NULL, NULL);
|
||||||
|
IvyStart("127.255.255.255");
|
||||||
|
|
||||||
|
g_timeout_add(TIMEOUT_PERIOD, periodic, NULL);
|
||||||
|
|
||||||
|
g_main_loop_run(ml);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
@@ -0,0 +1,89 @@
|
|||||||
|
/*
|
||||||
|
* fdm_step_position
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <glib.h>
|
||||||
|
#include <Ivy/ivy.h>
|
||||||
|
#include <Ivy/ivyglibloop.h>
|
||||||
|
|
||||||
|
#define TIMEOUT_PERIOD 100
|
||||||
|
#define DEFAULT_AC_ID 150
|
||||||
|
|
||||||
|
static int aircraft_id = DEFAULT_AC_ID;
|
||||||
|
static int counter;
|
||||||
|
|
||||||
|
static gboolean periodic(gpointer data __attribute__ ((unused)));
|
||||||
|
static void on_FMS_info(IvyClientPtr app, void *user_data, int argc, char *argv[]);
|
||||||
|
|
||||||
|
void parse_args(int argc, char * argv[])
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 1; i < argc; i++) {
|
||||||
|
if (!strcmp(argv[i],"-a") && i<argc-1) aircraft_id = atoi(argv[++i]);
|
||||||
|
else if (!strcmp(argv[i],"-h")) goto l_help;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
|
||||||
|
l_help:
|
||||||
|
printf("Usage:\n");
|
||||||
|
printf(" %s <option> [<option>...]\n",argv[0]);
|
||||||
|
printf("Options:\n");
|
||||||
|
printf(" -a <int> aircraft id (default: %d)\n",DEFAULT_AC_ID);
|
||||||
|
printf(" -h display this help\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void on_FMS_state(IvyClientPtr app, void *user_data, int argc, char *argv[]){
|
||||||
|
// guint ac_id = atoi(argv[0]);
|
||||||
|
// float estimator_phi = atof(argv[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define STEP_VAL 32
|
||||||
|
static gboolean periodic(gpointer data __attribute__ ((unused))) {
|
||||||
|
int roll, pitch;
|
||||||
|
counter++;
|
||||||
|
pitch = 0;
|
||||||
|
roll = STEP_VAL;
|
||||||
|
if ((counter%6) >=3) roll = -roll;
|
||||||
|
|
||||||
|
IvySendMsg("dl COMMANDS_RAW %d %d,%d", aircraft_id, roll, pitch);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int main ( int argc, char** argv) {
|
||||||
|
|
||||||
|
GMainLoop *ml = g_main_loop_new(NULL, FALSE);
|
||||||
|
|
||||||
|
parse_args(argc, argv);
|
||||||
|
|
||||||
|
IvyInit ("IvyFdmStep", "IvyFdmStep READY", NULL, NULL, NULL, NULL);
|
||||||
|
IvyStart("127.255.255.255");
|
||||||
|
|
||||||
|
g_timeout_add(TIMEOUT_PERIOD, periodic, NULL);
|
||||||
|
|
||||||
|
g_main_loop_run(ml);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user