この記事は筆者オンリーのAdvent Calendar 20237日目の記事です。
前回までのあらすじ
OSS連携を試みるため、C++でROS2の簡単なモジュールを作りました。
今回はpythonrobotics等のPython製OSSとの連携を見据えPythonで自作ROSモジュールがAutoware上で動くか確認してみたいと思います
ROS2でモジュール作成
ROSのチュートリアルを参考にまずはAutowareでHelloWorld的なことができるようにカスタマイズしてみようと思います。
Autowareのカスタマイズ
パッケージの作成
Autowareをカスタマイズする方法ですが、公式ページにちょっとだけ記載されております。
まずはROSのチュートリアルを見ながら、簡単なパブリッシャーとサブスクライバーを作ります。
公式サイトの通り、ROS2のパッケージを作成します。
$ cd ~/aichallenge2023-racing/docker/aichallenge/aichallenge_ws/src/aichallenge_submit/
$ ros2 pkg create --build-type ament_python py_pubsub
ROSチュートリアルに従って、package.xmlとCMakeLists.txtを変更します。
パッケージのビルド
次に、Dockerを起動してコードをビルドします。
$ cd /aichallenge/
$ bash clean_build.sh
以下のようにビルドエラーが発生してしましました
こちらを参考にダウングレードしてビルドしたら成功しました。
pip install setuptools==58.2.0
cd /aichallenge/
bash clean_build.sh
以下のようにcpp_pubsubのビルドができれば成功です。
パッケージの実行
参考記事同様、launchファイルから実行します。本大会ではAutoware-Microを使用しており、autoware_micro_awsim.launch.xmlを変更します。
<!-- lane_driving -->
〜割愛〜
<group>
<node pkg="python_pubsub" exec="talker"/>
<node pkg="python_pubsub" exec="listener"/>
</group> <!-- Simple Pub Sub -->
</group> <!-- lane_driving -->
実行してみます。今回は併せてAWSIMも実行してみます。
$ bash run_autoware.sh
$ bash run_awsim.sh
PythonでもHello Worldできることを確認しました。
今後の予定
1.Autowareのメッセージをサブスクライブできるようにする。
2.Autowareのメッセージをパブリッシュし、既存のAutowareがサブスクライブするようにする。
3.OSS連携もできるように変更する。
という流れで行きたいと思います。