はじめに
この記事は、その1、その2の続きになっています。良ければそちらも読んでみてください。
前回までは、パラメータ調整、マップ編集をやってきましたが、それらがどのように利用されているか分からない状態です。将来も見据えて、ここらで調査しておきたいところですね。
ということで今回はAutowareの構造をみていきましょう!!
目次
まずは大雑把に
Autowareの構造は膨大ですが、役割ごとに見ていくとやりやすいです。ありがたいことにAIチャレンジ公式さんから、今回のracing大会で利用されているAutoware Microの構造が公開されているので、まずはこれを見ましょう。すこし補足もいれておきました。
Autoware Micro
左側から順に追っていきましょう。
- Map,localization,perceptionから情報を取得し、それをもとに経路生成
- 経路を軌跡(Trajectory)に変換し、それに向かって追従
- 追従の出力を、車の入力(アクセルやハンドル)に変換
こんなところでしょうか。画面上部のgoal_pose_setterからは、正直よくわかっていないのですが、大雑把に読み取ることができました。
トピックを覗く
次に、各ノードでどのような情報がやり取りされているのか覗いていきましょう。僕のおすすめはpath経路です。おそらく経路の情報が入っていそうな、path_with_lane_idを見ていきます。
AIチャレンジのAutowareとawsimを起動した状態で、新たなterminalを開きます。
#今アクティブなtopicを表示
ros2 topic list
#-t をつけると、メッセージの型も確認できる
ros2 topic list -t
#topicの中身を表示
ros2 topic echo /planning/scenario_planning/lane_driving/behavior_planning/path_with_lane_id
echoを利用すると、出力メッセージの確認ができます。これでは、logがすごいスピードで更新されるので、オプションを付けましょう。
#一度だけ出力 -once
ros2 topic echo --once /planning/scenario_planning/lane_driving/behavior_planning/path_with_lane_id
出力
#pointが前にも続く
...
...
---
- point:
pose:
position:
x: 22269.1368
y: 52043.1304
z: 177.7921
orientation:
x: -0.0004146634240909538
y: -0.00018891603851126825
z: -0.9100083500665173
w: 0.41458967084840675
longitudinal_velocity_mps: 0.0
lateral_velocity_mps: 0.0
heading_rate_rps: 0.0
is_final: false
lane_ids:
- 9516
left_bound:
- x: 22294.1399978612
y: 52085.839375431875
z: 178.26991601298306
- x: 22292.7808
y: 52075.7468
z: 178.2641
- x: 22288.0462
y: 52063.0986
z: 177.9548
- x: 22280.6065
y: 52047.949
z: 177.9347
- x: 22279.622
y: 52045.9668
z: 177.9154
- x: 22276.5585
y: 52041.3002
z: 177.8928
- x: 22272.730671703423
y: 52036.3827960673
z: 177.88489931971168
right_bound:
- x: 22285.340555426355
y: 52087.01981185332
z: 178.03735211996326
- x: 22285.1609
y: 52085.67
z: 178.0277
- x: 22278.9992
y: 52066.7101
z: 177.7224
- x: 22271.6912
y: 52051.9975
z: 177.7074
- x: 22265.7262
y: 52042.612
z: 177.6941
- x: 22265.141105347142
y: 52041.99532136478
z: 177.69360333865825
---
おそらく、left,right_boundは左右の車線を示してそうですが、果たして!?
ChatGPTに座標を渡して、プロットしてみました。(GPT便利!!)
予想通りこれは車線と考えられますね。今回は1回分のデータのプロットですが、連続して受け取ったら、Rviz同様パスのアニメーションが作れそう。
次回に向けて
今回は、Autowareの構造を大雑把に確認したあと、経路のtopicを調査しました。その出力を活かして次に活かすためには、自作nodeを作成しないといけません。
次回は、自作パッケージの作成&Autoware Microへ導入をしていきたいと思います。