【授業☆しょ~かい】『色認識』による『オムニ・ローバー』の自動運転プログラムだよ! 電子技術科(都留キャンパス)No.460

2021年09月24日

令和3年9月8日(水):
こんにちは。あんどくんです。
電子技術科をPRしているよ☆彡
みんな、令和3年もリアルに応援よろしくね ( `・ω・´)ノ
産短大は、前期授業がスタートして21週目なんだよ。
今日、令和3年9月8日(水)は、2限におじゃました1,2年生の『プログラミング演習』について紹介するよ。

この授業では、いま世界中が注目している最新のプログラミング言語『パイソン』によるプログラミングを、『ドローン』や『ロボット』などをリアルにプログラム制御しながら学んでいるんだよ。昨年は『ドローン』を制御して、今年は戦車型ロボット『オムニ・ローバー』を制御しているんだ。これまでに『オムニ・ローバー』を製作して、『パイソン言語』の文法についてひと通り体験したんだ。で、いまは『パイソン言語』の文法を本格的に学んでいるんだよ。1年生の目標はプログラミングの体験で、2年生は文法の習得なんだよ。

この授業の担当は南湖 准教授だよ。
はじめに前回の『ふりかえり』をしたんだ。前回は『パイソン言語』の本格的な文法 (つづき) と、『AI』の基本原理を学んで、複数個の『パーセプトロン』でデジタル電子回路の基本素子である『XORゲート』のふるまいを再現したんだよ。また『色認識』のプログラムを体験したんだ。今回はそのつづきで前回体験した『色認識』のプログラムを利用して、『自動運転』のプログラムをつくっていくんだよ。

 

はじめに『AI』の定義:

『人間』は知的にふるまう生物で、『AI』は『人間』の知的なふるまいを『人間』と同じように、もしくはそれ以上に、速くて正確に人工的に再現するモノ

を復習したんだ。この定義によると前回体験した『色認識』のプログラムは、人間と同じように色を識別できるんで、『AI』に分類できるんだよ。今回は『色認識』のプログラムのほかに、『顔認識』のプログラムも体験する予定なんだ。

 

というわけで、まずは『オムニ・ローバー』に搭載した『ラズパイ』の電源を入れて・・・

 

ラズパイ』を起動したんだ。モニタに『ラズパイ』のデスクトップが表示されればOKだよ。

 

下の写真は、前回体験した『色認識』のプログラムを実行したときのモニタの様子だよ。左側が『オムニ・ローバー』に搭載したWebカメラによる画像なんだ。また、右側がWebカメラの画像から青色の部分のみを抽出した画像なんだよ。『パイソン言語』には、無料で公開されている『画像処理』のライブラリがあるんで、これをつかうと『色認識』のプログラムを比較的簡単につくれるんだよ。ここで無料で公開されているライブラリのことを『OpenCV』っていうんだよ。
今回は『色認識』の『OpenCV』をつかって、『オムニ・ローバー』の『自動運転』のプログラムをつくっていくんだよ。

 

ここで『色認識』のプログラムを簡単につくれるように、南湖 准教授が『OpenCV』をつかって『色認識』の処理を、あらかじめ関数にしておいてくれたんだよ。この関数の関数名は get_col ( ) で、青色緑色を認識するんだよ。

 

南湖 准教授が get_col ( ) 関数の処理内容を、プログラムリストをつかって解説してくれたんだよ。
二つの変数 lower1 と upper1 で青色として認識する色の範囲を指定するんだよ。同様に、二つの変数 lower2 と upper2 で緑色として認識する色の範囲を指定するんだ。で、この関数は『オムニ・ローバー』に搭載したWebカメラの正面に、青色物体があるときには整数値の 1 を、緑色物体があるときには整数値の 2 を返すんだよ。一方、青色でも緑色でもない物体があるときは整数値の 100 を返す仕様になっているんだよ。

 

つぎに今回入力する『色認識』のプログラムについて解説してくれたんだ。
まずは必要なライブラリをインポートするんだよ。そしたら『オムニ・ローバー』を速さ30 (20 (遅) ~ 90 (速)) で前進させるんだ。つぎにサーボモータの回転角を90° (0°(右), 90°(正面), 180°(左)) にして、サーボモータに取り付けた『距離センサ』の向きを正面方向にセットするんだよ。ここまでの設定がおわったら、無限ループに入って『繰り返し』の処理を行っていくんだ。
無限ループに入ったら、まずは正面にある物体までの距離を測定して、その値を変数 dis に代入するんだよ。

 

で、物体までの距離 dis が 15 センチ以下だったら、ブレーキをかけて停止するんだ。そしたら『色認識』の関数をコールして、その戻り値を変数 front_color に代入するんだよ。そのあとは変数 front_color の値に応じて、プログラムの流れが『多分岐』するんだ。

  • (i) front_colorの値が1のとき
    ・モニタに”前方に青い物体があるため右方向に進路を取ります。”を表示
    ・右方向(時計回り)に90°旋回
    ・50センチ前進
  • (ii) front_colorの値が2のとき
    ・モニタに”前方に緑色の物体があるため左方向に進路を取ります。”を表示
    ・左方向(反時計回り)に90°旋回
    ・50センチ前進
  • (iii) front_colorの値が1と2以外の場合
    ・モニタに”目的地点であるためシステムを停止します。”を表示
    ・無限ループから脱出

 

さっそく『パイソン言語』でプログラムを開発するアプリ『Thonny Python IDE』を立ち上げて・・・

 

プログラムコードを入力したんだよ。

 

プログラムコードの入力がおわったら、プログラムを実行して『オムニ・ローバー』の動きをチェックするんだ。

 

下の写真みたいに『オムニ・ローバー』の正面に、青色の『カラーボード』を15センチの距離まで近づけると・・・
モニタに”前方に青色の物体があるため右方向に進路を取ります。”のメッセージ が表示されて、左右のモータが右旋回したあと前進するように回転したんだよ。正面に青色物体があるときの動作はOKだね^^

 

今度は『オムニ・ローバー』の正面に、緑色の『カラーボード』を15センチの距離まで近づけると・・・
モニタに ”前方に緑色の物体があるため左方向に進路を取ります。” が表示されて、左右のモータが左旋回したあとに前進するように回転したんだよ。正面に緑色物体があるときの動作もOKだね^^
さいごに、青色緑色以外のモノ (ゴールの目印) を15センチの距離まで近づけると、モニタに ”目的地点であるためシステムを停止します。” が表示されたよ。

 

色認識』のプログラムの動作をチェックしたあと、『顔認識』のプログラムを体験したんだよ。下の写真は、Webカメラの前に誰もいないときの画像だよ。

 

Webカメラの前に、南湖 准教授が顔をだすと・・・
AI』が人間の顔を認識して、四角形のワクで南湖 准教授の顔の部分を囲ったんだよ。

 

この『顔認識』のプログラムは、『機械学習』に分類できるんだよ。

 

今日はこの辺で・・・
電車』で帰るよ ≡3

みんな、今日も1日おつかれさま☆彡
『プログラム演習』は今回が最終回だったんだけど、2年生は後期の『通信工学実習(IoTと通信工学)』でIoTシステムをつくりながら、ひきつづき『パイソン言語』の文法を学んでいくよ!
今日も『産短大の毎日』をみてくれてありがとう!
また、明日からがんばろっ٩( ‘ω’ )و

それじゃ ≡3 ≡3 ≡3

★バックナンバー★

2020年度
電子工学の理論を学ぶ授業・・・https://www.yitjc.ac.jp/yitjc/blog/?p=15087
最新の電子技術 (IoT) を学ぶ授業・・・https://www.yitjc.ac.jp/yitjc/blog/?p=15051
最新の電子技術 (パイソン言語) を学ぶ授業・・・https://www.yitjc.ac.jp/yitjc/blog/?p=15018
就活準備の授業・・・https://www.yitjc.ac.jp/yitjc/blog/?p=15076

2019年度
電子工学の理論を学ぶ授業・・・https://www.yitjc.ac.jp/yitjc/blog/?p=9556
最新の電子技術 (IoT) を学ぶ授業・・・https://www.yitjc.ac.jp/yitjc/blog/?p=9534
就活準備の授業・・・https://www.yitjc.ac.jp/yitjc/blog/?p=9604

★学生募集中★

県内イチ♪ 最新の設備と最高のスタッフで、みなさんをお待ちしています♪ 2年間で電子工学の理論を学んで、最新の電子技術を身に付けるんだったら、『電子技術科☆都留キャンパス』で決まりだね!
詳細はお問い合わせください。

★お問い合わせ先★

山梨県立産業技術短期大学校 都留キャンパス
〒402-0053 山梨県都留市上谷5-7-35
TEL 0554-43-8911(代)