아두이노 IDE 설치 : https://www.arduino.cc/en/software
아두이노에 초음파 센서 연결
툴에서 보드 / 프로세서 / 포트 설정
아두이노 파일 작성 컴파일 및 업로드
sudo usermod -a -G dialout <username>
#!/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() # 포트는 꼭 닫자
#!/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()
<launch> <node pkg="ultrasonic" type="ultrasonic_pub.py" name="ultrasonic_pub"/> <node pkg="ultrasonic" type="ultrasonic_sub.py" name="ultrasonic_sub" output="screen"/> </launch>