1_ROS_话题通信机制代码模板_1

B站奥特学园教程 P43

文章目录

  • 前言
  • 一、ROS话题通信发布逻辑
  • 二、C++代码
    • 1.cpp代码
    • 2.CMakeLists
    • 3.Linux环境下运行
  • 总结


前言

研究生是机器人科学与工程专业…
大四毕业季有空闲时间浅浅学一下…


一、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已经在发送数据了,只是我们没有接收者将其接受
可以使用以下命令进行查看消息:运行

rostopic echo FangZi

FangZi 是这个发布者的话题名称。
之后就能看到如下情况:

data: "HelloPlumbing"
---
data: "HelloPlumbing"
---
data: "HelloPlumbing"
---
data: "HelloPlumbing"
---
data: "HelloPlumbing"
---
data: "HelloPlumbing"
---

一直循环进行直到结束。


总结

实现出来了!
赵老师yyds!!!
再接再厉!

你可能感兴趣的:(ROS基本,linux,c++)