【Raspberry Pi】【ロボット】HC-SR04で障害物を検出する

  • URLをコピーしました!

※本ページはアフィリエイト広告を利用しています

今回はラズパイベースのロボット、PiCrawlerに搭載されている距離センサーHC-SR04を使って障害物検出をしてみたいと思います。

目次

Raspberry Pi(ラズベリーパイ)とは

Raspberry Pi(ラズベリーパイ)はイギリスのラズベリーパイ財団が教育用に開発したボードコンピュータです。

最新のRaspberry Pi 4では、ARMアーキテクチャを採用したBroadcom製の高性能SoC BCM2711を搭載しており、1.5GHzで動作するARM Cortex-A72が4コアとマイコンボードの中では非常に高速な処理能力を持っています。また、ユーザーがアクセス可能な40ピンのGPIOも搭載しており、外部ハードウェアを制御することが可能です。

詳細なスペック等は以下の記事で解説していますので、あわせてご覧ください。

PiCrawlerについて

Raspberry Piをコントローラとして動作するロボット、PiCrawlerです。詳細は下記の記事で解説していますのでご覧ください。

超音波距離センサー HC-SR04

PiCrawlerに搭載されたHC-SR04

超音波センサーは、人間が聞き取ることのできない周波数帯域の音波を送信し、物体に反射して返ってくる時間を計測することで、物体までの距離を計測することができます。PiCrawlerに付属しているHC-SR04は2-400cm間の物体までの距離を計測することができます。

ロボットPiCrawlerで障害物検出する

PiCrawlerではHC-SR04のハードウェアを制御するためのライブラリーがあらかじめ用意されており、以下の一行を記述するだけで物体との距離を取得することができます。

distance = sonar.read()

これで変数distanceに距離を表す数値が代入されます。

ロボットを制御するソースコード

今回はPiCrawlerが障害物との距離が近くなるまで前進し続け、閾値の距離に到達したら少し後退して停止するという動作をPythonで記述しました。ソースコードは以下の通りです。

from picrawler import Picrawler
from robot_hat import TTS, Music
from robot_hat import Ultrasonic
from robot_hat import Pin
import time
import os
import sys

tts = TTS()

#サーボ初期化
crawler = Picrawler([10,11,12,4,5,6,1,2,3,7,8,9])

#距離センサー初期化
sonar = Ultrasonic(Pin("D2") ,Pin("D3"))

#距離センサ閾値設定
alert_distance = 15

#動作速度を0-100で指定
speed = 100

def main():

    #距離センサで距離を取得
    distance = sonar.read()
    print(distance) #距離を表示
    
    #距離により行動を分岐
    if distance < 0: #エラー
        pass
        
    elif distance <= alert_distance: #現在の距離が閾値より低い場合     
        crawler.do_action('backward', 4, speed) #ロボットを後退させる
        
        #プログラムを終了
        sys.exit(0)
        
    else : #距離が閾値より大きい場合は前進
        crawler.do_action('forward', 1, speed) #ロボットを前進させる
        time.sleep(0.2)
        
        
if __name__ == "__main__":

    while True:
        main()
15行目:
HC-SR04のデバイスを初期化します。

18行目:
障害物に接近したことを判定するための閾値を設定します。

25行目:
HC-SR04から現在の障害物との距離を取得します。

29行目:
現在の距離からロボットの次の行動を判断します。

プログラムを実行している動画

プログラムを動作させている動画は以下となります。

ドアの手前まで前進していき、直前(閾値で設定した距離)で停止させることができました

\ Pythonを自宅で好きな時に学べる! /

まとめ

PiCrawlerのライブラリを使うことで距離検出の処理を一行のコードで実装することができました。ロボットを自律制御を行う際に、障害物を回避したり進路を判断するのに活用できるかと思います。

また、以下の記事で効率的にPythonのプログラミングスキルを学べるプログラミングスクールの選び方について解説しています。最近ではほとんどのスクールがオンラインで授業を受けられるようになり、仕事をしながらでも自宅で自分のペースで学習できるようになりました。

スキルアップや副業にぜひ活用してみてください。

スクールではなく、自分でPythonを習得したい方には、いつでもどこでも学べる動画学習プラットフォームのUdemyがおすすめです。

講座単位で購入できるため、スクールに比べ非常に安価(セール時1200円程度~)に学ぶことができます。私も受講しているおすすめの講座を以下の記事でまとめていますので、ぜひ参考にしてみてください。

それでは、また次の記事でお会いしましょう。

著:山内 直, 著:大久保 竣介, 著:森本 梨聖, 監修:太田 昌文
¥2,618 (2024/04/22 16:32時点 | Amazon調べ)
よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次