Autowareの走行設定
【目標】
Autowareを使って自動走行する
【必要なもの】
- Velodyne VLP-16
- 空間マップ記録用のラジコン
【画像】
【Autowareを起動】
1 2 | cd Autoware/ros ./run& |
【Autowareの設定】
Runtime Managerの[Setup][Map][Sensing][Computing]タブの設定を行います。
[Setup]タブ
[Setup]タブでは[TF]と[Vehicle Model]を有効にします。
[Map]タブ
[Map]タブでは[Point Cloud]ボタンと[TF]ボタンを有効にします。
[Point Cloud]はCloudCompareで編集したPCDファイルを指定します。
[TF]はAutowareに用意されている原点座標のファイルAutoware/ros/src/.config/tf/tf_local.launch
を指定します。
[Sensing]タブ
[Sensing]タブでは左側の[Velodyne VLP-16]と右側の[voxel_grid_filter]を有効にします。
[Computing]タブ
[Computing]タブでは[ndt_matching][vel_pose_connect][waypoint_lodar][lattice_velocity_set][path_select][pure_pursuit][twist_filter][lane_rule][lane_select]を有効にします。
[waypoint_loader]の[app]で入力に指定するファイルはマップに対応した経路ファイルを指定してください。
【RVizの設定】
[RViz]ボタンを押してRVizを起動します。
Autowareに用意されているAutoware/ros/src/.config/rviz/default.rviz
ファイルを読み込みます。
隠しディレクトリを表示するため、右クリックメニューで[Show hidden files]を有効にします。
ここで自己位置推定に失敗している場合は、[Computing]タブの[ndt_matching]を無効にしてから再度有効にしてください。
経路が表示されてない場合は、ラジコンを少し移動して経路を表示します。
【Topicの確認】
[Computing]タブの[pure_pursuit][twist_filter]を有効にすると、Autowareの車両制御命令が配信されます。
その値を確認してみます。
目標速度と角速度
[Topic]タブの左側で[twist_cmd]をクリックします。
[Topic]タブの右側の[Echo]を有効にします。
twist_cmd.twist.linear.x
が目標速度(m/s)になります。マイナスの値になることがありますが、Autoware 1.9.1にバック機能は無いため、abs()関数ですべてプラスになるように変換して使います。
twist_cmd.twist.angular.z
が目標角速度(rad/s)になります。右カーブがマイナスで、左カーブがプラスになります。
ラジコン車両を制御する場合は、この値からモーターとサーボのPWM値に変換します。
しかし、それだけでは急発進したり、実際の速度が不一致になるため、現在の速度も考慮して車両制御コードを作成した方がよいです。
現在速度
[Topic]タブの左下にある[Reflesh]ボタンをクリックします。
[Topic]タブの左側で[current_velocity]をクリックします。
[Topic]タブの右側の[Echo]を有効にします。
current_velocity.twist.linear.x
が現在速度(m/s)になります。
current_velocity.twist.angular.z
が現在角速度(rad/s)になります。この値は使いません。
自己位置推定の誤差により、停止状態でもこの値は変化があります。
ラジコン車両制御では、現在速度と目標速度の大小比較からモーターの出力を上下します。
また、現在速度が停止時の誤差を考慮した一定値以下であれば、モーターの最大出力を制限することで、急発進を抑制することが出来ます。
【RVizを終了】
TX2はAutowareの動作に必要となる処理性能が十分とは言えないため、走行前にRVizを終了しておきます。
RVizを起動したまま自動走行すると、自己位置推定に失敗してクラッシュしやすくなります。