chrmlinux03 が 2022年09月15日14時30分28秒 に編集
初版
タイトルの変更
Spresensを使って自律移動出来るよっ
タグの変更
spresense
M5Atom
SLAM
IMU
記事種類の変更
製作品
ライセンスの変更
(MIT) The MIT License
本文の変更
# はじめに こんにちわ リナちゃん@chrmlinux03 です 今回は Spresense を使って 自作した uLiDARによる自律移動するロボット(クローラ型)を作ってみたいと思います。 # uLiDARとは 最近のロボットには LiDAR と呼ばれるレーザによる測距センサーをぐるぐる回す機械が搭載されてます。これは自分自身と壁までの距離つかって自分の今居る場所を推定させるためのデバイスであり、屋内ではこれはありかも知れませんが屋外ではちょっと...という感じです。 # 自律移動とは 外部からのイベントによらず 自分で考えて移動する事ができる。これが自律移動。目的?それはあとで考える事にしよう。 # クローラとは 屋内屋外問わず オムニホイールやメカナムホイールまたは車輪ですと どうしても落ちているものに引っかかってしまう。またサーボモータだと小さい型だとパワーが足りない。ここはDCモータを駆動させることにする。 ## DCモータとは DCモータとはマブチモータ等の+(プラス)-(マイナス)で直接駆動し、反転はそれを逆にすることで実現可能。ただしDCモータは電流値が高く、マイコンから直接動かすことはできない。動かすためにはモータドライバなりの回路が必要。 ## モータドライバとは 1モータに付き2本の配線を使いその差動によりモータを駆動させる回路。たとえば 1 0 だったら正回転(CW) 0 1 だったら逆回転(CCW) 0 0 が停止 1 1がブレーキをいう構成で動かす事が出来ます。 # SLAMとは Simultaneous Localization and Mapping の頭文字をとってSLAM(スラム)と呼ばれる手法。Simultaneous=同時に Localization=位置推定 and=と Mapping=地図作成 の意味となります。 Simultaneousは"いろいろなセンサ"を同時につかいという意味であり 今回使用する IMU(Inertial Measurement Unit)や接触センサ等が含まれます。自律移動させるためにはこれは必要。 # IMUとは IMU には色々なタイプがありますが 6軸(加速度センサ+ジャイロセンサ) 9軸(加速度センサ+ジャイロセンサ+地磁気センサ)等が有名な所。今回9軸を使用して開発を進めていたのですがモータが駆動されると"地磁気が乱れる"という当たり前な現象に悩まされ泣く泣く6軸の使用となりました。 # AddOnBord01基板 配線が色々と大変ですので基板化しました   ) ## Arduinoバニラシールド 遠い記憶に Arduio用自作基板があったのを思い出し倉庫から引っ張り出してきましたぴったりです。  ## MotorDriver(MX1919) GPIO 4本を使い2個のモータを制御させる事が出来ます。差動によりモータを駆動させるたとえば 1 0 だったら正回転(CW) 0 1 だったら逆回転(CCW) 0 0 が停止 1 1がブレーキをいう手順で動かす事が出来ます。 ## WiFiModule(M5AtomLite) 今後の拡張のため WiFiはどうしても必要により苦肉の策、M5AtomLiteはI2CSlaveとして駆動させるので今回はWiFiModemとして使用されます。  # センサー VL53L5CX(8x8x400cmマルチゾーン対応ToF測距センサ)  HC-SR04(300cm 超音波距離センサ)  # システム構成 Spresense本基板 Spresense拡張基板(Arduino形状) AddonBoard01基板 バッテリ基板(3.7V->5V充放電基板) バッテリ(LiION3.7V 400mAH) DCモータ5Vx2 クローラセット2輪 各種センサ # 最後に