はじめに
現在、Autowareの基本的な開発方法について解説するための教材が作られています。
絶賛作成中です。
今回は現行の教材に沿って動作させてみました。
是非フィードバックほしいので、知りたいAutowareの基本機能とか不具合とかあったらissueに上げてくれると嬉しいです。
教材について
以下のものとなります。
Autoware Universeのドキュメントはこちらのリンクとなります。
教材のソースコード
以下のものとなります
教材の目的
演習形式となっており、課題を達成するためのコードをゼロから開発しながら Autowareの仕組みを学べるようになっています。
環境構築
教材の通りに実施します。
githubのリポジトリからクローン、してビルド、パッケージを利用できるようにします。
自分の環境ではgitとかROS2とかはインストール済みなのでサラからやるとなると上記のみでは動かない可能性がかなり高いです。
自分のPCはAutowareのSource installationを別件で実施していますのでたまたま動いているようです。
issueにあげといたほうがいいかもしれないですね。
車両インターフェースの講座実行
車両インターフェースの演習問題を動かしてみます。
前進のケース
ros2 launch autoware_practice_launch practice.launch.xml problem:=vehicle_forward
でシミュレータ起動します。
別ターミナルを起動して、ros2コマンドを実行してみます。
ros2 run autoware_practice_course vehicle_forwardを実行します。
事前にsetup.bashを実行するのを忘れずに。
車両(青)と通過期待エリアが表示されます。
車両は停止したままです。
ros2コマンドを実行しているターミナルをctrl+Cします。
Autowareの車両制御コマンドを見てみます。
AckermannControlCommandというものがあり、縦方向の速度、加速度、横方向のタイヤの角度、タイヤの回転速度を変更できるようです。
リポジトリに格納されているものは、速度が0、加速度がマイナスになっています。車両を動かすためにはパラメータを変更する必要があります。
command.longitudinal.speed = 0.0;
command.longitudinal.acceleration = -2.5;
車両が前進し、通過期待エリアを通過しSUCCESSが表示されることを確認しました。
後退のケース
ros2 launch autoware_practice_launch practice.launch.xml problem:=vehicle_backward
でシミュレータ起動します。
ros2 run autoware_practice_course vehicle_backwardを実行します。車両が停止しています。
ギアを変更してREVERSEにする、speedを負、accelerationを正にすると後退してくれるそうです。
ギアの変更はよくソースコードを見ていないのでまだわかっていませんが、ros2コマンドでREVERSEをパブリッシュし、車両がサブスクライブし判定していそうです。
登録済みコードにも判定が入っています。
以下のように速度、加速度についてコードを変更してやってみます。
if (gear_.report == GearReport::REVERSE) {
command.longitudinal.speed = -3.0;
command.longitudinal.acceleration = 1.0;
} else {
command.longitudinal.speed = 0.0;
command.longitudinal.acceleration = -2.5;
}
車両が後退し、通過期待エリアを通過しSUCCESSが表示されることを確認しました。
車両の旋回のケース
まだ作成中のようですが、車両旋回もしてみます。
教材の通りsteering_tire_angleを変更してみます。
Autowareのドキュメントを見る限り、正の値で左方向、負の値で右方向に旋回するようです。
左回りのケース
command.longitudinal.speed = 3.0;
command.longitudinal.acceleration = 1.0;
command.lateral.steering_tire_angle = 1.0;
右回りのケース
command.longitudinal.speed = 3.0;
command.longitudinal.acceleration = 1.0;
command.lateral.steering_tire_angle = -1.0;
図ではわかりにくいですが、車両が右回りに旋回します。
まとめ
Autowareの基本機能を知るための教材を動かしてみました。
絶賛作成中ですので、フィードバックいただけると嬉しいです。