前言
研究生是机器人科学与工程专业…
大四毕业季有空闲时间浅浅学一下…
一、ROS话题通信发布逻辑
根据赵老师的代码示例,自己也实现了出来。
现在把代码放到这里当模板,以后有需要可以直接套。
二、C++代码
1.cpp代码
代码如下(示例):
// 1.导入所需要的包
#include "ros/ros.h"
#include "std_msgs/String.h"
int main(int argc,char *argv[])
{
// 2.初始化结点
ros::init(argc,argv,"ErGouZi");
// 3.初始化句柄
ros::NodeHandle nh;
// 4.建议发布者Publisher
ros::Publisher pub = nh.advertise<std_msgs::String>("FangZi",10);
// 5.定义发布消息数据结构
std_msgs::String string;
// 6.循环发布消息
while(ros::ok()){
string.data = "HelloPlumbing";
pub.publish(string);
}
return 0;
}
2.CMakeLists
代码如下(示例):
// 把这两个关键字解除注释
// 把要运行的文件名字包括后缀名写在右边
// 把映射的节点名字写在左边
add_executable(demo_pub src/demo_pub.cpp)
// 与上面的节点名字一致
target_link_libraries(demo_pub
${
catkin_LIBRARIES}
)
写完的代码记得要用“Ctrl+Shift+B”编译下看是否有报错
3.Linux环境下运行
创建一个终端:运行
roscore
在该工作空间的下创建一个终端:运行
source ./devel/setup.bash
rosrun Plumbing_Pub_Sub demo_pub
运行完之后无响应,可以视为正常,此时,发布者Publisher已经在发送数据了,只是我们没有接收者将其接受
可以使用以下命令进行查看消息:运行
扫描二维码关注公众号,回复:
14470055 查看本文章

rostopic echo FangZi
FangZi 是这个发布者的话题名称。
之后就能看到如下情况:
data: "HelloPlumbing"
---
data: "HelloPlumbing"
---
data: "HelloPlumbing"
---
data: "HelloPlumbing"
---
data: "HelloPlumbing"
---
data: "HelloPlumbing"
---
一直循环进行直到结束。
总结
实现出来了!
赵老师yyds!!!
再接再厉!