はじめに
AIchallenge2024の予選がすでに始まっていますが、皆さんは元気にお過ごしでしょうか。
本大会に使用されているシミュレータ環境はとても完成されていて、初めて見た時は感動しました。
そんなシミュレータ環境でリアルに運転してみたい!この気持ちが抑えられず、環境を構築してみたので紹介します。
目次
1.G923ハンドルコントローラ
2.Ros2対応
3.AWSIM対応
4.実践
5.おわりに
1. G923ハンドルコントローラ
私が所属している研究室にあるG923というハンドルコントローラを用いて、シミュレータに対応させることを目標にします。
ubuntu22.04でこのコントローラを利用するには、oversteerというパッケージに加え、new-lg4ffというパッケージも必要になります。
oversteer
new-lg4ff
oversteerのセットアップ
sudo apt install python3 python3-distutils python3-gi python3-gi-cairo python3-pyudev python3-xdg python3-evdev gettext meson appstream-util desktop-file-utils python3-matplotlib python3-scipy
#レポジトリのcloneとbuild
git clone https://github.com/berarma/oversteer.git
cd oversteer
meson setup build
cd build
ninja install
#再起動
sudo reboot
new-lg4ffのセットアップ
sudo apt-get install dkms
sudo git clone https://github.com/[project-repo] /usr/src/new-lg4ff
sudo dkms install /usr/src/new-lg4ff
sudo update-initramfs -u
2つのパッケージがインストールできたら、認識しているか確認します。
#evtestをインストール
sudo apt-get install evtest
#実行
evtest
evtestを実行したときに、G923の番号を確認してください。
2. Ros2対応
コントローラーinputをROS2のTopicとしてPublishするnodeを作成しました。細かなコードの紹介は省略します。下記のgithubのreadmeを参考にセットアップしました。
g923-ros2-driver
3. AWSIM対応
g923-ros2-driverから取得したコントローラ情報をAWSIMに反映させるnodeもまた作成しました。
g923_converter
簡単に説明すると、AckermannControlCommandというタイプのメッセージに対して、driverのaccelとsteerを渡しています。また、シフトレバーの入力も反映しており、AWSIMのモード切り替え(Autonomous, Manual)もできるようになっています。
注意点として、launchの際に、evtestで確認した番号を使います。(eventXをevent1などに置き換える)
ros2 launch converter.launch.xml device_path:=/dev/input/eventX
#permissionの問題があった場合
sudo chmod 666 /dev/input/eventX
4. 実践
5. おわりに
自動運転とは関係ない要素かもしれないですが、楽しむことはできました。
研究室でタイムアタック対決をしても面白そう
こちらを利用して、教師データを取得し、モデルの学習を予定しています。