アゞャむルvsりォヌタヌフォヌル重芁なアルゎリズムの開発蚭蚈

滝を想像しおみおください。パワフル。申し分のない。垞に差し迫った降䞋に向かっお前進したす。宇宙のいく぀かの基本的な力の1぀によっお駆動されたす。



滝はその性質䞊玠晎らしいので、゚ンゞニアが滝に倢䞭になっおいるのも圓然です。りォヌタヌフォヌルモデルの䜿甚を掚奚する叀いDOD-STD-2167A暙準、および私のレガシヌ゚ンゞニアリングの背景はフェヌズゲヌトモデルに基づいおいたした。これは、私の芋解ではりォヌタヌフォヌルモデルにかなり䌌おいたす。䞀方、倧孊でコンピュヌタサむ゚ンスを研究しおいた私たちは、りォヌタヌフォヌルモデルが䜕らかの圢でアンチパタヌンであるこずを知っおいるでしょう。アカデミックな象牙の塔にいる私たちの友人は、いいえ、いいえ、アゞャむルを教えおくれたす成功ぞの道であり、業界はその䞻匵が真実であるず蚌明したようです。



では、開発者は老朜化したりォヌタヌフォヌルモデルず新しくできたアゞャむルのどちらを遞択するべきでしょうかアルゎリズムの開発に関しお、方皋匏は倉わりたすかたたは、いく぀かのセキュリティクリティカルな゜フトりェア



い぀ものように、答えはその䞭間にありたす。



ハむブリッド、スパむラル、Vパタヌン



ハむブリッド開発は真ん䞭にある答えです。りォヌタヌフォヌルモデルが前に戻っお芁件を倉曎するこずを蚱可しない堎合、ハむブリッドモデルは蚱可したす。たた、アゞャむルに先行蚭蚈の問題がある堎合、ハむブリッド開発はその䜙地を残したす。さらに、ハむブリッド開発の目的は、最終補品の欠陥の数を枛らすこずです。これは、セキュリティが重芁なアプリケヌションのアルゎリズムを蚭蚈するずきにおそらく必芁なこずです。



良さそうに聞こえたすが、どれほど効果的ですか



この質問に答えるために、NDTロヌカリれヌションアルゎリズムに取り組みながら、ハむブリッド開発に賭けおいたす。... ロヌカリれヌションは、玔粋な反応制埡を超える自動運転スタックの重芁な郚分です。私を信じない、たたはロヌカリれヌションに䞍慣れな堎合は、このプロセスを通じお開発された蚭蚈ドキュメントをいく぀か確認するこずを匷くお勧めしたす。



芁するに、ハむブリッド開発ずは䜕でしょうか。私のアマチュアの芳点からは、これは理想的なV字型たたはスパむラルモデルであるず蚀えたす。蚈画、蚭蚈、実装、およびテストを行い、その間に孊んだ教蚓ずその間に埗た新しい知識に基づいお、プロセス党䜓を繰り返したす。



実甚



具䜓的には、我々は、Autoware.AutoでNDTワヌキンググルヌプで、準備のために぀たり、私たちは蚭蚈段階を通じお最初の反埩を行っおいるV-モデルの巊カスケヌドダりン我々の最初の降䞋を完了したロンドンのAutowareハッカ゜ンで実行Parkopedia。蚭蚈フェヌズの最初のパスは、次のステップで構成されおいたした。



  1. 文献展望
  2. 既存の実装の抂芁
  3. 高レベルのコンポヌネント、ナヌスケヌス、芁件の蚭蚈
  4. 障害分析
  5. 指暙の定矩
  6. APIのアヌキテクチャず蚭蚈


䌌たようなものに興味がある堎合は、結果の各ドキュメントを確認できたすが、この蚘事の残りの郚分では、それらのいく぀かを分析しお、これらの各段階で䜕が、どのようにしお生たれたのかを説明したす。



文献ず既存の実装のレビュヌ



きちんずした取り組み぀たり、NDT実装を分類する方法の最初のステップは、他の人が䜕をしたかを確認するこずです。結局のずころ、人間は瀟䌚的な存圚であり、私たちのすべおの業瞟は巚人の肩の䞊に立っおいたす。



ほかに、「過去の芞術」を怜蚎する際に考慮すべき重芁な領域が2぀ありたす。それは、孊術文献ず機胜の実珟です。



貧しい倧孊院生が飢饉の最䞭に䜕に取り組んでいたのかを調べるこずは垞に圹に立ちたす。せいぜい、独自のアルゎリズムの代わりに実装できる完党に優れたアルゎリズムがあるこずがわかりたす。最悪の堎合、゜リュヌションの空間ずバリ゚ヌション情報アヌキテクチャに圹立ちたすの理解が埗られ、アルゎリズムの理論的基盀したがっお、泚意が必芁な䞍倉条件に぀いお孊ぶこずもできたす。



䞀方、他の人が䜕をしおいるかを確認するこずも同様に圹に立ちたす。結局のずころ、開始プロンプトで䜕かを始めるのが垞に最も簡単です。優れたアヌキテクチャのアむデアを無料で借りられるだけでなく、アルゎリズムを実際に機胜させるために必芁な掚枬やダヌティなトリックを発芋するこずもできたすそれらをアヌキテクチャに完党に統合するこずもできたす。NDTの文献のレビュヌ



から、以䞋の有甚な情報を収集したした。



  • NDTファミリヌのアルゎリズムにはいく぀かのバリ゚ヌションがありたす。

    -P2D

    -D2D-

    制限付き

    -セマンティック
  • アルゎリズムのパフォヌマンスを向䞊させるために䜿甚できるダヌティなトリックがたくさんありたす。
  • NDTは通垞ICPず比范されたす
  • NDTは少し高速で、信頌性が少し高くなっおいたす。
  • NDTは、定矩された領域内で確実に動䜜したす高い成功率を持っおいたす


驚くべきこずは䜕もありたせんが、この情報は、蚭蚈ず実装の䞡方で埌で䜿甚するために保存できたす。



同様に、既存の実装の抂芁から、具䜓的な手順だけでなく、興味深い初期化戊略もいく぀か芋たした。



ナヌスケヌス、芁件、メカニズム



蚭蚈たたは蚈画優先の開発プロセスの䞍可欠な郚分は、高レベルで解決しようずしおいる問題に察凊するこずです。広矩では、機胜安党の芳点私は告癜したすが、専門家ずは皋遠いですの芳点から、「問題の高レベルな芋方」はおおよそ次のように構成されおいたす。



  1. どのようなナヌスケヌスを解決しようずしおいたすか
  2. 䞊蚘のナヌスケヌスを満たす゜リュヌションの芁件たたは制限は䜕ですか
  3. 䞊蚘の芁件を満たすメカニズムは䜕ですか


䞊蚘のプロセスは、問題の統制のずれた高レベルのビュヌを提䟛し、埐々に詳现になりたす。



これがどのように芋えるかを理解するために、NDTの開発に備えおたずめた高レベルのロヌカリれヌションプロゞェクトドキュメントをご芧ください。寝る前に読む気分がない堎合は、読み続けおください。



ナヌスケヌス



私はナヌスケヌスぞの3぀の思考アプロヌチが奜きです泚意、私は機胜安党の専門家ではありたせん。



  1. コンポヌネントは䜕をするこずになっおいたすかSOTIFを思い出しおください
  2. コンポヌネントに入力を入力する方法は䜕ですか入力ナヌスケヌス、私はそれらを䞊流に呌びたい
  3. 出力を取埗する方法は䜕ですか週末たたはトップダりンの䜿甚䟋
  4. おたけの質問このコンポヌネントは、システムアヌキテクチャ党䜓に垞駐できたすか


すべおをたずめるず、次のこずがわかりたした。



  • ほずんどのアルゎリズムはロヌカリれヌションを䜿甚できたすが、最終的にはロヌカルずグロヌバルの䞡方で機胜するフレヌバヌに分割できたす。
  • ロヌカルアルゎリズムは、倉換履歎の継続性を必芁ずしたす。
  • ほがすべおのセンサヌをロヌカリれヌションデヌタの゜ヌスずしお䜿甚できたす。
  • ロヌカリれヌションメ゜ッドを初期化しおトラブルシュヌティングする方法が必芁です。


考えられるさたざたなナヌスケヌスずは別に、非垞に厳しい䞀般的なナヌスケヌスに぀いおも考えたいず思いたす。これを行うには、完党に無人のオフロヌド旅行のオプションたたはタスクがあり、キャラバンで亀通のあるいく぀かのトンネルを通過したす。この䜿甚䟋には、オドメトリ゚ラヌの环積、浮動小数点゚ラヌ、ロヌカリれヌションの修正、機胜停止など、いく぀かの䞍郜合がありたす。



必芁条件



ナヌスケヌスを開発する目的は、解決しようずしおいる問題を䞀般化するこずに加えお、芁件を定矩するこずです。ナヌスケヌスを実行するたたは満足させるには、おそらく実珟たたは可胜でなければならないいく぀かの芁因がありたす。぀たり、各ナヌスケヌスには特定の芁件セットがありたす。



結局、ロヌカリれヌションシステムの䞀般的な芁件はそれほど怖いものではありたせん。



  • ロヌカルアルゎリズムの倉換を提䟛する
  • グロヌバルアルゎリズムに倉換を提䟛する
  • 盞察ロヌカリれヌションアルゎリズムの初期化メカニズムを提䟛する
  • コンバヌゞョンが波及しないようにする
  • REP105コンプラむアンスを確保


資栌のある機胜安党の専門家は、さらに倚くの芁件を策定する可胜性がありたす。この䜜業の䟡倀は、メカニズムず同様に、アルゎリズムの操䜜に関する芁件を満たす蚭蚈の特定の芁件たたは制限を明確に定匏化しおいるずいう事実にありたす。



メカニズム



あらゆる皮類の分析の最終結果は、実践的なレッスンたたは教材のセットになるはずです。分析の結果、その結果を䜿甚できない堎合負の結果でも、分析は無駄になりたす。



高レベルの゚ンゞニアリングドキュメントの堎合、䞀連のメカニズムたたはこれらのメカニズムをカプセル化するコンストラクトに぀いお説明したす。これらは、ナヌスケヌスに適切に察応できたす。



この特定の高レベルのロヌカリれヌション蚭蚈により、ロヌカリれヌションシステムのアヌキテクチャを構成する゜フトりェアコンポヌネント、むンタヌフェヌス、および動䜜のセットが可胜になりたした。提案されたアヌキテクチャの簡単なブロック図を以䞋に瀺したす。



画像



アヌキテクチャやデザむンに関する詳现情報に興味がある堎合は、ドキュメントの党文。



障害分析



セキュリティが重芁なシステム䞊にコンポヌネントを構築しおいるため、障害は回避するか、少なくずも軜枛する必芁がありたす。したがっお、䜕かを蚭蚈たたは構築しようずする前に、少なくずも物事がどのように壊れるかを認識しおおく必芁がありたす。



障害を分析する堎合、ほずんどの堎合ず同様に、コンポヌネントを耇数の角床から芋るず䟿利です。NDTアルゎリズムの倱敗を分析するために、䞀般的な盞察的なロヌカリれヌションメカニズムずしお、特にNDTアルゎリズムのむンスタンスずしお、2぀の異なる方法でそれを怜蚎したした。



ロヌカリれヌションメカニズムの芳点から芋るず、䞻な障害モヌドは次のように定匏化されたす-「入力が誀ったデヌタである堎合の察凊方法」。実際、個々のコンポヌネントの芳点からは、システムの劥圓性に関する基本的なチェックを行う以倖に、ほずんど䜕もできたせん。システムレベルでは、远加のオプションたずえば、セキュリティ機胜の有効化がありたす。



NDTを単独のアルゎリズムずしお考える堎合、適切な数の偎面を匷調するこずにより、アルゎリズムから抜象化するこずは有甚です。アルゎリズムの疑䌌コヌドバヌゞョンに泚意を払うず圹立ちたすこれは、開発者がアルゎリズムをよりよく理解するのに圹立ちたす。この堎合、アルゎリズムを詳现に分析し、アルゎリズムが砎損する可胜性のあるすべおの状況を調査したした。



実装゚ラヌは完党に劥圓な゚ラヌですが、適切なテストで修正できたす。数倀アルゎリズムに関するいく぀かのニュアンスは、もう少し頻繁に、そしおより陰湿に珟れ始めたした。特に、逆行列を芋぀けるこず、たたはより䞀般的には、数倀誀差に぀ながる可胜性がある線圢方皋匏のシステムを解くこずに぀いお話したす。これは非垞にデリケヌトな障害シナリオであり、察凊する必芁がありたす。



私たちが特定した他の2぀の重芁な障害は、特定の匏の倧きさが無制限でないこずの怜蚌浮動小数点粟床制埡ず、入力の倧きさたたはサむズが垞に監芖されおいるこずの怜蚌です。



合蚈で、15の掚奚事項を䜜成したした... それらに慣れるこずをお勧めしたす。



たた、この方法は䜿甚したせんでしたが、フォヌルトツリヌ分析は、障害分析の問題を構造化および定量化するための優れたツヌルです。



指暙の定矩



「枬定察象は管理可胜」

-管理者の人気のフレヌズ
残念ながら、専門胜力開発では、肩をすくめお䜕かに取り組んでいるずきに「完了」ず蚀うだけでは䞍十分です。基本的に、ワヌクパッケヌゞこれもNDT開発ですには受け入れ基準が必芁です。受け入れ基準は、顧客ずサプラむダヌの䞡方が同意する必芁がありたす顧客ず販売者の䞡方の堎合は、この手順をスキップしおください。これらの偎面をサポヌトするための法孊はすべお存圚したすが、゚ンゞニアずしお、コンポヌネントの可甚性を刀断するためのメトリックを䜜成するこずで、仲介者を簡単に排陀できたす。結局のずころ、数倀はほずんど明確であり、反駁できないものです。



受け入れ基準が䞍芁たたは無関係である堎合でも、プロゞェクトの品質ずパフォヌマンスを特城づけ、改善する明確に定矩されたメトリックのセットがあるこずは、それでも玠晎らしいこずです。結局、枬定されおいるものは制埡可胜です。



以䞋のために私たちのNDTの実装、我々は4぀の倧きなグルヌプにメトリックを分割したした



  1. 䞀般的な゜フトりェア品質指暙
  2. 䞀般的なファヌムりェア品質指暙
  3. アルゎリズムの䞀般的なメトリック
  4. ロヌカリれヌション固有のメトリック


これらの指暙はすべお比范的暙準的なものであるため、詳现には觊れたせん。重芁なこずは、特定の問題に぀いおメトリックが定矩および識別されおいるこずです。これは、オヌプン゜ヌスプロゞェクトの開発者ずしおおおよそ達成できるこずです。最終的に、受け入れの基準は、システムを展開する人によるプロゞェクトの詳现に基づいお決定する必芁がありたす。



ここで最埌に繰り返したすが、メトリックはテストするのに玠晎らしいですが、実装の理解ず䜿甚法の芁件をチェックする代わりにはなりたせん。



アヌキテクチャずAPI



私たちが解決しようずしおいる問題を入念に定矩し、゜リュヌションスペヌスの理解を構築した埌、最終的に実装に接する領域に飛び蟌むこずができたす。



私は最近、テスト駆動開発のファンになっおいたす。ほずんどの゚ンゞニアず同様に、私は開発プロセスが倧奜きで、テストを曞くずいう考えは、最初は面倒に思えたした。私が専門的にプログラミングを始めたずき、私はたっすぐ進み、開発埌にテストを行いたした倧孊の教授から反察のこずを蚀われたしたが。研究実装前にテストを䜜成するず、バグが少なくなり、テストカバレッゞが高くなり、䞀般にコヌドが改善される傟向があるこずを瀺しおいたす。おそらくもっず重芁なこずは、テスト駆動開発がアルゎリズム実装の倧きな問題に察凊するのに圹立぀ず私は信じおいたす。



それはどのように芋えたすか



「実装NDT」テストを含むず呌ばれるモノリシックチケットを導入する代わりに、数千行のコヌド効果的に衚瀺および調査できないをもたらす代わりに、問題をより意味のあるフラグメントに分割できたす。



  1. アルゎリズムのクラスずパブリックメ゜ッドを蚘述するアヌキテクチャを䜜成する
  2. 公開APIを䜿甚しおアルゎリズムのテストを蚘述したす倱敗するはずです。
  3. アルゎリズムのロゞックを実装する


したがっお、最初のステップは、アルゎリズムのアヌキテクチャずAPIを蚘述するこずです。他の手順に぀いおは別の投皿で説明したす。



「アヌキテクチャを䜜成する」方法に぀いおは倚くの䜜品がありたすが、゜フトりェアアヌキテクチャの蚭蚈は黒魔術ず関係があるように思えたす。個人的には、゜フトりェアアヌキテクチャは抂念の境界を描くこずず考え、問題を提起する際の自由床ず、抂念の芳点からそれを解決する方法を特城付けるこずを考えたいず思いたす。



では、NDTの自由床ずは䜕でしょうか。



文献をレビュヌするず、スキャンず芳察結果を提瀺する方法はいく぀かあるこずがわかりたす䟋P2D-NDTおよびD2D-NDT。同様に、高レベルの゚ンゞニアリングペヌパヌでは、マップを衚珟する方法がいく぀かあるず述べおいたす静的および動的、これも自由床です。最近の文献では、最適化の問題を再怜蚎するこずも提案されおいたす。ただし、実際の実装ず文献を比范するず、最適化゜リュヌションの詳现でさえ異なる堎合があるこずがわかりたす。



そしおリストはどんどん続きたす。初期蚭蚈の結果に



基づいお、次の抂念を決定したした。



  • 最適化の問題
  • 最適化゜リュヌション
  • スキャンビュヌ
  • マップビュヌ
  • 初期仮説生成システム
  • アルゎリズムずノヌドのむンタヌフェヌス


これらのアむテムの䞭にいく぀かの现分化がありたす。



アヌキテクチャの究極の期埅は、それが拡匵可胜で保守可胜でなければならないずいうこずです。私たちの提案するアヌキテクチャがこの垌望に応えるかどうかは、時間だけがわかりたす。



さらに



もちろん、蚭蚈埌は実装の時間です。Autoware.AutoにおけるNDTの実斜に関する公匏の仕事はで行ったAutowareのハッカ゜ンが䞻催Parkopedia。



このテキストに瀺されおいるのは、蚭蚈フェヌズの最初のパスにすぎないこずを繰り返したす。知られおいる敵に立ち向かうたでの戊いの蚈画はありたせん。゜フトりェア蚭蚈に぀いおも同じこずが蚀えたす。りォヌタヌフォヌルモデルの最終的な倱敗は、仕様ず蚭蚈が完璧であるずいう前提で行われたした。蚀うたでもなく、仕様も蚭蚈も完璧ではありたせん。実装ずテストが進むに぀れお、欠陥が発芋され、ここで説明する蚭蚈ずドキュメントに倉曎を加える必芁がありたす。



そしお、それは倧䞈倫です。私たちぱンゞニアずしお、私たちの仕事ではありたせんし、それず同䞀芖するこずもできたせん。 NDTの開発に぀いおそれがすべお述べられた埌、私は良い第䞀歩を螏み出したず思いたす。



チャンネル登録

@TeslaHackers — Tesla-, Tesla

@AutomotiveRu — ,







画像



- automotive . 2500 , 650 .



, , . ( 30, ), -, -, - (DSP-) .



, . , , , . , automotive. , , .


:






All Articles