前回は、雑草候補と太陽光パネル周辺の no-go 領域を重ね、パネル間のレーン単位で作業候補を整理するところについて書きました。
パネルが規則的に並んでいる場所では、レーンという表現はとても分かりやすく、現場の作業単位にも近いです。
しかし、すべての雑草候補がパネル間に細長く現れるわけではありません。敷地の端、広く開いた場所、パネル列の切れ目、複数方向に広がる植生など、一本の線では自然に表せないケースもあります。
そこで今回は、レーンとして表現しにくい雑草候補を、面状の作業候補エリアとして整理する方法について書きたいと思います。
レーンという表現が暗黙に含んでいるもの
レーンは単なる線ではありません。
一本のレーンを描くと、そこには進行方向、一定の幅、連続した作業空間、進入と退出が可能であることなど、いくつかの前提が暗黙に含まれます。
そのため、実際には形が不規則な領域に対して無理にレーンを作ると、画像上ではきれいに見えても、存在しない作業方向や通行可能性を示してしまうことがあります。
この開発で改めて感じたのは、出力の形は単なる見せ方ではなく、現場に対する一つの主張だということです。線を出せば「この方向に作業できる」と受け取られ、面を出せば「この範囲が確認・作業の対象になり得る」と受け取られます。
だからこそ、現場形状に合わないときは、レーンにこだわらず、面として扱う方が自然だと考えました。
植生候補と「作業可能領域」の重なりを取る
面状の作業候補を考えるとき、最初に整理したのは「草がある場所」と「作業してよい可能性がある場所」を分けることでした。
考え方を簡単に表すと、次のようになります。
作業候補エリア = 植生候補と作業可能領域の重なり
作業可能領域 = 現場領域 - no-go 領域 - 安全余白
先にパネルや立入禁止領域、その周辺の安全余白を除き、その残りと植生候補が重なる部分だけを作業候補として残します。
この順序にすると、植生の反応が強くても、制約領域の内側にある場所をそのまま作業候補にしてしまうことを避けやすくなります。
この重なりを取った後は、領域の大きさや連続性、周辺との関係を整理し、現場で扱いやすい単位に整えていきます。
植生候補から no-go 領域と安全余白を除き、作業可能な範囲との重なりだけを残す
マスクを「作業単位」に変換する
画像解析の出力は、細かなピクセルの集合です。これを面状の task zone に変換するには、どの領域を一つの候補として扱い、どこで分けるかを設計します。
近接した植生領域については、no-go 領域や通路をまたいでいないかを確認しながら、必要に応じて一つの候補へまとめます。
一方、細かな境界の差はそのまま多数の候補にせず、現場で確認しやすい粒度に整理します。
具体的には、小さな孤立領域を整理し、近い領域を必要に応じて統合し、細い接続部分では分割を検討し、境界を単純化して polygon として扱いやすくします。
ここで重要なのは、元のマスクの情報を保ちながら、現場で一つの作業単位として理解できる形にすることです。
重要なのは polygon を描くこと自体ではなく、その polygon がどの作業単位を表しているかを一貫して定義することだと感じました。
レーンとエリアを使い分ける
検討を進める中で、レーンと面状エリアのどちらか一方に統一する必要はないと考えるようになりました。
パネル間のように方向が明確で、連続した作業空間がある場所はレーンで表現する。一方、敷地端や広い空地、不規則に広がる植生は、面状のエリアとして表現する。
このように使い分けることで、現場の形を無理に一つの形式へ押し込まずに済みます。
また、後段のシステムに対しても、「これは方向を持つレーン候補」「これは範囲を示すエリア候補」と区別して渡せるため、処理の意味が明確になります。
規則的なパネル間はレーン、不規則な植生はエリアとして表し、二つの形式を補完的に使う
形だけでなく、判断理由も一緒に持たせる
面状の領域を色で塗るだけでは、まだ task candidate として十分ではありません。
現場や後段の処理に渡すためには、どこにあるかという geometry に加えて、その領域の面積、植生の占有率、no-go 領域との距離、判断ステータス、確認が必要な理由などを一緒に持たせる必要があります。
形状が「どこか」を表し、ステータスが「どの程度急ぐか」を表し、理由が「なぜその判断になったか」を説明します。
この三つがそろうと、単なる可視化ではなく、人が確認でき、後段のシステムも処理できる作業候補データに近づきます。
すぐに作業候補として扱う領域だけでなく、monitor や review として確認する領域も同じ構造で持たせることで、判断の段階を分かりやすく表現できます。
面状エリアも、最終的な走行経路ではない
面で表現すると、レーンよりも自由度の高い作業範囲を示すことができます。
ただし、そのエリアの中をロボットがどの順序で、どの軌跡で走るかは、まだ別の問題です。
実際の走行には、機体幅、旋回半径、進入・退出位置、現地座標、障害物、安全距離、自己位置推定などが関係します。
そのため、今回の area-based task zone は、「どこを処理する可能性があるか」を画像解析側から示すための中間表現です。「どのように走るか」は、ロボット側や作業計画側で決める必要があります。
この意味で、task zone は認識側と作業計画側をつなぐインターフェースに近いものだと考えています。
面状の task zone は作業対象の範囲を示すが、その内部の最終走行経路までは決めない
まとめ
今回は、パネル間のレーンだけでは表しにくい雑草候補を、面状の作業候補エリアとして整理する考え方について書きました。
レーンは方向と作業の流れを表すのに向いています。一方、面状エリアは、不規則な形や広がりを持つ候補を、その形を壊さずに扱うのに向いています。
重要なのは、どちらか一つを選ぶことではなく、現場形状と後段の用途に合わせて使い分けることでした。
また、作業候補として価値を持たせるには、形だけでなく、ステータスや判断理由を一緒に持たせる必要があります。
今回の開発を通して、AI の結果を現場へつなげるときは、精度だけでなく「どの形で、どの意味を持たせて渡すか」がシステム設計の重要な部分になると感じました。
次回は、複数のレーン候補と面状エリアを一つの task list にまとめ、優先度や判断理由を現場に伝える方法について書きたいと思います。
なお、読みやすさと内容の連続性を重視するため、本記事では一部の技術内容を簡略化・抽象化して記載しており、実際の実装詳細とは異なる表現を含む場合があります。