自動運転車のルートネットワーク定義ファイル(RNDF)とは
自動運転車のソフトウェアスタックの4つのコア部分の1つは、計画です。そして、RNDFまたはルートネットワーク定義ファイルは、PLANNINGが最初に使用するものです。
RNDFは、タブで区切られたASCIIファイルです。基本的に、ロードセグメントとゾーンを定義します。
RNDFファイルの一般的な形式は次のようになります。
RNDF_nameファイル名(文字列)
num_segments number_of_segments(integer> 0)
num_zones number_of_zones(integer≥0)
format_version format_version(文字列)
作成日作成日(文字列)
<セグメント1>
。
。
<セグメントM>
<ゾーンM+1>
。
。
<ゾーンM+N>
end_file
フォーマットを見るだけで、RNDFファイルにセグメントとゾーンに関する詳細が含まれていることがはっきりとわかります。これが道路セグメントの例です

次に、各セグメントの形式を見てみましょう。今すぐ意味をなすようになるはずです
セグメントsegment_id(整数> 0)
num_lanes number_of_lanes(integer> 0)
segment_name segment_name(文字列)
<レーン1>
。
。
<レーンn>
end_segment
しかし、それは完全ではありません。図1を見るだけで、より多くの情報を定義する必要があることがわかります。lane_widthと同様に、レーンの幅をフィート単位で提供します。また、ウェイポイントの数とその場所を定義する必要があります。ウェイポイントが名前付きチェックポイントであることを示すチェックポイントが必要です。キーワードstopは、一時停止の標識に関連付けられたウェイポイントを示します。キーワードexitの後には、レーンに関連付けられたexit_waypointおよび関連するentry_waypointまたはentry_perimeterpointの名前が続きます。レーンには、複数のチェックポイント、ストップサイン、入口ウェイポイント、入口境界ポイント、または出口ウェイポイントが含まれる場合があります。どうぞ:
lane lane_id(xy; x、y∈integer> 0)
num_waypoints number_of_waypoints(integer> 0)
lane_width lane_width(integer≥0)
left_boundary left_boundary(文字列∈{double_yellow、solid_yellow、solid_white、broken_white})
right_boundary right_boundary(string∈{double_yellow、solid_yellow、solid_white、broken_white})
checkpoint waypoint_id(xyz; x、y、z∈integer> 0)checkpoint_id(integer> 0)stop waypoint_id(xyz; x、y、z∈integer> 0)
exit exit_waypoint(waypoint_id)entry_waypoint(waypoint_id)
exit exit_waypoint(waypoint_id)
entry_perimeterpoint(perimeterpoint_id)
<ウェイポイント1>
。
。
<ウェイポイントn>
end_lane
< waypoint >タブでは、ウェイポイントは次のように定義されています。緯度と経度のフィールドは小数点以下6桁の固定小数点であり、ウェイポイントの位置を小数点以下の桁数で表します。
waypoint_id(xyz; x、y、z∈integer> 0)緯度(固定)経度(固定)
これで、なぜこれほど多くのエントリがウェイポイントを終了および停止するのかがわかります。1つのセグメントが別のセグメントと合流するか、1つの道路セグメントの1つの車線が行き止まりになる可能性があるためです。Uターンやその他の特別な操作を計画するには、それを知る必要があります。
これが完全なセグメントの例です


再び元のファイルに戻ると、ゾーンに別のセグメントがあることがわかります。
しかし、ゾーンとは何ですか。ゾーンの例を次に示します。

ゾーンには、駐車場や建設ゾーン、さらにはデザートもあります。パーキングスポットゾーンと、さまざまなセグメントをそれに接続する方法を見てみましょう。

ゾーンzone_id(整数> 0)
num_spots number_of_parking spots(integer≥0)
zone_name zone_name(文字列)
<境界>
<オプションスポット1>
。
。
<オプションスポットN>
end_zone
これで、RNDFファイル全体がどのようにフォーマットされているかがわかります。それでは、最後の部分を分析しましょう。
perimeter perimeter_id(x.0;x∈integer> 0)
num_perimeterpoints number_of_perimeterpoints(integer> 0)
exit exit_perimeterpoint(perimeterpoint_id)entry_waypoint(waypoint_id)
<境界点>
perimeterpoint_id(x.0.z; x、z∈integer> 0)緯度(固定)経度(固定)
そしてスポット部分も
スポットspot_id(xy; x、y∈integer> 0)
spot_width spot_width(integer> 0)
チェックポイントwaypoint_id(xyz; x、y、z∈integer> 0)checkpoint_id(integer> 0)
end_spot
うまくいけば、自分のRNDFファイルを作成して、それを車に入れてナビゲートを成功させる方法が明らかになりました。