[ArduPilot] バグを埋め込んだかもしれないとゾッとした話
去年の話ですが、ある問題を見つけて修正を行いました。
問題とは、レンジファインダーを使用して高度制御しながら、RTL(ホームへの帰還)に切り替えたときに、毎回設定した高度より50cm程度オーバーシュートすることでした。
上のグラフはSITLで再現させたときのものです。
フィルターの周波数を変更することで改善できたので、修正内容をPRしました。
PRしたのは去年(2020年)12月のことです。
そこから半年経ったある日のこと、あるユーザーがレンジファインダーを使用した自動飛行を行った場合に、高度が波打つように不安定になる現象が発生したとdiscussに挙げられました。
そこでまず最初に疑われたのが、冒頭に挙げた私の修正でした。
当時、実機とシミュレータの両方で問題が再現し、修正後は両方とも改善されたので問題ないだろうと思っていました。
ただ、いざ問題が発生しましたよと言われると、機体やレンジファインダーの種類によって、適正な周波数が異なるのか!?など不安がよぎりました。
開発版を使っていると他の人によって埋め込まれたバグを踏むことはよくありますが、自分が開発に参加していると自分が埋め込んだバグで他の人を困らせることもあるわけです。
そんな不安を抱えつつも、ArduPilotのメンテナーの人たちが切り分けを実施してくれます。
メンテナーの方は、私の修正をrevert(元に戻す)したものでユーザーにテストを依頼しました。しかし、問題は改善せず、同じ現象が発生しているとのことです。
そこで他に問題が無いかを調査して、SCurve navigationの機能追加の際の問題であることが判明し、修正されました。
自分の修正で埋め込まれたバグではないことにほっとしつつ、今後もしっかりと修正後のテストを行おうと心に誓ったできことでした。
今回の問題は、墜落ではないにせよ、飛行が不安定になる問題なので怖いですよね。不安な方は安定版を使うようにしてください。
今回の問題はbeta版の段階で発見され、修正されました。
テスターの方とメンテナーの方の日々の活動に感謝します。
ちなみに、この一連の経緯は以下にまとまっています。
安全なフライトを楽しんでください!