はじめに
こちらの記事で作成したコストマップを利用します。まだ見ていない方は先にみることをおすすめします。
この記事では、今回のAIチャレンジのメインでもある障害物回避を目指します。
前回に引き続き、Autowareのパッケージで実装をします。
※私のgithubのリンクをおいておきますが、この記事とは関係のない変更がある可能性もあります。
github
freespace_plannerの導入、ビルド
前回同様、Autoware node diagramから発想を得ていますが、costmap_generatorのTopicをfreespace_plannerが受け取っていることが確認できます。つまり、このパッケージはセットで、コストマップの作成->Planningをしていると予想し、導入を試みました。
注意
前回の記事を見てくださった方は、このクローンの手順はスキップしてください。
git clone -b awsim-stable https://github.com/autowarefoundation/autoware.universe.git
クローンができたら、AIチャレンジのワークスペースにfreespace_plannerをコピペしてください。
(universe/planning/freespace_plannerにあります)
次にビルドします。
./build_autoware.bash
※実はすでにAIチャレンジDockerに導入されているパッケージであり、/autoware/install にあるのですが、ソースコードをカスタムするために再ビルドしています。
#freespace plannerのカスタマイズ
costmap_generatorと同様、Parkingシナリオで動作することを想定しているパッケージなため、通常動作しません。この条件を撤廃します。
bool isActive(const Scenario::ConstSharedPtr & scenario)
{
if (!scenario) {
return false;
}
const auto & s = scenario->activating_scenarios;
if (std::find(std::begin(s), std::end(s), Scenario::PARKING) != std::end(s)) {
return true;
}
return false;
}
Rvizでは、デフォルトで、/planning/scenario_planning/trajectoryが表示されるようになっているので、Topicを変えてください。
起動してできた経路がこれ!
Parking用のReverse経路ですね。freespace_plannerのparamファイルを確認するとそれらしきものが!
astar:
only_behind_solutions: false
use_back: false
# use_back: true
distance_heuristic_weight: 1.0
use_backをfalseにしてもう一度起動!
[freespace_planner-24] [INFO] [1725158270.876270483] [freespace_planner]: Freespace planning: 0.990000 [s]
[freespace_planner-24] [INFO] [1725158270.876350026] [freespace_planner]: Can't find goal...
探索に失敗するとこのエラーが出ます。またもやパラメータかと思い調べる。
minimum_turning_radius: 5.0 #9.0
maximum_turning_radius: 10.0 #9.0
ついに経路が出ました。探索には1ラップ分だと10秒ほどはかかるようで、自己位置から探索するので、リアルタイムに更新させると遅れが生じます。
#さいごに
リアルタイムでの推論がうまくいくかはわかりませんが、回避経路の生成ができました。しかも、すべてAutoware既存のパッケージなので、実装が難しくありません。Autowareすげぇ〜