arduino超声波模块与ros通讯

刚考完试,最近刚玩了下ROS与arduino的通讯,上次,我发了个arduino与ROS连接的方法,现在连接上了,我们就来玩下ROS和arduino是通讯怎么工作的,我们这次用一个超声波模块,把arduino超声波测量的距离传回到ROS上位机。超声波模块是HC-SR04;
一:首先我们打开arduino,控制代码如下
#include <ros.h>
#include <std_msgs/Float32.h>

std_msgs::Float32 ss;
ros::Publisher distance("diatacde",&ss);  
ros::NodeHandle n;
const int tring=3;
const int echo=4;
void setup()
{
   n.initNode();
   n.advertise(distance);  
  pinMode(tring,OUTPUT);
  pinMode(echo,INPUT);
  //Serial.begin(9600);

}
void loop()
{
      long time;
      while(1)
         {  
               digitalWrite(tring,HIGH);
               delayMicroseconds(15);
               digitalWrite(tring,LOW);
               time=pulseIn(echo,HIGH);
               float  a=0.017*time;
                ss.data=a;
                distance.publish(&ss);
              // Serial.println(a);
               a=0;time=0;
               delay(1000);
              n.spinOnce();
         }


}
烧录进去后arduino后,我们就
rosrun rosserial_python serial_node.py /dev/ttyUSB0;
发布一个信息
rospublish echo diatacde,
就可以看到采集回来的数据了,测距的距离是厘米为单位。

少年,我们来撕逼吧 逆天改 沙发

2015-07-21 09:33

kiti1013 一代型 板凳

2015-07-22 09:38

虽然写的简单 但是对于我这种新手来说真的是太有价值啦谢谢版主

ROS_Kitty 初代型 地板

2015-11-22 12:50

游客
登录后才可以回帖,登录 或者 注册