ultrasonic sensor

8967 ワード

1.アドゥーエノ設定


  • 無人機IDE:https://www.arduino.cc/en/softwareのインストール

  • 超音波センサをアドゥイノに接続する
  • Vcc : 5V
  • Echo : D3
  • Trig : D2
  • Gnd : Gnd

  • ツールにボード/プロセッサ/ポートを設定する
  • マザーボード:Arduino Nano
  • プロセッサ:ATMEGA 328 P
  • ポート:/dev/ttyUSB 0

  • アドゥイノファイルのコンパイルとアップロード
  • シーケンスディスプレイは
  • と確認する.

    2.ROS上でのシリアル通信


    1.ポート権限の取得

  • sudo usermod -a -G dialout <username>
  • 2.リリーステーマ

  • ultrasonic_pub.py:アドゥーノからの信号を受け取り、
  • のテーマを発行しました
    #!/usr/bin/env python
    
    import serial, time, rospy, re
    from std_msgs.msg import Int32
    
    ser_front = serial.Serial(
        port='/dev/ttyUSB0',	# 신호를 받을 포트
        baudrate=9600,		# 포트 속도
        )
    
    def read_sensor():
        serial_data = ser_front.readline()
        ser_front.flushInput()
        ser_front.flushOutput() 
        ultrasonic_data = int(filter(str.isdigit, serial_data))
        msg.data = ultrasonic_data
     
    if __name__ == '__main__':
    
        rospy.init_node('ultrasonic_pub', anonymous=False) # initialize node
        pub = rospy.Publisher('ultrasonic', Int32, queue_size=1)
    
        msg = Int32() # message type
        while not rospy.is_shutdown():
            read_sensor() 
            pub.publish(msg) # publish a message
            time.sleep(0.2)
       
        ser_front.close()	# 포트는 꼭 닫자

    3.話題購読

  • 超音波sub.py:超音波トピックを購読した後、端末出力
  • #!/usr/bin/env python
    
    import rospy
    from std_msgs.msg import Int32
    
    def callback(msg):
        print(msg.data)
    
    rospy.init_node('ultrasonic_sub')
    sub = rospy.Subscriber('ultrasonic', Int32, callback)
    
    rospy.spin()

    4.起動ファイル

    <launch>
        <node pkg="ultrasonic" type="ultrasonic_pub.py" name="ultrasonic_pub"/>
        <node pkg="ultrasonic" type="ultrasonic_sub.py" name="ultrasonic_sub" output="screen"/>
    </launch> 

    5.結果