Giter Site home page Giter Site logo

jeanlemotan / silkopter Goto Github PK

View Code? Open in Web Editor NEW
39.0 39.0 9.0 56.24 MB

UAV autopilot

Home Page: https://jeanleflambeur.wordpress.com/

License: BSD 3-Clause "New" or "Revised" License

QMake 0.21% C++ 51.55% CSS 0.07% JavaScript 0.02% Python 0.02% Shell 0.16% C 4.69% CMake 0.46% Fortran 2.78% Objective-C 0.01% Objective-C++ 0.01% Batchfile 0.01% Cuda 0.01% QML 0.02% Lex 0.01% Perl 0.01% M4 0.02% HTML 39.95% Lua 0.01%

silkopter's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

silkopter's Issues

FC: create a new CPPM RC node

This will take a CPPM stream and output a Multirotor_Commands stream.
Useful for using silkopter with classic RC systems like Frsky

FC: Make the entire FS read only

This is to prevent sd corruption in case of power loss.
A single partition should be made RW for saving videos and settings to it.

FC: add a flight recorder node

This should accept a variable number of input streams, each with its own type and rate and record them to disk in a way that would withstand a crash

FC: Convert the is_healthy flag in the IStream to a bit mask

I'd like to have more info instead of just a good/bad binary flag.

Some possible flags I could use:

VALID - when the stream contains usable info. If this is false, the stream contains garbage (and should be treated as such)
PRIMARY - when the stream is reliable and the data comes from a primary source. Example - ECEF position comes from GPS as opposed to being computed from baro + accelerometer

FC: implement hardware glitch filter for some nodes

It could work by discarding obviously broken samples.
For example if the GPS receives a position that is 100m away from the previous one, chances are it's not accurate
Or if the IMU receives gravity pointing left or a sudden huge rotation rate on one axis, smth is broken.

The node could skip the invalid sample at first, and if they keep happening it could mark the whole stream as invalid.

Viewer: create a hud

I need altitude, horizontal and vertical speeds, distance to home, direction to home, battery info etc

FC: sometimes the ANGLE hmode is unstable

There is constant wobbling. Switching to RATE and back to ANGLE fixes the issue.
The repro so far:

  • get some distance away from home
  • disconnect the RC
  • wait for the UAV to get back home
  • reconnect the RC
  • the UAV starts spinning due to a yaw bug *not sure it's related to this bug
  • sometimes the wobble starts

FC: Add a way for nodes to raise exceptions

The purpose is to have a way for communicating to the GS/RC various errors or warnings.

I could use logging with special topics for this purpose or better yet - a specific set of functions.
Smth like:
raise(Error, "Bus {} is unresponsive: {}", m_bus->get_name(), error_str);

RC: simpler disarm button assignment

Now disarming is done by releasing the ARM button while moving the stick to the low-left corner. It's a bit inconvenient.
Alternative ways would be press 2 distant buttons simultaneously.

I need this to be ale to quickly disarm in case of emergency.

FC: Add public configurable parameters for each node

The idea is to have some of the params from the config structure of each node public, so it can be changed live form the RC/Viewer.
For example the Rate PID, H/V/Y PIDs etc.
I don't need the whole config, just some of its params.
I'd also need some API to enumerate them, their type and ranges (including the items for enums) and assign them to the RC knobs for quick tuning.

FC: implement a failsafe for GPS loss

If GPS signal is lost the ECEF Position, Velocity and Linear Acceleration streams will get lost as well.
So Position HMode and Altitude VMode will stop working.

Possible solutions:

  1. Use Baro for Altitude VMode
  2. Switch to still functional modes: Angle hmode and throttle vmode and alert the user
  3. Switch to Dead Reckoning for both Altitude and Position. Altitude might work with the baro but Position will diverge instantly.
  4. Add GPS hardware redundancy to minimize the chances of this happening

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.