mirror of
https://github.com/iNavFlight/inav.git
synced 2025-07-24 16:55:29 +03:00
Add headtracker axis ratios
This commit is contained in:
parent
29a2d6935b
commit
0849408fa1
6 changed files with 61 additions and 7 deletions
|
@ -1822,6 +1822,36 @@ This setting limits yaw rotation rate that HEADING_HOLD controller can request f
|
|||
|
||||
---
|
||||
|
||||
### headtracker_pan_ratio
|
||||
|
||||
Head pan movement vs camera movement ratio
|
||||
|
||||
| Default | Min | Max |
|
||||
| --- | --- | --- |
|
||||
| 1 | 0 | 3 |
|
||||
|
||||
---
|
||||
|
||||
### headtracker_roll_ratio
|
||||
|
||||
Head roll movement vs camera movement ratio
|
||||
|
||||
| Default | Min | Max |
|
||||
| --- | --- | --- |
|
||||
| 1 | 0 | 3 |
|
||||
|
||||
---
|
||||
|
||||
### headtracker_tilt_ratio
|
||||
|
||||
Head tilt movement vs camera movement ratio
|
||||
|
||||
| Default | Min | Max |
|
||||
| --- | --- | --- |
|
||||
| 1 | 0 | 3 |
|
||||
|
||||
---
|
||||
|
||||
### headtracker_type
|
||||
|
||||
Type of headtrackr dervice
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
|
||||
#include "drivers/headtracker_common.h"
|
||||
|
||||
PG_REGISTER_WITH_RESET_TEMPLATE(headTrackerConfig_t, headTrackerConfig, PG_HEADTRACKER_CONFIG, 0);
|
||||
PG_REGISTER_WITH_RESET_TEMPLATE(headTrackerConfig_t, headTrackerConfig, PG_HEADTRACKER_CONFIG, 1);
|
||||
|
||||
PG_RESET_TEMPLATE(headTrackerConfig_t, headTrackerConfig,
|
||||
.devType = SETTING_HEADTRACKER_TYPE_DEFAULT
|
||||
|
|
|
@ -70,6 +70,9 @@ typedef struct headTrackerVTable_s {
|
|||
|
||||
typedef struct headTrackerConfig_s {
|
||||
headTrackerDevType_e devType;
|
||||
float pan_ratio;
|
||||
float tilt_ratio;
|
||||
float roll_ratio;
|
||||
} headTrackerConfig_t;
|
||||
|
||||
PG_DECLARE(headTrackerConfig_t, headTrackerConfig);
|
||||
|
|
|
@ -4251,3 +4251,24 @@ groups:
|
|||
field: devType
|
||||
type: uint8_t
|
||||
table: headtracker_dev_type
|
||||
- name: headtracker_pan_ratio
|
||||
description: "Head pan movement vs camera movement ratio"
|
||||
type: float
|
||||
default_value: 1
|
||||
field: tilt_ratio
|
||||
min: 0
|
||||
max: 3
|
||||
- name: headtracker_tilt_ratio
|
||||
description: "Head tilt movement vs camera movement ratio"
|
||||
type: float
|
||||
default_value: 1
|
||||
field: tilt_ratio
|
||||
min: 0
|
||||
max: 3
|
||||
- name: headtracker_roll_ratio
|
||||
description: "Head roll movement vs camera movement ratio"
|
||||
type: float
|
||||
default_value: 1
|
||||
field: tilt_ratio
|
||||
min: 0
|
||||
max: 3
|
|
@ -317,9 +317,9 @@ void gimbalSerialHeadTrackerReceive(uint16_t c, void *data)
|
|||
state->attitude.crcl = c;
|
||||
if(checkCrc(&(state->attitude))) {
|
||||
state->expires = micros() + MAX_HEADTRACKER_DATA_AGE_US;
|
||||
state->pan = state->attitude.pan;
|
||||
state->tilt = state->attitude.tilt;
|
||||
state->roll = state->attitude.roll;
|
||||
state->pan = constrain(state->attitude.pan * headTrackerConfig()->pan_ratio) + 0.5, -2048, 2047);
|
||||
state->tilt = constrain(state->attitude.tilt * headTrackerConfig()->tilt_ratio) + 0.5, -2048, 2047);
|
||||
state->roll = constrain(state->attitude.roll * headTrackerConfig()->roll_ratio) + 0.5, -2048, 2047);
|
||||
DEBUG_SET(DEBUG_HEADTRACKING, 2, pktCount++);
|
||||
} else {
|
||||
DEBUG_SET(DEBUG_HEADTRACKING, 3, errorCount++);
|
||||
|
|
|
@ -73,9 +73,9 @@ void mspHeadTrackerReceiverNewData(uint8_t *data, int dataSize)
|
|||
|
||||
headtrackerMspMessage_t *status = (headtrackerMspMessage_t *)data;
|
||||
|
||||
headTrackerMspDevice.pan = status->pan;
|
||||
headTrackerMspDevice.tilt = status->tilt;
|
||||
headTrackerMspDevice.roll = status->roll;
|
||||
headTrackerMspDevice.pan = constrain((status->pan * headTrackerConfig()->pan_ratio) + 0.5, -2048, 2047);
|
||||
headTrackerMspDevice.tilt = constrain((status->tilt * headTrackerConfig()->tilt_ratio) + 0.5, -2048, 2047);
|
||||
headTrackerMspDevice.roll = constrain((status->roll * headTrackerConfig()->roll_ratio) + 0.5, -2048, 2047);
|
||||
headTrackerMspDevice.expires = micros() + MAX_HEADTRACKER_DATA_AGE_US;
|
||||
|
||||
UNUSED(status);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue