top of page

第3回自動運転AIチャレンジ 開発言語

  • 執筆者の写真: tomohisa kumagai
    tomohisa kumagai
  • 2021年11月11日
  • 読了時間: 3分

3週間ほどかけて、開発言語について調べました。

当社でAIをやるには、基本的にPythonを使いたいのです。自動運転AIチャレンジで使うAutorware.AutoにPythonで作ったプログラムをどうやって載せるのか? が問題でした。


【全体像】

ROS2というロボットシミュレーションソフトがあります。C++かPythonで各ノード(サブファンクション)を記述して、ノード間で信号を送受信し、ロボットを制御するためのソフトを構築するもの、のようです。Autoware.Autoは、ROS2を使って作られており、ソースがGitLabで公開されています。つまり大会の参加者は、ROS2を習得して、Autoware.Autoのソースを自分のやりたいように改変し、ROS2のビルドコマンドを実行することで、自分の実装が組み込まれたAutoware.Autoをつくり、車を走らせるのです。(この建てつけを理解するのに1週間…如何せんはじめてなもので、時間がかかります。)


【開発言語】

ROS2やAutoware.Autoはエッジデバイスへの実装を前提としたリアルタイムシミュレーションのようです。配布されたサンプルでは全てのファンクションはC++で書かれていました。ただROS2では、Pythonも標準的にサポートはしているので、Autoware.Autoの改造にPythonを利用することはできるはず。


【Pythonライブラリ】

普通「Pythonを使ってAI開発」、と言った場合、「Pytho本体に加えて、Pythonには含まれていないが、公開され、誰でも利用ができるライブラリを合わせて利用する」という意味です。ここで、実用上問題となりやすいのは、これらの公開ライブラリはそれぞれ個別に開発されているので、バージョン間の依存性の問題が生じやすいことです。そこで、他の環境で動かすときにも必ず同じバージョンを指定したいのです。


ところが、自動運転AIチャレンジ大会では、ADEコンテナの環境を提出せず、ソースだけなので、これが難しいのです。(2日ほど調べてトライした限りできませんでした。ライブラリをダウンロードさせる方法と、バージョン指定できそうな方法はあるのですが、バージョン指定が期待通り動かない。理由未解明。)


ROS2のrosdepコマンドからTensorflowがインストールされるところ抜粋。先週くらいまでは2.6でしたが、いつのまにか2.7。(これだからバージョン指定必須。。)

$ rosdep install -y -r -i --from-paths src --ignore-src --rosdistro $ROS_DISTRO
executing command [sudo -H pip3 install -U tensorflow-gpu]
Collecting tensorflow-gpu
  Downloading tensorflow_gpu-2.7.0-cp38-cp38-manylinux2010_x86_64.whl (489.6 MB)

使う予定ないけれど、Scikit-Imageも入ります。

$ rosdep install -y -r -i --from-paths src --ignore-src --rosdistro $ROS_DISTRO
executing command [sudo -H pip3 install -U scikit-image]
Collecting scikit-image
  Downloading scikit_image-0.18.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl (30.2 MB)

しかし、一番使いたいScikit-Learnが入らない。

executing command [sudo -H apt-get install -y python-sklearn]
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package python-sklearn is not available, but is referred to by another package.

ここで実行されているapt-getコマンドを普通のターミナルから実行しても同じエラーがでました。つまりこれはROS2の問題ではなく、apt-getの問題らしい。→諦めざるを得ない。


PythonとTensorflowとNumpy、Scipyくらいなら使えるが、Scikit-Learnは使えない。私の意見としては、なるべくPythonは使わない方が良さそう、危険だし不便。


【ならばC++で書くのか?】

C++で「AI」書くのか?と言われるとそれも厳しいものがあります。いずれにせよ考えられる方法は2つ。

1)Matlab/Simulinkを使ってコードジェネレータでC++へ変換。

2)Python+Numpyで、書ける範囲(あまり高度なことをしないで)で書く。


※Scilabのコードジェネレータが動くなら、それを使う手もあるのでしょうか。


とりあえず私は1で、チーム員Fは2で進める方向です。


続きます。

コンペの期間も半分過ぎてしまいましたが、まだ1行も役に立つコードを書けていません。間に合うのか心配になってきました。

(このシリーズは1週間遅れで配信しています)




最新記事

すべて表示
第3回自動運転AIチャレンジ チーム

先週一度走ったシミュレーションが、今週は走らなくなって、幸い3日前にバックアップを取っていたのでその時点までハードディスクの中身をOSごと戻しました。 その日は、朝から、他車がゼロの状態で走らせてみようと思って作業を始めて、おや、シミュレーションが流れない→他車ありの設定に...

 
 
 
第3回自動運転AIチャレンジ 参戦!

自動車技術会主催の、自動運転AIチャレンジ、に参加登録しました。インディアナポリスサーキットをフォーミュラーカー?(未確認)で走らせる自動運転モデルを作ってタイムを競うようです。面白そう!こういうのやってみたかった!! 【自動運転AIチャレンジ】...

 
 

Comments


©2021 by Kuma Dynamics Lab. co., Ltd.

bottom of page