Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
    Frank
    @r0ch1n
    Thank you very much @tridge !
    Andrew Tridgell
    @tridge
    the reference would usually be to the source code repo or documentation site: https://github.com/ArduPilot/MissionPlanner
    plus primary author, Michael Oborne
    send Michael a link to the paper when its published too, I'm sure he'd appreciate it!
    Frank
    @r0ch1n
    Excellent! Will do! Thanks
    githubtd01
    @githubtd01
    Is there a list of papers inthe wiki? Would be nice I think! Maybe Frank can start it, he might already have a collection of literature?
    Akshath-Singhal
    @Akshath-Singhal
    @tridge what is the possibility of excepting an alternate speed height controller for ArduPlane as compared to TECS?
    Andrew Tridgell
    @tridge
    @Akshath-Singhal I'm looking at the possibility of having external controller hooks at the moment, specifically matlab scripts. I'm starting with SITL backends, but I think having hooks for things like spd/height would be good too. I know this doesn't answer your question, but for research purposes having an external controller is nice
    Akshath-Singhal
    @Akshath-Singhal
    @tridge Allowing easier integration of external controllers would surely be amazing. It will reduce the effort required to test the controllers using SITL considerably. Let me know if I can be of any assistance.
    1iggy2
    @1iggy2
    @tridge For adding a new parameter for the quadplane transition engine cut off what file locations will need to be changed. I believe quadplane.cpp will be crucial, but are there any more areas that need to be changed simultaneously? Also is there a file somewhere that lists the functions used to write the code along with a brief description of inputs and outputs?
    Andrew Tridgell
    @tridge
    @Akshath-Singhal are you a matlab user any chance? I don't have experience with matlab myself, but I think supporting external matlab will be useful for SITL. If you are a matlab user would you like to be involved in helping develop this feature?
    @1iggy2 yes, quadplane.cpp is the main one. The change is complicated by needing to tell the AP_Motors API to fail a motor. You'll need to use the same method we use in tilt-rotors
    have a look at how that callback works. It allows the quadplane code to modify the power to each motor
    so you'd check for the transition conditions you want and then use the registered callback to lower power to the motors for a mask given in a parameter
    1iggy2
    @1iggy2
    @tridge Alright, we will look into integrating that soon. Finals are almost over. I have a member on my team that has been looking into using Matlab simulink to run SITL, it allows for solidworks files to be imported into the analysis. I'm sure he would be interested in helping with this task, although I don't know exactly what it entails. @Akshath-Singhal if you are going to work on this feature I will get you two in contact.
    Akshath-Singhal
    @Akshath-Singhal
    @tridge Yes I have been using MATLAB for a few years and possess intermediate level of knowledge using it. And I am interested in working on this. It will reduce my future efforts and of many others considerably.
    As bodyRate() is pre-commented as " // velocity - returns the velocity in m/s"
    Andrew Tridgell
    @tridge
    it is radians/sec
    Jaaaky
    @Jaaaky
    While in the mentioned line it is "// body inertial angular rate in rad/sec measured about the X and Y body axis. A RH rotation about a sensor axis produces a positive rate."
    Andrew Tridgell
    @tridge
    a flow sensor can't give velocity in m/s without a height
    you can multiply a corrected flow in rad/sec by the height to get velocity in m/s
    the "corrected flow" is flow rate in rad/s minus the gyro rate in rad/s
    Andrew Tridgell
    @tridge
    the comment is wrong, yes
    Luis Vale Gonçalves
    @lvale
    Jaaaky
    @Jaaaky

    I've noticed that one major problem for ArduPlane flying on GPS-denied environments is wind estimate, which if not very accurate can really make things very bad.
    So what If I've an external source of wind estimate? A separate device that can feed EKF with wind vector. Should then I just set stateStruct.wind_vel.x and stateStruct.wind_vel.y for every thing to be fine or there is something else?

    I've done a small experiment where I got very accurate wind estimate and injected it by setting the mentioned two variables. The wind was blowing from East, plane was flying into wind in AUTO mode - yaw was ~90 -, I've verified it got wind estimate correctly over telemetry/MP, then turned-off GPS using AUX switch, the plane kept going South East changing its yaw randomly between 100 and 190 but at ~110 most of time.
    arspd_use was activated and EKF3 was used.
    The same experiment had been run without wind_estimate injection - default arduplane - and things was too much worse, yaw turned to ~170 when GPS was off.

    What do you think?

    Robert Hedman
    @Trobolit

    Hi!
    I'm a masters student in control engineering and am doing my masters using a pixhawk with arduplane, but could use help navigating the code structure of arduplane firmware.
    I have developed a feedback linearized controller for a two engine flying fixed wing to support VTOL, without vectoring, that I would like to implement on a pixhawk/arduplane combo. The controller, in simulations, sucessfully can go any direction with any speed. No need for switching controller or gains. It automatically adjusts attitude to achieve the desired velocity vector.

    So far I've cloned the repo, built the firmware, uploaded it, modified the firmware to show simple console output in the ground staion, and reuploaded sucessfully.

    My idea was to hijack the FBWB mode and just insert my control algorithms there.
    I need access to the quaternion estimate, velocity, angular rates and position estimates.
    If motor speed and elevon/servo states are available those would be nice too.
    I need to be able to control both engines and both servos, or at least indirectly set their states.

    The simulator/control algorithm I've implemented also includes a waypoint navigator where it essentially tries to fly along the line between the two waypoints. Is this how arduplane already works? Should I just go ahead and implement my own tracker in FBWB or is there a way to use the already implemented features?

    Is this possible like I imagine?
    Would you recommend another way?
    kind regars
    Robert

    Akshath-Singhal
    @Akshath-Singhal
    @Trobolit That seems like an interesting project. Do you wish to use the underlying PID and generate the target RPY angles? In that case you can add a new mode and set nav_roll_cd and nav_pitch_cd.
    Most of the information is extended by ahrs
    Robert Hedman
    @Trobolit
    @Akshath-Singhal Nope! The idea is to move away from PIDs, a feedback linearized controller essentially makes a nonlinear system behave as a linear one, it is a full state controller. Which is why I kind of need raw access to the state estimates. :)
    This allows for a non switching controller to control everything from hover to flying. It may be worse in every single aspect but hopefully will work good enough to prove a point for my thesis :)
    Akshath-Singhal
    @Akshath-Singhal
    I am not sure but you might need to make ammends to the Attitude.cpp file in that case. https://github.com/ArduPilot/ardupilot/blob/bf11746da55a4830fa653e191c676b20eced37c8/ArduPlane/Attitude.cpp#L95
    Robert Hedman
    @Trobolit
    Ah, so there is no way to access e.g. stateStruct.position.z in file APNavEKF3*.cpp and directly manipulate servos from the mode_fbwb.cpp file?
    Akshath-Singhal
    @Akshath-Singhal
    I am not sure if its possible. You might have to make ammends to the RPY PID controllers. It depends on whether you want a quick hack to implement it or properly implement it.
    Mark Whitehorn
    @kd0aij
    Look at the way AC_AttitudeControl::attitude_controller_run_quat() and QuadPlane::tailsitter_output are implemented. Also, look at Ryan Beall's thesis on Adaptive Control: https://github.com/rbeall
    Robert Hedman
    @Trobolit

    @Akshath-Singhal At first I just want a quick n dirty hack to see if my controller ever would work in real life or just in simulations. If I do get that working i may be offered a position at a company that uses these drones to implement it properly. So at first I was thinking to just disable those somehow.

    @kd0aij Will do, thanks! At a first glance it seems he has the solution to my parameter estimation problem for the aircraft, so my controller could be ammended with his system to eliminate uncertanties! That would be great!
    It also seems he did implement this on a pixhawk, need to read more to see how. Are you guys using this now in the arduplane firmware for the autotune?

    Mark Whitehorn
    @kd0aij
    I don't think any adaptive control stuff has made it into master. So autotune would still be tuning PID controllers.
    Robert Hedman
    @Trobolit
    @kd0aij Allright!
    If my controller works, with adaptation stuff, maybe I should talk a bit more with one of you in depth developers to see if it would be something of interest to this project. Having a VTOL linear appearing controller state space thing for fixed wings might be fun to have around!
    Mark Whitehorn
    @kd0aij
    Take a look a the "copter tailsitter" support and QACRO mode to see where we are right now: https://discuss.ardupilot.org/t/dual-motor-tailsitters/15302/1796?u=kd0aij
    Note that is a quad-motor non-vectored configuration
    Robert Hedman
    @Trobolit
    @kd0aij Ah, so essentially a quadcopter disguised by some wings? The video shows pretty much exactly what I want to do though! But with a different controller of course.
    Mark Whitehorn
    @kd0aij
    QACRO uses only the multicopter controller, so it is an example of eliminating transitions from VTOL to FW flight
    Robert Hedman
    @Trobolit
    Oh! Nice! Shame that the binaries only seem to be available for fmuv*, do you know where his source is? Maybe I can compile it directly for my pixhawk?
    Mark Whitehorn
    @kd0aij
    This is the PR for that branch: ArduPilot/ardupilot#11195
    Robert Hedman
    @Trobolit
    @kd0aij Thanks! :D Will try it out once i rebuild my crashed wing :P
    Mark Whitehorn
    @kd0aij
    great! always nice to have more testing
    herlambangK
    @herlambangK
    Hello
    Peter Barker
    @peterbarker
    @herlambangK Hi!