ROS学习之发布消息——Publisher_代码分析

//一个非常详细的版本:
//本文件名字为: publisher.cpp

#include "ros/ros.h"
#include "std_msgs/String.h"
#include   //或者  #include

//使用命名空间,省的每次都需要ros::
using namespace ros;
//这里使用cout进行打印输出
using namespace std;

int main(int argc, char** argv){
    //使用句柄之前必须初始化节点 //第三个参数不能为空,最好和节点名相同,我试过,和节点名不同也没事
    init(argc, argv, "publisher_Node");    
    NodeHandle n;

    //广播的消息类型为:std_msgs::String,并把消息放入话题“topic_m” 中可以试着使用rostopic list打印出该话题 
    //不同软件包下的话题可以同名,但是在ros只允许同时运行一个,所以这里最好是独一无二的消息名称
    Publisher pub = n.advertise("topic_m",1000);

    //发送消息的频率为2Hz, 1秒发2个,周期为500ms
    Rate loop_rate(2);
    while(ok()){
         //定义一个msg,往msg中装入需要广播的消息
         std_msgs::String msg;

         //打印输出hello
	 cout<<"print from cout: Hello wanzew..."<
//一个更加简洁的版本
#include "ros/ros.h"
#include "std_msgs/String.h"
#include  

using namespace ros;
using namespace std;

int main(int argc, char** argv){
    init(argc, argv, "publisher_Node"); 
    NodeHandle n;
    Publisher pub = n.advertise("topic_m",1000);
    Rate loop_rate(2);

    while(ok()){
     std_msgs::String msg;
	 msg.data = "Hello wanzew!";
	 pub.publish(msg);
	 loop_rate.sleep();
     cout<<"print from cout: Hello wanzew..."<

对应的 CMakeList.txt 文件内容如下:

cmake_minimum_required(VERSION 2.8.3)

project(my_package)

find_package(catkin REQUIRED COMPONENTS
  roscpp
  rospy
  std_msgs
)

catkin_package(
# 下面注释部分可打开-->
# INCLUDE_DIRS include
# LIBRARIES my_package
# CATKIN_DEPENDS roscpp rospy std_msgs
# DEPENDS system_lib
)

include_directories(
#  include
  ${catkin_INCLUDE_DIRS}
)

# publisher_Node在ros中是独一无二的,不能和其它节点名字重复
add_executable(publisher_Node src/publisher.cpp)
target_link_libraries(publisher_Node ${catkin_LIBRARIES})
下篇: ROS学习之订阅消息——Subscriber_代码分析


你可能感兴趣的:(ROS,使用笔记)