Quadrotor Launch Control (Throw launches)

For the past few months I have been attempting to create this exact feature for my dissertation, bit of a shame I have only just found this, but from what I have done so far come to the same point as @rousselmanu, this has been partly driven by having to make the application simple enough for it to be marked by someone without the knowledge of the field. The plan was to use simulink and the PSP. However, I am now going attempt to go the route suggested by @LorenzMeier to make it a more relevant piece of work. Although the commander seems to have changed significantly. Are there any updates on the original works in this topic?

Hi @Ethan_Bond,
The throw/free-fall detection part is working and has been merged with master (see parameters LNDMC_FFALL_THR and LNDMC_FFALL_TTRI to tune the detection). I did not go much further than that, but would definitely be interested if we can collaborate.
ArduPilot has a “throw” mode, maybe we can learn from it even if it seems very experimental! See http://ardupilot.org/copter/docs/throw-mode.html

1 Like

I noticed the free fall boolean when going through some data on drop tests I collected, and was curious where that had fed into the firmware. Needless to say I got very excited that a chunk of the project had already been completed, and then went on to find this topic. I will try and do a breakdown for the ardupilot code very soon. I have a report deadline on this due for Sunday so providing I get all my initial findings written up, it would be nice to add a breakdown of the ardupilot code to it. Then I will move on to getting my head around the commander module and hopefully get something to work in HITL.

Found another similar project being ran on the crazyflie seems pretty basic.
https://forum.bitcraze.io/viewtopic.php?t=1584, yet to look at it properly but look at it properly but as far as I am aware the crazyflie typically runs PX4.

UPDATE: Have made significant progress on the code, it has been a very simple case of editing land detection. I am not sure how the module will be controlled by Qground control yet, if someone could provide some in sight into how this is done that would be great. Otherwise for first test I will rely on execution via the terminal. :slight_smile:

@Ethan_Bond would be happy to help if you can open a pull request against PX4/Firmware with your changes.

Having looked at my code for ages, I am going to scrap it, and integrate the logic into the commander loop as previously suggested, it was hideously overly complicated as I took modifying the land_detection too literally. Shouldn’t take more than a day or so.

@Ethan_Bond Are you sharing a PR to have a look at?

I did a lot of modifications to the program again, came up with something that essentially performs the hold mode when thrown, using acceleration in z as the trigger. The only issue is it doesn’t like being thrown above 0.5m, it begins to break the fall, do attitude correction, then kills the thrust out to 0, then back to 100 then back to zero and so on randomly until disarmed. If you have any ideas I would love to know.


I will upload it as soon as I get chance, I just need to finish writing up my dissertation on this due tomorrow 11 pm eek, and then I have several engineering exams until the start of July I am still getting used to GitHub. My apologies for being such a huge pain in the ass and tease.

Here are my test results with regards to throw height didn’t manage many before an ESCs got fed up, I performed the tests on a 250 racing quad with pixhawk cube 2.

1 Like

What you need to do is let the land detector back off from disarming for a couple of seconds after you armed the system via the commander. Are you updating the system status to armed? I think at this point a pull request and logs (http://log.px4.io) are required. That will make it easy to have a technical discussion.

Hi Ethan

Can you contact me or send me your email plz

Hi,

Px4 throw launch mode was implemented and the test flight succeeded. QAV250 was used as airframe hardware platform, pixracer was used as flight controller hardware, and flight controller software was based on PX4 1.8.2.

According to the method proposed by rousselmanu, the procedure proceeded as follows.

  1. enable throw_launch mode by internal software variable.
  2. arm the UAV - motors are not started.
  3. switch to the mode you want (POSCTL)
  4. throw UAV into the air
  5. motors start as soon as freefall is detected, mortorr are started
  6. UAV is in the mode selected in 3 and flying.

https://www.youtube.com/watch?v=DWfNe7NPYl4

2 Likes

@jhlee This is cool! Where can I get more information on this? Do you plan to contribute on the flight stack?

Happy new year.
Sorry for the late reply.

I referenced rousselmanu’s comment and modified Commander.cpp source.

In this situation, I need more source stabilization and test.
There is a plan to do so if given the opportunity to apply to the flight stack later.

Thanks

@jhlee Any updates on this?

Based on the code by @rousselmanu [Quadrotor Launch Control (Throw launches) - #7 by rousselmanu], I have implemented similar behavior based on the current main branch: GitHub - zeroos/PX4-Autopilot at throw-mode .

I will continue working on it to make the code more refined and track the progress in this PR: [WIP] throw launch by zeroos ¡ Pull Request #21170 ¡ PX4/PX4-Autopilot ¡ GitHub .

If anyone has some suggestions please don’t hesitate to share them!

1 Like

Hi @mhkabir ,

I hope that finds you well.

I wonder what is the throw mode Development result so far? Is it already added to the flight mode options in PX4 or still? what’s the status please?

If I yes ardupilot in QGC would the throw mode in Ardupilot work in QGC?

Regards

Hey Falcon,

Please check https://github.com/PX4/PX4-Autopilot/pull/21170 for the most recent discussion. It has not been yet merged to main branch of PX4, but we’ve used it and it works for us. Hopefully, we’ll soon find a way to have it merged.

Please keep in mind we’re talking about PX4 here. Ardupilot is a different firmware, which had this feature already implemented a while ago (see the beginning of this thread).

1 Like

The throw launch feature has been merged!

Check out the documentation here: