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
来张图片: