mirror of
https://github.com/iNavFlight/inav.git
synced 2025-07-26 01:35:35 +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
|
### headtracker_type
|
||||||
|
|
||||||
Type of headtrackr dervice
|
Type of headtrackr dervice
|
||||||
|
|
|
@ -40,7 +40,7 @@
|
||||||
|
|
||||||
#include "drivers/headtracker_common.h"
|
#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,
|
PG_RESET_TEMPLATE(headTrackerConfig_t, headTrackerConfig,
|
||||||
.devType = SETTING_HEADTRACKER_TYPE_DEFAULT
|
.devType = SETTING_HEADTRACKER_TYPE_DEFAULT
|
||||||
|
|
|
@ -70,6 +70,9 @@ typedef struct headTrackerVTable_s {
|
||||||
|
|
||||||
typedef struct headTrackerConfig_s {
|
typedef struct headTrackerConfig_s {
|
||||||
headTrackerDevType_e devType;
|
headTrackerDevType_e devType;
|
||||||
|
float pan_ratio;
|
||||||
|
float tilt_ratio;
|
||||||
|
float roll_ratio;
|
||||||
} headTrackerConfig_t;
|
} headTrackerConfig_t;
|
||||||
|
|
||||||
PG_DECLARE(headTrackerConfig_t, headTrackerConfig);
|
PG_DECLARE(headTrackerConfig_t, headTrackerConfig);
|
||||||
|
|
|
@ -4251,3 +4251,24 @@ groups:
|
||||||
field: devType
|
field: devType
|
||||||
type: uint8_t
|
type: uint8_t
|
||||||
table: headtracker_dev_type
|
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;
|
state->attitude.crcl = c;
|
||||||
if(checkCrc(&(state->attitude))) {
|
if(checkCrc(&(state->attitude))) {
|
||||||
state->expires = micros() + MAX_HEADTRACKER_DATA_AGE_US;
|
state->expires = micros() + MAX_HEADTRACKER_DATA_AGE_US;
|
||||||
state->pan = state->attitude.pan;
|
state->pan = constrain(state->attitude.pan * headTrackerConfig()->pan_ratio) + 0.5, -2048, 2047);
|
||||||
state->tilt = state->attitude.tilt;
|
state->tilt = constrain(state->attitude.tilt * headTrackerConfig()->tilt_ratio) + 0.5, -2048, 2047);
|
||||||
state->roll = state->attitude.roll;
|
state->roll = constrain(state->attitude.roll * headTrackerConfig()->roll_ratio) + 0.5, -2048, 2047);
|
||||||
DEBUG_SET(DEBUG_HEADTRACKING, 2, pktCount++);
|
DEBUG_SET(DEBUG_HEADTRACKING, 2, pktCount++);
|
||||||
} else {
|
} else {
|
||||||
DEBUG_SET(DEBUG_HEADTRACKING, 3, errorCount++);
|
DEBUG_SET(DEBUG_HEADTRACKING, 3, errorCount++);
|
||||||
|
|
|
@ -73,9 +73,9 @@ void mspHeadTrackerReceiverNewData(uint8_t *data, int dataSize)
|
||||||
|
|
||||||
headtrackerMspMessage_t *status = (headtrackerMspMessage_t *)data;
|
headtrackerMspMessage_t *status = (headtrackerMspMessage_t *)data;
|
||||||
|
|
||||||
headTrackerMspDevice.pan = status->pan;
|
headTrackerMspDevice.pan = constrain((status->pan * headTrackerConfig()->pan_ratio) + 0.5, -2048, 2047);
|
||||||
headTrackerMspDevice.tilt = status->tilt;
|
headTrackerMspDevice.tilt = constrain((status->tilt * headTrackerConfig()->tilt_ratio) + 0.5, -2048, 2047);
|
||||||
headTrackerMspDevice.roll = status->roll;
|
headTrackerMspDevice.roll = constrain((status->roll * headTrackerConfig()->roll_ratio) + 0.5, -2048, 2047);
|
||||||
headTrackerMspDevice.expires = micros() + MAX_HEADTRACKER_DATA_AGE_US;
|
headTrackerMspDevice.expires = micros() + MAX_HEADTRACKER_DATA_AGE_US;
|
||||||
|
|
||||||
UNUSED(status);
|
UNUSED(status);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue