dronecodeのコーディングルールを拝見いたしました。
あまりにもざっくりしていることもあり、保守性や品質まではいき渡っていなさそうと感じています。
そこで、日本には、組み込み系ソフトについて、コーディングルールというのを事細かく定義してるものがあります。
例えば、
・MISRAとか
・IPAの「組込みソフトウェア開発向けコーディング作法ガイド[C++言語版]」や
・凡ミスによる障害の回避ルール
これらのルールをベースにArduCopterのコードの品質を上げていきたい。
また、その過程で、不安なコードがあれば、不安を軽減していきたい。
その情報や修正案などのアップしたいと思い、このディスカッションを立ち上げました。
何卒、よろしくおねがいいたします。
Replies
ありがとうございます。
確かにLOG_DISARMEDの独立パラメーター化はmasterにしか反映されていないので、Copterの現行バージョンを使う場合は、ご指摘のようにビットマスクを使うのがが正解です。
Tomi Mizya said:
おめでとうございます。コミットのコメントもLucasさんが簡潔に書き換えてくれたようですね。
https://github.com/ArduPilot/ardupilot/commit/4eee3b1317b954c7c1df1...
murata,katsutoshi said:
setup.cpp の esc_calib メソッドで、入力文字コードですでに「'c'」をチェックしており、0x63でチェックする意は?
不要なチェックと思うんだけど。
if (c == 'c') {
break;
} else if (c == 0x03 || c == 0x63 || c == 'q') {
Lucas De Marchiさんから、最終コメントをいただきました。
せんざいさんに、プッシュしていただいた結果です。
ありがとうございました。
The fix is correct since we are using an unsigned value an in the case fast_loop method takes that long this would underflow, allowing an arbitrary high time for this loop iteration.
If your fast_loop() is taking that long you are screwed, but we at least can fix the underflow.
:
murata,katsutoshi said:
その他:ログ解析で原因が特定しやすくすることも保守性をあげることにつながるので検討してみます。
http://diydrones.com/group/japan-arducopter-group/forum/topics/gps-3
Log File C:\Users\muratakatsutoshi\AppData\Local\Temp\tmp448B.tmp.log
Size (kb) 2196.357421875
No of lines 26936
Duration 0:03:12
Vehicletype ArduCopter
Firmware Version V3.3.2
Firmware Hash 7f16e4d6
Hardware Type
Free Mem 0
Skipped Lines 0
Test: Autotune = NA -
Test: Balance/Twist = NA -
Test: Brownout = GOOD -
Test: Compass = WARN - Moderate change in mag_field (30.72%)
Test: Dupe Log Data = GOOD -
Test: Empty = GOOD -
Test: Event/Failsafe = FAIL - ERR found: CRASH
Test: GPS = GOOD -
Test: IMU Mismatch = GOOD - (Mismatch: 0.40, WARN: 0.75, FAIL: 1.50)
Test: Parameters = GOOD -
Test: PM = NA -
Test: Pitch/Roll = NA -
Test: Thrust = NA -
Test: VCC = GOOD -
Tom Pittengerさんから、最終コメントをいただきました。
In theory you could run a quadplane at 300 hz until it is in fixed wing mode then back to 50 during forward flight. Would be sketchy but in general I think we should strive to have all params work instantly and not require a reboot. Closing.
murata,katsutoshi said:
ArduPlane.cpp の loop メソッドの loop_us 変数が auto 変数ということで、ループするたびにメソッド参照しています。
この値はアクウティブに更新されることが無いと思い、static 変数にしてはと、PRいたしました。
uint32_t loop_us = 1000000UL / scheduler.get_loop_rate_hz();
コメントありがとうございます。
修正して、PRいたしました。
修正内容:
runメソッドの引用部内で選択するようにいたしました。
murata,katsutoshi said:
お望みの機能はコレですかね?
コメントありがとうございます。
AC 3.3.3、3.4.0-rc1 には組み込まれていないようで、残念です。
APは3.6.0で組み込んだようです。
Goro Senzai said: