Comments (13)
Now that is a GOOD IDEA. The debug fields. Will add.
from rotorflight-firmware.
The idea is to implement a new frame type for CRSF, which can encapsulate multiple sensors in a single frame. The FC can choose which sensors, and when to send the frames. This allows a very flexible telemetry, where the user can select exactly what sensors to send, and how often. Also, the sensors can be send only the they change.
In the FC firmware, a new frame type with the relevant sensor handling should be implemented.
In the Tx, a "Custom Script" (was mixer script) should be implemented. It would be reading the unknown telemetry frames, decoding them, and inserting the sensors + values back into EdgeTx.
from rotorflight-firmware.
At the end of the day, you will want to have something that feels more “native”, just to be able to take advantage of the possibilities with sensor values.
from rotorflight-firmware.
-
first of all, I missing very match the 6-12 cells voltage, like the FLVSS of frsky (this is one of things stopping me to move to elrs in the first place)
-
I love this ones: PID#, RTE#, LED#, Hspd, Hspd, Tspd
-
what are this ones? RT%, Tbat
-
Vbat is too generic, if I have motor battery, and battery for lights, and battery for RX, witch of them is Vbat? maybe better is
Vmot? -
why do we have Curr, if we have Iesc/Ibec/Ibus ? it's confusing.
-
I would add also longName=xxx" in 8 chars, as an optimistic approach that edgeTx (@raphaelcoeffic please...) will give us more than 4 char on ver 3.0 (what is the status on ethos? )
I think it is better to add description to each one in the code, so less guessing
from rotorflight-firmware.
I am going to edit this post until everybody agrees on the sensors and their names!
Update 11/6/2024 16:40
Update 12/6/2024 12:08
-- Heartbeat (millisecond uptime % 60000)
[0x0001] = { name="BEAT", unit=UNIT_RAW, prec=0, dec=decU16 },
-- Main battery voltage
[0x0011] = { name="Volt", unit=UNIT_VOLTS, prec=2, dec=decU16 },
-- Main battery current
[0x0012] = { name="Curr", unit=UNIT_AMPS, prec=2, dec=decU16 },
-- Main battery used capacity
[0x0013] = { name="Capa", unit=UNIT_MAH, prec=3, dec=decU16 },
-- Main battery State-of-Charge / fuel level
[0x0014] = { name="Fuel", unit=UNIT_PERCENT, prec=0, dec=decU8 },
-- Main battery cell count
[0x0020] = { name="Cel#", unit=UNIT_RAW, prec=0, dec=decU8 },
-- Main battery cell voltages
[0x0021] = { name="Cels", unit=UNIT_VOLTS, prec=2, dec=decCells },
-- Control Combined (hires)
[0x0030] = { name="Ctrl", unit=UNIT_RAW, prec=0, dec=decControl },
-- Roll Control angle
[0x0031] = { name="CRol", unit=UNIT_DEGREE, prec=1, dec=decS16 },
-- Pitch Control angle
[0x0032] = { name="CPtc", unit=UNIT_DEGREE, prec=1, dec=decS16 },
-- Yaw Control angle
[0x0033] = { name="CYaw", unit=UNIT_DEGREE, prec=1, dec=decS16 },
-- Collective Control angle
[0x0034] = { name="CCol", unit=UNIT_DEGREE, prec=1, dec=decS16 },
-- Throttle output %
[0x0035] = { name="Thr ", unit=UNIT_PERCENT, prec=0, dec=decS8 },
-- ESC voltage
[0x0041] = { name="EscV", unit=UNIT_VOLTS, prec=2, dec=decU16 },
-- ESC current
[0x0042] = { name="EscI", unit=UNIT_AMPS, prec=2, dec=decU16 },
-- ESC eRPM
[0x0043] = { name="EscR", unit=UNIT_RPMS, prec=2, dec=decS16 },
-- ESC PWM
[0x0044] = { name="EscP", unit=UNIT_PERCENT, prec=1, dec=decS16 },
-- ESC throttle
[0x0045] = { name="Esc%", unit=UNIT_PERCENT, prec=1, dec=decS16 },
-- ESC temperature
[0x0046] = { name="EscT", unit=UNIT_CELSIUS, prec=0, dec=decU8 },
-- ESC / BEC temperature
[0x0047] = { name="BecT", unit=UNIT_CELSIUS, prec=0, dec=decU8 },
-- ESC / BEC voltage
[0x0048] = { name="BecV", unit=UNIT_VOLTS, prec=2, dec=decU16 },
-- ESC / BEC current
[0x0049] = { name="BecI", unit=UNIT_AMPS, prec=2, dec=decU16 },
-- ESC Status Flags
[0x004A] = { name="EscF", unit=UNIT_RAW, prec=0, dec=decU32 },
-- Combined ESC voltage
[0x0080] = { name="Vesc", unit=UNIT_VOLTS, prec=2, dec=decU16 },
-- BEC voltage
[0x0081] = { name="Vbec", unit=UNIT_VOLTS, prec=2, dec=decU16 },
-- BUS voltage
[0x0082] = { name="Vbus", unit=UNIT_VOLTS, prec=2, dec=decU16 },
-- MCU voltage
[0x0083] = { name="Vmcu", unit=UNIT_VOLTS, prec=2, dec=decU16 },
-- Combined ESC current
[0x0090] = { name="Iesc", unit=UNIT_AMPS, prec=2, dec=decU16 },
-- BEC current
[0x0091] = { name="Ibec", unit=UNIT_AMPS, prec=2, dec=decU16 },
-- BUS current
[0x0092] = { name="Ibus", unit=UNIT_AMPS, prec=2, dec=decU16 },
-- MCU current
[0x0093] = { name="Imcu", unit=UNIT_AMPS, prec=2, dec=decU16 },
-- Combined ESC temeperature
[0x00A0] = { name="Tesc", unit=UNIT_CELSIUS, prec=0, dec=decU8 },
-- BEC temperature
[0x00A1] = { name="Tbec", unit=UNIT_CELSIUS, prec=0, dec=decU8 },
-- CPU temperature
[0x00A3] = { name="Tcpu", unit=UNIT_CELSIUS, prec=0, dec=decU8 },
-- Air temperature
[0x00A4] = { name="Tair", unit=UNIT_CELSIUS, prec=0, dec=decU8 },
-- Motor temperature
[0x00A5] = { name="Tmtr", unit=UNIT_CELSIUS, prec=0, dec=decU8 },
-- Battery temperature
[0x00A6] = { name="Tbat", unit=UNIT_CELSIUS, prec=0, dec=decU8 },
-- Heading (combined gyro+mag+GPS)
[0x00B1] = { name="Hdg ", unit=UNIT_DEGREE, prec=1, dec=decS16 },
-- Altitude (combined baro+GPS)
[0x00B2] = { name="Alt ", unit=UNIT_METERS, prec=2, dec=decS24 },
-- Variometer (combined baro+GPS)
[0x00B3] = { name="VSpd", unit=UNIT_METERS_PER_SECOND, prec=2, dec=decS16 },
-- Headspeed
[0x00C0] = { name="Hrpm", unit=UNIT_RPMS, prec=0, dec=decU16 },
-- Tailspeed
[0x00C1] = { name="Trpm", unit=UNIT_RPMS, prec=0, dec=decU16 },
-- Attitude (hires combined)
[0x0100] = { name="Attd", unit=UNIT_DEGREE, prec=1, dec=decAttitude },
-- Attitude pitch
[0x0101] = { name="Ptch", unit=UNIT_DEGREE, prec=0, dec=decS16 },
-- Attitude roll
[0x0102] = { name="Roll", unit=UNIT_DEGREE, prec=0, dec=decS16 },
-- Attitude yaw
[0x0103] = { name="Yaw ", unit=UNIT_DEGREE, prec=0, dec=decS16 },
-- Acceleration (hires combined)
[0x0110] = { name="Accl", unit=UNIT_G, prec=2, dec=decAccel },
-- Acceleration X
[0x0111] = { name="AccX", unit=UNIT_G, prec=1, dec=decS16 },
-- Acceleration Y
[0x0112] = { name="AccY", unit=UNIT_G, prec=1, dec=decS16 },
-- Acceleration Z
[0x0113] = { name="AccZ", unit=UNIT_G, prec=1, dec=decS16 },
-- GPS Satellite count
[0x0121] = { name="Sats", unit=UNIT_RAW, prec=0, dec=decU8 },
-- GPS PDOP
[0x0122] = { name="PDOP", unit=UNIT_RAW, prec=0, dec=decU8 },
-- GPS HDOP
[0x0123] = { name="HDOP", unit=UNIT_RAW, prec=0, dec=decU8 },
-- GPS VDOP
[0x0124] = { name="VDOP", unit=UNIT_RAW, prec=0, dec=decU8 },
-- GPS Coordinates
[0x0125] = { name="GPS ", unit=UNIT_RAW, prec=0, dec=decLatLong },
-- GPS altitude
[0x0126] = { name="GAlt", unit=UNIT_METERS, prec=1, dec=decS16 },
-- GPS heading
[0x0127] = { name="GHdg", unit=UNIT_DEGREE, prec=1, dec=decS16 },
-- GPS ground speed
[0x0128] = { name="GSpd", unit=UNIT_METERS_PER_SECOND, prec=2, dec=decU16 },
-- GPS home distance
[0x0129] = { name="GDis", unit=UNIT_METERS, prec=1, dec=decU16 },
-- GPS home direction
[0x012A] = { name="GDir", unit=UNIT_METERS, prec=1, dec=decU16 },
-- CPU load
[0x0141] = { name="CPU%", unit=UNIT_PERCENT, prec=0, dec=decU8 },
-- System load
[0x0142] = { name="SYS%", unit=UNIT_PERCENT, prec=0, dec=decU8 },
-- Realtime CPU load
[0x0143] = { name="RT% ", unit=UNIT_PERCENT, prec=0, dec=decU8 },
-- Model ID
[0x0200] = { name="MDL#", unit=UNIT_RAW, prec=0, dec=decU8 },
-- Flight mode flags
[0x0201] = { name="Mode", unit=UNIT_RAW, prec=0, dec=decU32 },
-- Arming disable flags
[0x0202] = { name="ARM ", unit=UNIT_RAW, prec=0, dec=decU32 },
-- Rescue state
[0x0203] = { name="Resc", unit=UNIT_RAW, prec=0, dec=decU8 },
-- Governor state
[0x0204] = { name="Gov ", unit=UNIT_RAW, prec=0, dec=decU8 },
-- Current PID profile
[0x0211] = { name="PID#", unit=UNIT_RAW, prec=0, dec=decU8 },
-- Current Rate profile
[0x0212] = { name="RTE#", unit=UNIT_RAW, prec=0, dec=decU8 },
-- Current LED profile
[0x0213] = { name="LED#", unit=UNIT_RAW, prec=0, dec=decU8 },```
from rotorflight-firmware.
I do not think we must continue with existing edgeTx names.
We have a chance to do it better:grinning:
I think it better if the first part is “who is reporting “
Second part “what is reported”
escV (the first or only esc)
escI (use I for current, since C can be interpreted as capacity)
escT (in the future: esc temperature)
es2V (second esc)
es3V
mcu% / mcuT
becV / becI
from rotorflight-firmware.
Hi, I'm thinking about sensors that indicate vibrations, i.e.
- VibH - vibrations that comes from Head (from raw gyro)
- VibT - vibrations that comes from Tail (from raw gyro)
- VibM - vibrations that comes from Motor (from raw gyro)
- VibU - unfiltered vibrations that leaks to PID (from filtered gyro)
Values could be normalized to deg/s, with some scaling we could fit in U8 size, U16 seems bit wasting bandwidth as usually 10-11 bits should be enough.
What do you think?
from rotorflight-firmware.
Some more comments:
What is the meaning of:
Combined ESC voltage? (and temp)
You can’t sum voltage like you can do with current.
BecC —> becI (c may be interpreted as capacity, big I is better)
Thr —> Thr% (Throttle output %)
There is a typo in esc current
EscV —> EscI
from rotorflight-firmware.
Updated.
The Combined ESC is a BF thing. It summs up currents, takes average of voltage, and maximum temperature.
"Thr" is a Frsky sensor. "Thr%" would make more sense though.
from rotorflight-firmware.
The ESC sensor grouping is important, because it is forwarding the telemetry from ESC.
For other sensors, the grouping is done the way it is most sensible, like temperatures together.
from rotorflight-firmware.
Hi, I'm thinking about sensors that indicate vibrations, i.e.
- VibH - vibrations that comes from Head (from raw gyro)
- VibT - vibrations that comes from Tail (from raw gyro)
- VibM - vibrations that comes from Motor (from raw gyro)
- VibU - unfiltered vibrations that leaks to PID (from filtered gyro)
Values could be normalized to deg/s, with some scaling we could fit in U8 size, U16 seems bit wasting bandwidth as usually 10-11 bits should be enough.
What do you think?
It's a good idea. But I'll leave it later, as we don't have any of this data available yet.
Right now, trying to get the data we have into the telemetry sensors.
from rotorflight-firmware.
Hi, I'm thinking about sensors that indicate vibrations, i.e.
- VibH - vibrations that comes from Head (from raw gyro)
- VibT - vibrations that comes from Tail (from raw gyro)
- VibM - vibrations that comes from Motor (from raw gyro)
- VibU - unfiltered vibrations that leaks to PID (from filtered gyro)
Values could be normalized to deg/s, with some scaling we could fit in U8 size, U16 seems bit wasting bandwidth as usually 10-11 bits should be enough.
What do you think?It's a good idea. But I'll leave it later, as we don't have any of this data available yet. Right now, trying to get the data we have into the telemetry sensors.
You are right, the more I think about it, the less certain I am about their names. Nevertheless I'm still thinking about this functionality, and I'll probably make a issue to discuss the details in the future.
However maybe it would be good to have some development fields, like debug1,2,3,4
to be able to verify some concepts, before we decide to add them to telemetry. Even with possibility to pass blackbox debug stream.
from rotorflight-firmware.
Related Issues (20)
- ESC Setup / programming (bidirectional telemetry) HOT 4
- Add RF specific tuning values to CMS HOT 9
- Tail kicking in hard pitch pumps
- ‘Corrupted’ throttle output with 760us throttle servo HOT 1
- Trim flight
- Add heading configuration option and magnetometer/compass telemetry HOT 2
- Forward Programming for Hobbywing Platinum V4 ESCs HOT 3
- Fix: set default gov_mode to OFF HOT 1
- Accumulated Governor Refactor Suggestions HOT 5
- Telemetry Reuse for Jeti HOT 5
- BB log / Auto delete, or overwrite, or rolling log so it is able to record always HOT 1
- Serial Pin Swap feature available without CLI commands HOT 4
- TTA with servo tail
- Better accelerometer signal filtering
- Throttle PWM direction swap for servo throttle HOT 1
- TTA with GOV Passthrough requires headspeed setting
- Refactor Governor for Nitro HOT 3
- Blackbox logging for ESC telemetry HOT 1
- Fix cell count does not affect configurator (potentially the internal calculation as well) HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rotorflight-firmware.