mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-06-06 16:58:48 +08:00
sim fixed
This commit is contained in:
@@ -18,8 +18,6 @@
|
||||
<axis name="YAW" failsafe_value="0"/>
|
||||
<axis name="MODE" failsafe_value="0"/>
|
||||
<axis name="GAIN1" failsafe_value="0"/>
|
||||
<axis name="GAIN2" failsafe_value="0"/>
|
||||
<axis name="SWITCH1" failsafe_value="0"/>
|
||||
<axis name="CALIB" failsafe_value="0"/>
|
||||
</commands>
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
#define TRESHOLD_MANUAL_PPRZ (MIN_PPRZ / 2)
|
||||
|
||||
#define TRESHOLD1 TRESHOLD_MANUAL_PPRZ
|
||||
#define TRESHOLD2 SYS_TICS_OF_USEC(200)
|
||||
#define TRESHOLD2 (MAX_PPRZ/2)
|
||||
|
||||
|
||||
#define PPRZ_MODE_MANUAL 0
|
||||
@@ -49,7 +49,7 @@
|
||||
#define PPRZ_MODE_NB 5
|
||||
|
||||
#define PPRZ_MODE_OF_PULSE(pprz, mega8_status) \
|
||||
((uint16_t)pprz > TRESHOLD2 ? PPRZ_MODE_AUTO2 : \
|
||||
(pprz > TRESHOLD2 ? PPRZ_MODE_AUTO2 : \
|
||||
(pprz > TRESHOLD1 ? PPRZ_MODE_AUTO1 : PPRZ_MODE_MANUAL))
|
||||
|
||||
extern uint8_t pprz_mode;
|
||||
|
||||
@@ -32,7 +32,7 @@ SIMHCMO=$(SIMHML:%.ml=%.cmo)
|
||||
SIMSML = stdlib.ml data.ml flightModel.ml gps.ml sitl.ml sim.ml
|
||||
SIMSCMO=$(SIMSML:%.ml=%.cmo)
|
||||
SIMSCMX=$(SIMSML:%.ml=%.cmx)
|
||||
SIMSC = sim_ir.c sim_gps.c sim_ap.c sys_time.c estimator.c infrared.c gps.c pid.c nav.c main_ap.c cam.c traffic_info.c
|
||||
SIMSC = sim_ir.c sim_gps.c sim_ap.c sys_time.c estimator.c infrared.c gps.c pid.c nav.c radio_control.c main_ap.c cam.c traffic_info.c
|
||||
SIMSO=$(SIMSC:%.c=$(OBJDIR)/%.o)
|
||||
SIMSA=sims.cma
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ struct inter_mcu_msg from_fbw, from_ap;
|
||||
|
||||
static int16_t values_from_ap[RADIO_CTL_NB];
|
||||
|
||||
void inflight_calib(void) { }
|
||||
uint16_t ppm_pulses[ PPM_NB_PULSES ]; /** From ppm_hw.c */
|
||||
|
||||
value sim_periodic_task(value _unit) {
|
||||
periodic_task();
|
||||
@@ -55,6 +55,12 @@ value set_really_lost(value on) {
|
||||
}
|
||||
|
||||
value sim_rc_task(value _unit) {
|
||||
NormalizePpm(); /** -> rc_values */
|
||||
/*** printf("update: %d : %f (%d)\n", Int_val(c), Double_val(v), rc_values[COMMAND_GAIN1]); ***/
|
||||
int i;
|
||||
for(i = 0; i < COMMANDS_NB; i++)
|
||||
from_fbw.channels[i] = rc_values[i];
|
||||
|
||||
from_fbw.status = (radio_status << STATUS_RADIO_OK) | (radio_really_lost << RADIO_REALLY_LOST) | (1 << AVERAGED_CHANNELS_SENT);
|
||||
link_fbw_receive_valid = TRUE;
|
||||
telecommand_task();
|
||||
@@ -83,7 +89,7 @@ value update_bat(value bat) {
|
||||
}
|
||||
|
||||
value update_rc_channel(value c, value v) {
|
||||
from_fbw.channels[Int_val(c)] = Double_val(v)*MAX_PPRZ;
|
||||
ppm_pulses[Int_val(c)] = Double_val(v);
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
@@ -107,6 +113,7 @@ value set_servos(value servos) {
|
||||
/** Get values computed by the autopilot */
|
||||
for(i = 0; i < RADIO_CTL_NB; i++) {
|
||||
values_from_ap[i] = US_OF_CLOCK(from_ap.channels[i]);
|
||||
/***printf("%d:%d\n", i, values_from_ap[i]); ***/
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -85,15 +85,21 @@ module Make(A:Data.MISSION) = struct
|
||||
let vbox = GPack.vbox ~height:10 ~spacing: 1 ~border_width: 1 ~packing:window#add () in
|
||||
let on_off = GButton.check_button ~label:"On" ~active:true ~packing:vbox#pack () in
|
||||
let sliders = GPack.vbox ~packing:vbox#add () in
|
||||
let float_attrib = fun a x -> float_of_string (ExtXml.attrib x a) in
|
||||
Array.iteri
|
||||
(fun i c ->
|
||||
let adj = GData.adjustment ~value:0. ~lower:(-100.) ~upper:110. ~step_incr:1.0 () in
|
||||
let mi = float_attrib "min" c
|
||||
and ma = float_attrib "max" c
|
||||
and value = float_attrib "neutral" c in
|
||||
let lower = min mi ma
|
||||
and upper = max mi ma in
|
||||
let adj = GData.adjustment ~value ~lower ~upper ~step_incr:1.0 () in
|
||||
let hbox = GPack.hbox ~packing:sliders#add () in
|
||||
let f = (ExtXml.attrib c "function") in
|
||||
let l = GMisc.label ~width:75 ~text:f ~packing:hbox#pack () in
|
||||
let inv = List.mem f inverted in
|
||||
let inv = not ((List.mem f inverted) == (ma < mi)) in
|
||||
let _scale = GRange.scale `HORIZONTAL ~inverted:inv ~adjustment:adj ~packing:hbox#add () in
|
||||
let update = fun () -> update_channel i (adj#value /. 100.) in
|
||||
let update = fun () -> update_channel i adj#value in
|
||||
|
||||
ignore (adj#connect#value_changed update);
|
||||
update ())
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
#define SYS_TICS_OF_USEC(x) (x)
|
||||
#define US_OF_CLOCK(x) (x)
|
||||
#define SYS_TICS_OF_USEC(x) ((x))
|
||||
#define SIGNED_SYS_TICS_OF_USEC(x) ((x))
|
||||
#define US_OF_CLOCK(x) ((x))
|
||||
#define SERVOS_TICS_OF_USEC(s) SYS_TICS_OF_USEC(s)
|
||||
|
||||
Reference in New Issue
Block a user