ろむめも

気になったこととか、調べたことをゆるくまとめます。主にプログラミング関連の話題が多いです。

Robotics① 導入

以下に学習時のメモを載せます。

概要

Lesson 2 ロボットとは

ロボットの定義

センサーがあって、意思決定が出来て、それに対して応答できるもの。
センサーはカメラ、Lidar、超音波、マイク、温度圧力センサー、においセンサーGPS等がある。磁気センサーも。
意思決定は決定木で表されることもあるし、DNNで表されることもある。
応答は、物理的な駆動もあるし、光、音等もので実現できる。

Project Search and Sample Return

シミュレータを使って、ローバーを操作します。ローバーはデータ取得、予見、行動というステップを踏んで動かします。データ取得ではカメラの画像を取得し、その画像の画素に閾値を設定して道と障害物を分けます。次にその画像をバードアイビューに変換する為に、Perspective Transformを当てはめます。opencvではgetPerspectiveTransform()で変換行列を求めて、warpPerspective()で画像を変換します。変換行列を求めるには、もとの画像のグリッドの交点の位置と、欲しい画像上でのグリッドの位置をgetPerspectiveTransform()に与えます。次にそのバードアイビューから全体の地図を生成するためにローバーの現在位置を原点とした座標系から、世界座標系に射影します。これには得た鳥観図を回転したり、縮尺を変えて整えます。これをローバーの動きに合わせて合成していくと、ローバーの画像から全体の地図が出来上がります。
次にどこに向かうかですが、今回は道と障害物を画像の閾値で分けたので、それを利用します。道と判定された領域の角度の平均をとりました。これで行くことのできる方角がおおよそ算出できます。その角度に合わせてローバーが向きを変えるように出力します。
GitHub - romth777/RoboND-Rover-Project: Project repository for the Unity rover search and sample return project.