基於ROS使用Arduino控制超聲波感測器
阿新 • • 發佈:2018-11-01
1. 硬體
Arduino控制板:1個;
超聲波感測器:1個;
杜邦線:若干;
1.1 接線方式
接線方式為:5v電源腳(Vcc),觸發控制端(Trig),接收端(Echo),地端(GND)
其中觸發端設定為輸出,這裡連線引腳11;接收端設定為輸入,連線引腳12。
來張實際的照片(略麻煩):
2 程式
#include <ros.h> #include <std_msgs/Int32.h> ros::NodeHandle nh; std_msgs::Int32 distance; ros::Publisher chatter("chatter", &distance); const int TrigPin = 11; const int EchoPin = 12; void setup() { nh.initNode(); pinMode(TrigPin, OUTPUT); pinMode(EchoPin, INPUT); nh.advertise(chatter); } void loop() { // 產生一個10us的高脈衝去觸發TrigPin digitalWrite(TrigPin, LOW); delayMicroseconds(2); digitalWrite(TrigPin, HIGH); delayMicroseconds(10); digitalWrite(TrigPin, LOW); // 檢測脈衝寬度,並計算出距離 //delayMicroseconds(2); distance.data = pulseIn(EchoPin, HIGH) / 58.00; chatter.publish( &distance); nh.spinOnce(); delay(1000); }
2.1 程式下載和執行
首先:roscore
其次:rosrun rosserial_python serial_node.py /dev/ttyACM0
/dev/ttyACM0 這個是自己的埠號
最後:rostopic echo /chatter
來張圖片: