活動記録 後藤 - HondaLab/Robot-Intelligence GitHub Wiki

11/4
前日に首を怪我し、病院に行ったためゼミ欠席

11/5
8の字コースでのデータ収集を行うためにテスト走行を行った。
テスト走行で撮った教師データをもとに学習を行おうとしたが、cupyのエラーが発生。
cupyとcudaをインストールしたがchainerと互換性がないと言われ色々試すが迷走。

11/6
cupyと格闘

11/7
cupyと格闘

11/8
cupyと格闘

11/9
cupyを使うのを断念。変わりにcupyをnumpyで代用。無事動いた。
ただ学習を行おうとすると以下のようなエラーが出る。一応学習はできる。

/usr/local/lib/python3.9/dist-packages/chainer/_environment_check.py:72: UserWarning:

CuPy (cupy) version 9.5.0 may not be compatible with this version of Chainer.
Please consider installing the supported version by running:
$ pip install 'cupy>=7.7.0,<8.0.0'

See the following page for more details:
https://docs.cupy.dev/en/latest/install.html

ここでとりあえずcupyをアンインストールしようとしたができない。

goto@maple53:~/NN2021/NN_ssr2_chainer$ sudo pip uninstall cupy
WARNING: Skipping cupy as it is not installed.

おそらくcupyが中途半端にインストールされておりアンインストールできない状況になっている。
とりあえず学習に問題はないので一度放置。

11/10
テスト走行時に横の画角が狭いと感じたので、画角を変更した。
camera.pyのRES_X=int( 320 )の値をRES_X=int( 400 )に変更
この値で走行してみると壁を見失いづらくなった。
データ収集を行っているとたまに以下のエラーが起きる。

Traceback (most recent call last):
File "/home/goto/NN2021/NN_ssr2_chainer/recv_data.py", line 44, in
data = udp.recv()
File "/home/goto/NN2021/NN_ssr2_chainer/modules/li_socket.py", line 31, in recv
a = [float(s) for s in slist]
File "/home/goto/NN2021/NN_ssr2_chainer/modules/li_socket.py", line 31, in
a = [float(s) for s in slist]
ValueError: could not convert string to float: ''

str型からfloat型へ変換ができませんと出る。データを収集できる時とできない時の違いがわからない。
とりあえず直さないとデータ収集ができないのでなんとかする。

11/16
カメラの画角を変更
camera.pyのRES_Y=int( 320 )の値をRES_Y=int( 240 )に変更
収集した教師データを学習

11/17
前日に学習したデータをもとに走行してみた。壁に沿って走行しようとはするが、曲がるときの出力が小さく曲がりきれずに壁を見失う。データを収集するときにもう少し曲がる出力を大きくしなければならない。また、ピンクの壁のほうが曲がれていないので更にデータを収集する必要あり。壁から壁へ移ることもまだできていない。
更にデータを収集
青からピンクに移り、ピンクの壁を回るデータを重点的に収集した。また、コース全体を走るデータも収集した。

11/18
2000個のデータで学習した。今度は青の壁で回れなくなった。また、ピンクの壁では回れるようになった。壁から壁へ移る時斜めに進めずにまっすぐ進んでしまう。大げさに曲がる動作を教える必要あり。

11/19
芋煮会の日。
味付けは古澤が担当した。鷲見くんから素材の味がするというコメントをもらいました。個人的には全体的に味が薄いと感じたので、醤油、砂糖、みりん、めんつゆを足したら、味が決まった。
お酒は山田くんと古澤が買ってきたが、そこにはビールはなかった。先生にビールは買ってきてないのかと聞かれて自分たちが自信満々に指差したのは発泡酒であった。ビールと発泡酒は全く違うものらしい。その違いを調べたものを下記に記す。

発泡酒とビール、その両方ともに原料は麦芽・ホップ・水です。この麦芽は、麦、とくに大麦の種子を発芽させたものです。英語では「malt(モルト)」と呼ばれていますよ。
発泡酒とビールの違いは、この麦芽の使用比率。麦芽の使用量が50%以上のお酒は、ビールに分類される条件をクリアしています。一方、原料である麦芽の使用割合が50%未満であるお酒は、ビールに分類されずに発泡酒と呼ばれます。発泡酒とビールの違いを徹底検証!今注目の「第3のビール」の正体とは

11/23
11号車を使用して、解像度が320×320、320×240、640×640、640×480のときのpi cameraの画角について調べた。
下記の画像のようにxとyを設定し測定する。その後θを求め、反対側も同様に求めた。その2つを足した結果が画角となる。ただしxは25cmで固定する。 gakaku

レンズ中

解像度(px) y左(cm) y右(cm) 画角(度)
320×320 45.4 30.7 112.0
320×240 152.5 77.9 152.9
640×640 45.7 30.9 112.3
640×480 161.0 78.4 153.5

レンズ中の画角を調べたあと、レンズ大も調べようとしたが、左のyが大きすぎて測定不能であった。下記にカメラからの画像を載せておく。

640×640

640×480

1つ目の画像が640×640で2つ目が640×480である。そしてxは10である。見える範囲が廊下の端の壁まであるので画角を調べることができなかった。
また、これらの結果から11号車はレンズが左に傾いているということがわかった。

12/1
前回とは違う方法で画角を調べた。(前回ほぼ画角が変わらなかったため解像度640×640、640×480は算出しない)
今回の方法は下記に記載する。

gakaku_2

rは41.3cmで固定、lを測定することによって画角を算出する。
算出するための式は
θ(rad) = l(cm) / r(cm)
画角 = θ(rad) × 180(°) / π
結果を以下に記載する

レンズ中

解像度(px) l(cm) 画角(度) 11/23との誤差(度)
320×320 82.5 114.4 +2.4
320×240 118.2 164.0 +11.1

レンズ大

解像度(px) l(cm) 画角(度)
320×320 111.0 154.0
320×240 155.9 216.3

レンス中で測定した場合誤差は上記のとおりとなった。横の画角が広くなると誤差も大きくなった。
レンズ大に関して、前回yが測定不能となったので比較はできないが、画角を算出することはできた。
解像度320×240は180度以上見えていることがわかる。この解像度でデータ収集を行えば見える幅が広がるので壁を捉えやすくなると考えられる。

とりあえずレンズ大、解像度320×240でデータを2000個収集した。
今回は曲がるときに大げさに曲がる動作を行った。前回は曲がるときにボタンを2回しか押していないが、今回は3回押してみた。
これで前回のような円に沿って回れないということは解消されるのではないかと思う。

12/2
走行させてみた。
・ピンクから青へは移れそうだが、青の壁に真正面から激突してしまう。
・青を永遠に回ってしまう問題。
・曲がる動作が強すぎて壁を削る動きをする。
・ピンクの壁を沿わずにそれてしまう。

12/7 VRシアターで教師データを収集した。 まずは壁無しで3000個のデータを収集した。自律走行させた結果、全然壁に沿って走ってくれない。
無駄なものが見えすぎているのかもしれない。

動画

次に縞模様の壁をおいて中にはピンクの縞模様円形の壁と、青い円形の壁を設置した。(下記参照)

Screenshot from 2021-12-15 19-27-04

壁ありで自律走行させると成功した。しっかり円形の壁の周りを走行した。
更に周りの壁をとって自律走行させてみる。
真ん中を通過する時少し壁にぶつかってしまうものの8の字走行になっていた。たまにコースから外れてしまうこともある

動画

12/14
12/7の実験で周りに壁を設置して教師データを収集して自律走行させた結果うまく行ったので、今回はただの白い壁をおいてデータを収集した。

Screenshot from 2021-12-15 19-37-22

走らせた結果、全くと言っていいほど壁に沿わなかった。
なぜ失敗したかわからないため、もう一回やり直してみたい。
次に外壁なし障害物ありの条件でデータを収集してみた。

Screenshot from 2021-12-15 19-39-42

障害物を避ける動作を行いつつ8の字走行もほぼ行うことができた。ただ、一つの場所だけうまく走行できない箇所があった。

asas

ここでのロボットの曲がる動作が弱いためうまく曲がることができず、青壁を見失ってしまう。
次行う実験は考え中。

動画

12/22
研究室で障害物あり外壁ありの実験を行った。
データは3000個収集した。 まずは自律走行の結果から示す。

障害物あり外壁あり 障害物あり外壁なし
配置によっては成功 ピンクのかべに沿わない

障害物あり外壁ありの自律走行は2種類の障害物の配置を試した。その画像を下記に示す。

Screenshot from 2021-12-23 03-45-36

Screenshot from 2021-12-23 03-45-59

成功したのは2つ目の画像である。1つ目は青壁をぐるぐる回ってしまう状況である。おそらくロボットを避けるために曲がり過ぎてそのまま青壁に沿ってしまうのだと考えられる。
障害物あり外壁なしは青壁の方は沿って走ってくれるが、ピンクの方は全く沿ってくれない。やはりピンクの壁と認識できていない可能性がある。研究室の明るさがピンクの壁をうまく認識できる明るさではないのかもしれない。
下に自律走行の動画のリンクを貼っておく。
自律走行障害物あり外壁あり成功
自律走行障害物あり外壁あり失敗
自律走行障害物あり外壁なし失敗(おまけ)

1/6
12/22の障害物あり外壁ありで自立走行した結果配置によっては失敗していたので、失敗していた箇所を重点的にデータをとってみた。
無題 1

12/22追加自律走行
失敗した箇所のデータを収集すると走行することができた。

1/10
外壁なしの実験を行ってみた
今回は4つにわけて教師データをとってみた。
・青壁を回る
・ピンクの壁を回る
・ピンクから青に移る
・青からピンクへ移る
自律走行動画

1/14
1/10のデータに片方の壁からもう片方へ移るデータを300程更に追加してみた。そして自律走行するときの部屋の明るさも変えてみた。
自律走行動画
自律走行動画(明るい)
部屋の明るさを明るくしたほうがうまく走れなかった。単純に明るくすればいいというわけではないらしい。ロボットが走行するための最適な明るさ、カメラ感度を探すことが重要である。

⚠️ **GitHub.com Fallback** ⚠️