ROS学习笔记(3)-阿里云开发者社区

开发者社区> 开发与运维> 正文
登录阅读全文

ROS学习笔记(3)

简介: 话题通信

话题通信(实时不断传输信息)
1.编写发布方
2.编写订阅方
3.配置文件并执行

建一个文档
1.编写发布方
1.包含头文件
2.初始化节点
3.创建句柄
4.创建发布者
5.编辑发布的数据

//1.包含头文件
#include "ros/ros.h"
#include "std_msgs/String.h"

int main(int argc, char **argv[])
{

//2.初始化节点
ros::init(argc, argv, "talker");

/、3.创建句柄
ros::NodeHandle nh;

//4.创建发布者对象ros::Publisher pub = nh.advertise<功能包名称::泛型>("话题名");
ros::Publisher chatter_pub = n.advertise<std_msgs::String>("xinXi", 10);

//编辑发布数据
std_msgs::String msg;


 //当ros节点存活时就发送
 while(ros::ok)
{
     msg.data = "hello";
     pub.publish(msg);
}

return 0;
}

再建一个文档
2.编写订阅方
1.包含头文件
2.初始化节点
3.创建句柄
4.创建订阅者
5.处理订阅信息

// 1.包含头文件
#include "ros/ros.h"
#include "std_msgs/String.h"

void doMsg(const std_msgs::String::ConstPtr &msg)
{

ROS_INFO("收到数据为:%s",msg_p->data.c_str());

}

int main(int argc, char *argv[])
{

//不加这一行输出的汉字会变成乱码
setlocale(LC_ALL,"");
//2.初始化 ROS 节点:命名
ros::init(argc,argv,"listener");
//3.实例化 ROS 句柄
ros::NodeHandle nh;

//4.实例化 订阅者 对象
ros::Subscriber sub = nh.subscribe<std_msgs::String>("话题名",10,doMsg);
//5.处理订阅的消息(回调函数   doMsg)

ros::spin();

return 0;

}

配置CMakeLists文件

 # add_executable(${PROJECT_NAME}_node src/test01_pub_node.cpp)

改为:

 add_executable(发布者功能文件名 src/发布者功能文件名.cpp)
 add_executable(订阅者功能文件名 src/订阅者功能文件名.cpp)

target_link_libraries(${PROJECT_NAME}
# ${catkin_LIBRARIES}
)
改为:
target_link_libraries(发布者功能文件名
${catkin_LIBRARIES}
)

target_link_libraries(订阅者功能文件名
${catkin_LIBRARIES}
)
最后在工作空间下进行编译就可以执行了

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章
最新文章