openCR-用ROS代码获取电压的方法

//头文件 ros/ros.h 包含了标准 ROS 类的声明,你将会在每一个你写的 ROS 程序中包含它。
#include <ros.h>
//std_msgs中已经包含了所有的基本数据类型,此例子中用到了Float32类型
#include <std_msgs/Float32.h>

//在创建时,如果一个内部节点没有被启动,节点句柄将启动该节点.
//一旦所有的节点句柄实例被销毁,那么节点将被自动关闭
ros::NodeHandle nh;
//定义一个相应数据类型的对象:电压值
std_msgs::Float32 voltage_msg;
//指明发布的数据类型,话题和缓存队列大小
//声明发布者,话题名 = voltage
ros::Publisher pub_voltage("voltage", &voltage_msg);


void setup()
{
  nh.initNode();
  nh.advertise(pub_voltage);
}

void loop()
{
//静态局部变量如果没有被用户初始化,则会被编译器自动赋值为0,
//以后每次调用静态局部变量的时候都用上次调用后的值。
  static uint32_t pre_time;

//millis()函数会返回一个值,该值代表当前cpu的时间
//可以用来定时,这样可以不用占用cpu时间
  if (millis()-pre_time >= 50)
  {
//将获取到的电压值赋值给data
    voltage_msg.data = getPowerInVoltage();
    pub_voltage.publish(&voltage_msg);
    pre_time = millis();
  }
//loop函数中,调用了ros::spinOnce(),在这个函数中,所有ROS通信的回调函数都被处理
  nh.spinOnce();
}

  

posted @ 2018-11-26 19:28  kay880  阅读(519)  评论(0编辑  收藏  举报