I’ve got a small blimp that I’d like to control with ArduPilot. I see there’s a directory “ardupilot/blimp” that’s been started within the last two months. Is that code usable, and is there any documentation on it available?
I found this thread from 2018 that included a demonstration of someone flying a blimp with Arduplane. Adding Airship / Blimp support
But if there’s dedicated blimp support coming soon would prefer to use that. Haven’t found any discussion of that part of the code on the forum. Also happy to help write docs, if that’s where the project is at.
The aircraft in the video is quite an unusual type of blimp - does the blimp code support only blimps propelled by fins, or also motor-propelled blimps?
Most blimps (including mine) look like the one in this video, propelled by 2-4 motors on servos, so would be controlled quite differently.
We ended up flying manually. We tried flying with ArduPlane, but the blimp didn’t fly well, and we didn’t spend much time trying to get it to work because we could accomplish all we needed to in manual mode.
Unless work has been done on a blimp mode since the summer, I think ArduPlane is still your best bet. Had we gone further, here’s the modifications to Ardupilot we would have tried:
Relax the waypoint accuracy threshold so that blimp doesn’t need to hit it that closely. We observed our vehicle flying close to a waypoint but being unable to hit it precisely, because of wind and its large turning radius, and then it would get stuck trying to get to the waypoint
Set ardupilot so that the blimp turns entirely with Yaw, rather than trying to do a roll turn
Turn off any differential thrust. This one depends on exactly your propulsion configuration, but we found that differential thrust wasn’t very useful for yaw control, and when ArduPilot tried to use it the blimp would be underpowered and struggle to maneuver
If possible, change the spiral climb settings to either use a much larger radius spiral, or disable it. We observed the blimp trying to spiral climb several times in a very tight radius, and it either climbed very slowly or actually sank while trying to climb.
Hi, sorry about the late reply. Thank you for your interest. @hendjosh Thanks for tagging me - I completely missed this post
I’ve been working on getting the documentation up, but some other things got in the way before I could finish it. I might just put up what I have so far so we can at least have the main parts of the docs up, though.
Yes, currently I’ve only added the fin-propelled version, however I kept the higher-level code fairly general purposely so that a propeller-driven blimp would be relatively easy to add once I or someone else has time for it (should just be a motor mixer in place of what the Fins class currently does in the code). The more traditional “airship”-style where pitch is controlled by control surfaces rather than just being pendulum stability would be a bit more involved, but not impossible. (Pull requests welcome ) At the moment I’m mainly focused on getting the autonomous mission capability added in and such.
@drtrigon Essentially what’s currently working in Blimp is the finned blimp with Manual or Loiter mode. The setup is mostly the standard ArduPilot setup (flight controller, rc receiver, telemetry etc) but for the fin servo positions & orientations I have a document I’m about to do a pull request for.
Hi, thanks for the great work. I’ve read the doc and tried to set up a blimp, there is a problem that I can’t arm it using a rc channel (CH5 1195-1795 ,trim 1195, option 153) switch, when switching CH5 from low to high, nothing happened, no message from the MP, not armed. But when it is armed, I can disarm it by switching CH5 from high to low (arm it first using MP). I’ve tried to change to RC5_TRIM value to 1795 and 1495 but the result is the same. are there any other parameters I have to set to make it work?
By default, I think channel 5 is set as the flight mode change channel. In that case it doesn’t also function as arm/disarm even if you set it. Try either unsetting that (using FLTMODE_CH parameter) or using a different channel for arm/disarm.
I use CH6 for flight mode switch, and after looking into the code, I found out that it seems channel high pos needs to above 1800… and my remote CH5 only reaches 1795.
enum class AuxSwitchPos : uint8_t {
LOW, // indicates auxiliary switch is in the low position (pwm <1200)
MIDDLE, // indicates auxiliary switch is in the middle position (pwm >1200, <1800)
HIGH // indicates auxiliary switch is in the high position (pwm >1800)
};
and I can’t find any parameters to set this value, so maybe i need to change a remote…