Recently, I was asked to shoot some stills and footage of a sportfishing yacht for a client. We went out on a beautiful morning with no wind and an almost perfectly calm ocean. If you wanted optimal conditions, its wasn't going to get much better than that morning.
I connected the battery to my custom built quadcopter running APM 2.6. It would not arm. We were sitting about 4 miles off shore, not moving, gently rocking on an ocean about as calm as I've seen it. I was trying to launch from the middle of the lowest platform of the boat, at the stern. I had good GPS. Everything else checked out. It would not arm.
As soon as I got back to dry land, I tried it again. It armed without hesitation. Apparently Arducopter needs to be on solid ground to initialize. So what next?
In doing my research, I found this thread:
Chris Anderson says, "Starting with 3.3, calibration on a moving surface will be easier. As far as the gimbal goes, it depends on the make. The 3DR Solo gimbal will calibrate on a boat, but not all will"
I have two points here. First, the gimbal is not an issue for me. Simple BGC lets you turn off the startup accelerometer calibration. It still works fine if you don't let it calibrate every time. Second, I'm using APM 2.6 so I'll have to upgrade to Pixhawk if I want to use Arducopter 3.3.
Arm on Shore first
Next, I found this thread:
The first person to comment boots his quad on shore, then takes it powered up, in his kayak. I see where that could work but that only gives me the use of one battery.
Bring a Laptop?
Considering the idea of calibrating on shore, what if I brought my laptop on the boat with me? I could power up on shore then launch from the boat and fly the first battery. After I return to the boat, I could connect APM to the laptop with USB, then disconnect and swap the flight battery for a fresh one. Would this work? I will do some experiments and post the results on this thread.
Dynamic RTL is a Separate Issue
I've already posted the desire for Dynamic RTL, where the copter returns to YOU instead of the original launch location. Obviously this is desirable for any mission launched from a boat. It seems like a much easier feature to add. The Tower app already knows your GPS location in order to do "follow me" mode. The DJI Inspire already has this feature. My thread is here:
I will post more information as I find it. Hopefully this thread will be a resource for those wanting this feature.
Ardupilot on GitHub
On https://github.com/diydrones/ardupilot/issues/1361 it says:
There are two risks for arming and taking off on boats. The first one is that the gyro calibration will likely fail. It'll go with it's best guess which is likely ok most of the time but at least one case has been reported where the vehicle got a case of "the leans". I.e. the pilot had to keep pulling further and further back on the pitch stick to keep it level... eventually there wasn't enough stick left and it flipped over. This is because the gyro calibration didn't work very well. Plane has a parameter that allows skipping the gyro cal, we don't have it in copter although it's easy to add.
The 2nd less risky issue is the pre-arm checks will fail if it thinks the vehicle is moving over 50m/s (i.e. 1.5feet / second). This can be disabled by setting the ARMING_CHECK to Skip INS.
For Landing there may be an issue with the landing check's 30deg/sec rotation rate not being passed meaning the vehicle cannot be disarmed in AltHold or Loiter.
Looks like more reasons to arm on shore, then keep it powered while on the boat. Also, I think it would ALWAYS be best to take off from a stationary boat, rather than a moving boat. I can imagine situations where you don't have control over the boat coming to a stop for you, but then I question whether you should be trying to fly in those situations.
Discussion on 3DRpilots.com
This is an interesting discussion. Someone raised the point that if you're moving and you take off in Loiter mode, the quad could slam back into you or the boat. Well, this just confirms my previous post. I want to take off from a STATIONARY vessel and I certainly want to be LANDING on one as well. =)
"Boat Mode" on MikroKopter
On http://mikrokopter.altigator.com/boat-mode-take-off-from-a-boat-n-3... it says:
Since the version 2.08, MikroKopter has a "boat" mode which has been especially developed in order to solve the takeoff problem on a platform that is in motion (like a boat, or every other moving landing surface).
This method uses as reference the last values of the gyros that were saved during the most recent initialization made on the mainland. It is therefore important to have completed this process (initialization) during the last 1 or 2 days before, because these sensors are quite sensitive and unstable in medium term.
The article continues by showing a special stick configuration that arms the copter in "Boat Mode". It seems like it wouldn't be too difficult to implement this feature. The code might include "safety rules":
- The timestamp of the last saved values must be within the last n hours. (n defaults to 3? (i.e. a "3 hour tour")
- Loiter cannot be used for launch unless the speed of the boat/platform is close to zero (less than 1m/s?)
- In "Boat Mode", RTL would automatically change to "Dynamic RTL" if the telemetry radio is connected.
1. Is that when you can RTL from a boat, I would fly the copter as close as possible before hitting RTL, so that the boat hasnt had a chance to moved much since it acuired its GPS fix. (Now I am making the assumption that the newer RTL Chris was talking about takes the GPS position of the ground (or water, he he) once you it RTL. Now if it updates every 5 seconds or so that would be another matter)
2. I didnt want to believe it first...But the Pixhawk is FAR superior then the APM for multi Copters. All of Inertial guidance software is huge and has to run fast just to keep the copter level (or at least where it should be) on top of the code for flying. Now for a plane or the like you dont need that high level of Inertial guidance. So the speed and memory size of the APM should be fine for awhile (plus those Pixhawk Pitot tubes are Bloody expensive!)
Now if youve already got a newer GPS you sholdnt have much to buy that works with the Pix. I had to re-pin my older telemetry...But there are cables avalibe, and all the new one come with 2. Now whether you spend $90 for a knockoff or $199 for the real deal is your call. Personally I have had about the same luck with bad modules from 3DR as I have had for knockoffs. SO your call on that one.
But If you think about what youve put into your copter, and what you stand to lose......Would you really want to run and outdated module? Now I was first to the party with the APM and Ive owned every version theyve had. With the pixhawk I held off. And for a long time the 2 were so close that it wasnt a big deal...My point is I am not a jump on the bandwagon and digg my heels in kinda guy. But this ones worth it....and there is really nothing new you have to learn about it. my biggest deal was PPM Sum....But I just Frsky X8R with new long range ends on it for $35 to solve that problem. I could have flashed my existing module....But I could use an extra so....
We don't really make it easy to arm from a boat in Copter-3.2.1 or even Copter-3.3 because of the gyro calibration step that's required. Surely for Copter-3.4 it'll be easy.
It's amazing how many people ask for this. I guess it's important!
Randy ... You are right this is very important. It is actually more important than a just boat. In grass, wet ground or very rocky area it is not possible or maybe desirable to put on a "flat" stable surface.
It would be nice to be able to arm while holding over your head. (I know ... only for professionals)
What more is required than to offer a parameter that sets the amount of motion allowed inorder to arm?
The PX4 version for example is far less fussy to arm if slightly tilted or moving.
Randy - In thinking about the solution, i'm also wondering if the following related issues are also optimal:
1) is the heading in stabilize mode taken on power-up, the armed event, or on on the throttle-up event?
2) is the RTL position taken on power-up, armed, or throttle-up?
i'm thinking that the best answer is upon the armed event for all cases in any situation.
Tall grass? If using a multi-copter to photo waterfalls in the mountains, how is one supposed to take off in tall grass on a knoll?
Basecam gimbal firmware has an option to skip gyro calibration upon start-up. It stores the latest numbers, which you can update by unchecking the option as needed. Now i know why it has that option.
Don't believe it makes sense to try to think about the solution from ones experience or perspective. This is so rapidly developing that the only universal solution is something like parameters and scripts.
The PX4 firmware version of the Pixhawk has simple notepad.txt application files on the SD card. There are files for startup, mixing and special parameters. As an example if you are running a servo on a channel, an update rate of 400Hz will burn many servos up. So you can set the update rated for each channel and use 400Hz for ESC motor controls and 50Hz for servos.
The PX4 is concentrated more towards autonomous solutions, like unattended launches from the top of a swaying wind turbine.
PS: On the other end of the spectrum, the $50 toys are coming out with heading hold, RTL and oh BTW ... will launch from a boat.
Interested in Randy's input, he has been sitting at the head of the table on this topic a long time.