前の記事はこちら RoboCupJunior Rescue New Simulation ロボットの絶対位置・・・
被災者に発見に挑戦しようと、まずはサンプルプログラム
victim_detection_test.py
を実行します。
すると・・・ModuleNotFoundError: No module named 'cv2' というメメッセージが表示されます。
これは、モジュールが読み込まれていない、ということなのでモジュールを読み込みます。
コマンドロンプトで ・・・
python -m pip install opencv-python
で、なんか読み込んでくれるらしい・・・
よし、これでエラーは出ないはず。
もう一度、victim_detection_test.py を実行します。
スタート地点には何も(被災者は居ない)無いので、無反応ですが・・・3色の矢印で手操作して、ロボットを被災者の前に持っていくと
Victim at x=50 y=24
こんな表示がでました。
ということで、(良く分からないけど)このサンプルプログラムの内容を組み込めば、被災者の発見ができそうです。(被災者の種類は特定はできないでしょうけど、とりあえず発見はできそう。)
プログラムの中身の意味は良く分かりませんが・・・(それじゃダメでしょう 笑)
victim_detection_test.py の内容を自分のプログラムに組み込んでみました。
カメラは、ロボットの右側(右前)のもの(だけ)を使います。
常に右側の壁を監視していて、被災者があると分かるので・・・被災者が通過したところで、「1.5秒停止」「Hの被災者発見の通知」をします。
本当は、被災者の種類( H , S , U )を判断すると、「被災者発見の得点」だけでなく「被災者の種類の得点」も得られるのですが・・・種類の判断は、今の私には無理のようです。(だから、被災者を発見したら、とにかく「H発見!」)
RoboCupJunior Rescue New Simulation(DEMO) sample robot-5
これまでは、迷路を一周してスタート地点に戻っても、途中のチェックポイントの得点(10点)しかもらえなかったのですが、多少の得点がはいるようになりました。(10点 ⇒ 66点 よくやった おれ! 笑)
ついでに・・・プラットフォームの新しいバージョンが出ていたので、入れてみました。
Erebus-v21_2_0
何が変わったのかは知りませんが・・・ロボットのデザインが変わっています。
で・・・上と同じプログラムを実行してみると、なんか怪しい動きです。
RoboCupJunior Rescue New Simulation(DEMO) sample robot-6
動画の
0:53 壁の前まで進んで左回転をするハズなのに、その前で停止して動かない・・・10秒位してからやっと左回転します。
2:23 こちらも壁まで進んだ後に、長い間止まったままです。
他にも壁の前で同様なことが何度も発生しています。
このときにロボットが何をしているか、ですが・・・壁との距離を測って、近過ぎたら離れます、遠すぎたら近づきます、丁度よい距離になったら次の動作に進みます。という部分なのですが・・・新しいプラットフォームでは、ここの動作が「うまくいく時」と「うまくいかない時」があります。
これ、デグレじゃないの!? (笑)