更新日: 2026-08-21
対象: Issue #69 / Track #89〜#95 時点の実装
Issue #97のレビュー結果は、現行仕様
隣接耕基本経路パターン1へ整理した。
この文書は、現在のコードが実際に行っていることを、変数名やStage番号に依存せず自然言語で説明するための棚卸しである。
これは「今後も守ると決めた最終仕様」ではない。現行実装を正確に把握し、次の設計議論で各ルールを
「残す」「直す」「削る」に分類するためのレビュー資料である。望ましい挙動へ読み替えず、未完成部分や暫定制限も記載する。
本書を使った利用者レビューにより、次の前提を確認した。現行実装の事実と、今後の基本耕耘方式で
守る設計原則を混同しないこと。Issue #97では本書全体を順に見直し、凹形状のWorkAreaを完成経路へ
再接続する必要性は、そのレビューで扱う論点の一つとする。
経路候補は、次の優先順位で評価する。
第1項と第2項は完成候補の必須条件とする。第3項と第4項は望ましい比較方針だが、初回実装では厳密な最適化を
完成条件にしない。必須条件を満たす候補が複数ある場合は、同じ入力から常に同じ候補を返す決定的な順序で1件を
採用してよい。候補差が実際に問題となる事例が得られた時点で、比較指標と選択規則を追加する。
また、現在選択した入口から進入し、同じ入口から退出することを必須条件とする。複数出入口がある筆や、
圃場を通過して隣接圃場へ進入する運用は存在するが、現段階の基本耕耘方式では扱わない。
本方式ですべての耕耘方法を網羅しようとはしない。対応できない場合は、耕耘そのものが不可能であるかのように
扱わず、本方式の対象外、未実装、入力不正、安全条件不成立、幾何演算失敗のどれかを明示する。将来は、経路計画を
外部から追加できるソケット型の拡張機構を検討するが、現在の設計・実装対象には含めない。
現行実装は、概ね次の順序で経路を組み立てる。
ただし、手順6以降は現在「入力ポリゴンの自動修復が不要で、穴がなく、凸形状の筆」に限定されている。
凹形状では、分裂した中央耕区間の接続候補、安全判定、WorkAreaグルーピング、WorkArea内部の走行候補を
生成・PC表示できる場合があるが、WorkArea間移動と入口から退出までの完成経路には未接続である。このため、
現行実装は完成経路の合成段階で停止する。
この停止は「その筆を物理的に耕耘できない」という意味ではない。Track #89のrestartで旧WorkArea走行順を
入口・仕上げ終端の制約へ合わせて再設計するため一度切り離し、Track #93/#95で通常往復経路の完成を先行した結果、
正しい条件での再接続が未実装であることを示す。
手順1〜4の、入力検査、外周と中央の担当範囲の算出、入口と耕耘方向による始終端条件の決定、中央耕の
必要列数の算出は、基本の流れとして残す。
手順5の端から端へ1列ずつ進む通常往復経路は、中央線が分裂しない形状の基本経路として残す。中央線が
複数区間へ分裂する場合は、単純な隣接列往復を強制せず、分裂区間をWorkAreaとして扱う経路計画へ分岐する。
手順6では、中央耕、仕上げ外周3列、退出に加え、WorkArea内部とWorkArea間の移動も含めて、
選択した入口から同じ入口へ退出するまでの連続した1本の経路へ合成する。
手順7と8は維持する。全走行順を後ろから評価し、先行移動のタイヤ痕を時間的に後の耕耘で覆える場合だけ
作業機を上げる。後で覆えない区間は耕耘区間として扱う。耕し残しがなく、すべての空走り跡が後続耕耘で消え、
経路が連続する場合だけ完成計画とする。
穴のない正常な凹形状は基本耕耘方式の対象とし、凹形状であること自体を停止理由にしない。現行の凸形状gateは
現在の実装状態を表す暫定制限であり、最終仕様として残さない。WorkArea完成接続は本書全体のレビュー結果と
整合させたうえで、必要な実装Trackへ分割する。穴のある圃場、複数の離れた面、修復が必要な入力の扱いは、
後続の各節で個別に確認する。
現在の実装は次の入力規則を持つ。
2026-08-21レビューでは、作業機幅と重ね幅を作業機構成ごとに切り替える値として、レイヤー1の
プロファイルで指定・保存することを確認した。作業機幅の既定値は150cm、重ね幅の既定値は10cmとし、
既定の作業ピッチは140cmとなる。作業機幅と重ね幅の検査規則、および不正値を黙って補正しない規則は残す。
現在の「安全余白」は、作業機半幅に加えて圃場境界からさらに内側へ離す追加距離である。しかし、本機能は
自動運転ではなく、登録された筆ポリゴンも実際の圃場境界を正確に表すとは限らない。境界との安全な距離は
運転者が現地を目視して判断するため、見直し後の基本方式から安全余白という入力・規則そのものを削除する。
作業機幅を使って経路と耕耘範囲を計算することは維持する。
追い詰めは見直し後の基本耕耘計画とアプリ案内に含めないため、追い詰め最大内角の設定も削除する。
「設定値未満」で判定するため、設定値と同じ内角は対象外である。ここでいう内角は圃場内部の角度であり、
この判定によって凹角とほぼ一直線の頂点も対象外になる。重複する肯定・否定表現は規則本体へ並べない。
追い詰めは基本耕耘計画とアプリ案内に含めず、運転者が耕耘中に現地判断で行う別工程とする。計画用の
追い詰め対象抽出は行わない。
次は、見直し後も現段階の基本耕耘方式では扱わない。
停止時は、その圃場で耕耘できないとは表示せず、「本方式の対象外」または「入力不正」を区別して示す。
したがって、外周線が標準ピッチのoffset計算で消失または分裂しても、それだけでは完成経路を停止しない。
局所的な重ね幅調整を含めて中央耕終了後から退出まで連続する外周経路を構成できるかを評価し、それでも1列分の
通過幅を確保できない場合に、本方式の対象外とする。
見直し後は、安全余白と、それを前提にした「安全中心線範囲」を中央耕の独立した入力・成立条件から削除する。
外周後の未耕範囲は、外周3列の実耕耘範囲を差し引いた結果として求める。そのため、中央耕の作業幅が
未耕範囲内だけに収まることは要求せず、外周耕済み範囲へのはみ出しを許可する。
中央耕の耕耘線が成立しない場合は、独立した安全中心線範囲違反とは扱わない。外周3列の実耕耘範囲、
外周後の未耕範囲、または中央列配置のどこに矛盾があるかを区別する。中央耕の列間移動とWorkArea間移動の
経路連続性は、中央耕の担当範囲とは分けて後続節で扱う。
基本方式では、選択中の筆に対して登録入口を1つ保持する。計画開始時の入口候補は次の順で決める。
新しい入口候補は利用者が確認してから現在の計画に使用し、選択中の筆の登録入口として保存する。利用者へ
小型Tabletの地図上で正確な入口座標を指定させない。方向指定に必要な現在地は、計画時点で利用可能な
測位品質と鮮度を満たすものだけを使う。指定方向に境界交点が得られない場合は、位置を推測せず方向の指定を
やり直せるようにする。
方向指定による入口設定はfallbackだけに限定しない。登録入口や測位履歴から求めた入口候補がある場合も、利用者が
希望すれば、計画画面から「入口変更」を実行できるようにする。「入口変更」では現在地から入口方向を指定し、
指定方向で最初に筆ポリゴン境界と交わる点を新しい出入口候補として表示する。利用者が確定した時点で、今回の
計画で進入・退出に使う出入口と、選択中の筆の登録入口を新しい候補へ置き換える。確定前に取り消した場合は、
変更前の登録入口または入口候補を維持する。
「入口変更」は正確な座標編集ではなく、農作業フロー中の方向指定と確認操作である。作業地図へ常設ボタンを
追加せず、入口確認または経路計画の段階別パネルへ配置する。
1列も同じ規則で扱う。1列では列間の折り返しが存在しないだけであり、専用の先行移動や奇数・偶数条件を設けない。
現在の完成経路実装では、遅延追い詰めは最大1か所だけ扱う。2か所以上必要なら停止する。
1か所の場合は、次の固定手順を使う。
これは現在の実装上の固定ルールであり、今回のレビューで再検討する重要項目である。
中央耕がその場所ですでに完了している場合でも、追い詰め後に仕上げ外周へ直接進まず、必ず中断点へ戻る構造になっている。
追い詰めは基本耕耘計画とアプリ案内に含めず、運転者が耕耘中に現地判断で行う。第7.1節から第7.4節までの
現行ルールはすべて削除する。計画開始前または計画途中に運転者が追い詰めを行い、その後に計画経路へ戻って
耕耘を続けることは妨げない。計画外で行った追い詰めを、基本計画のactionや計画済みcoverageには算入しない。
現行の完成経路は、次の順序から前後しない。
経路の各区間は、前の区間の終点と次の区間の始点が一致しなければならない。
入口から中央耕の開始anchorまでの開始前移動は、運転者が未耕の圃場内を現地判断で行い、計画経路には含めない。
入口境界より圃場外側の具体的な退出線は完成条件に含めない。
計画経路は、次の2種類だけに分ける。
作業機を上げ下げする地点や操作手順は計画しない。移動経路のタイヤ痕が後続耕耘で覆われることは、第1章の
共通完成条件として判定する。
次をすべて満たした場合だけ、入口から退出までの完成計画を返す。
停止時は、途中まで作れた経路を実行可能な完成計画としてTabletへ送らない。
次をすべて満たす場合だけ、完成計画とする。
外周残存領域は、筆polygonから計画された耕耘経路の作業幅unionを差し引いた未被覆部分のうち、筆polygonの
境界に接する部分として機械的に求める。凸角、凹角、くびれを区別せず、角度設定や大きさの上限を設けない。
大きな外周残存領域も現時点では完成を妨げず、運転者が現地判断で仕上げる。筆境界に接しない中央部の未被覆部分は
基本計画の耕し残しとする。
条件を満たさない場合は完成計画を返さず、理由を「対象外」「入力不正」「経路不成立」「幾何演算失敗」に
分けて示す。追い詰め、作業機の操作手順、凸形状だけに限定する現行実装上の制限は、見直し後の完成条件に
含めない。
利用者向け画面には、完成計画だけを実行可能な経路として表示する。途中の候補、内部Stage、WorkArea、接続候補は
開発・診断表示として完成計画と明確に区別する。追い詰め表示は基本計画から削除する。
これらは、通常往復経路を先に現地使用可能にする方針で延期されていた。ただし2026-08-21レビューで、凹形状は
通常存在する筆形状であり、WorkAreaの完成経路接続を実機使用可能化より後へ延期しない方針へ変更した。Issue #97で、
入口・仕上げ終端制約に合わせたWorkArea訪問順、WorkArea間移動、最終coverageを完成経路へ接続する。
WorkArea関連の既存部品は、見直し後の規則に適合するものだけを再利用し、入口から退出までの完成経路とTablet表示へ
接続する。既存部品であること自体を維持理由にせず、規則に合わない処理は修正または削除する。診断表示までしか
接続されていないものは完成扱いにしない。
Issue #97による本書の章別レビューは完了した。本書は現行実装の棚卸しとして保持し、今後の製品挙動は
隣接耕基本経路パターン1を正本とする。