> 文章列表 > ROS实践03 订阅方实现C++

ROS实践03 订阅方实现C++

ROS实践03 订阅方实现C++

文章目录

    • 运行环境:
    • 思路:
    • 1.1 vscode 环境配置:
      • 1)ctrl+shift+X 添加扩展插件:
      • 2)ctrl+shift+B 配置中更换为以下代码
    • 1.2 C++代码实现
      • 1)工作空间创建和编译
      • 2)功能包创建和添加依赖
      • 3)新建.cpp文件
      • 4)修改CMakeList
      • 5)运行节点
      • 6)启动发布者发布命令

运行环境:

ubuntu20.04 noetic
宏基暗影骑士笔记本

思路:

创建功能包
在功能包src下新建cpp
修改CMakLists,
运行节点

1.1 vscode 环境配置:

1)ctrl+shift+X 添加扩展插件:

C/C++、Python 、ROS、CMake Tools

2)ctrl+shift+B 配置中更换为以下代码

ROS实践03 订阅方实现C++

{// 有关 tasks.json 格式的文档,请参见// https://go.microsoft.com/fwlink/?LinkId=733558"version": "2.0.0","tasks": [{"label": "catkin_make:debug", //代表提示的描述性信息"type": "shell",  //可以选择shell或者process,如果是shell代码是在shell里面运行一个命令,如果是process代表作为一个进程来运行"command": "catkin_make",//这个是我们需要运行的命令"args": [],//如果需要在命令后面加一些后缀,可以写在这里,比如-DCATKIN_WHITELIST_PACKAGES=“pac1;pac2”"group": {"kind":"build","isDefault":true},"presentation": {"reveal": "always"//可选always或者silence,代表是否输出信息},"problemMatcher": "$msCompile"}]}

1.2 C++代码实现

详细部分可参考博客:ROS实践 C++ Python

1)工作空间创建和编译

mkdir -p demo01_ws/src
cd demo01_ws
catkin_make
code .

2)功能包创建和添加依赖

ROS实践03 订阅方实现C++

在工作空间src目录下创建功能包

demo02_sub
roscpp rospy std_msgs

3)新建.cpp文件

在功能包src目录下新建.cpp文件
ROS实践03 订阅方实现C++

#include <ros/ros.h>
#include <std_msgs/String.h>void messageCallback(const std_msgs::String::ConstPtr& msg)
{// 输出接收到的消息内容ROS_INFO("Received message: %s", msg->data.c_str());
}int main(int argc, char** argv)
{// 初始化 ROS 节点ros::init(argc, argv, "subscriber_node");// 创建节点句柄ros::NodeHandle nh;// 创建一个名为“message”的话题,消息类型为 std_msgs::Stringros::Subscriber sub = nh.subscribe("message", 10, messageCallback);// 循环等待回调函数ros::spin();return 0;
}

subscriber_node是节点名
message是话题名

std_msgs::String::ConstPtr& msg,表示一个指向 std_msgs::String 类型消息的 智能指针, 名为msg
msg->data.c_str() 指针通过箭头->来访问订阅的消息

4)修改CMakeList

# 将源文件 src/demo01_sub.cpp 编译成可执行文件 demo01_sub.cpp
add_executable(demo01_sub.cpp src/demo01_sub.cpp)target_link_libraries(demo01_sub.cpp${catkin_LIBRARIES}
)

5)运行节点

ctrl+shift+B

source ./devel/setup.bash# rosrun 包名 + 可执行文件名
rosrun demo01_sub demo01_sub.cpp

6)启动发布者发布命令

具体实现可参考博客:ROS实践 发布者publish C++

source ./devel/setup.bash
rosrun demo01_pub demo01_pub.cpp

ROS实践03 订阅方实现C++

# 显示节点和话题关系
rqt_graph

ROS实践03 订阅方实现C++


💐💐撒花 💐💐 ⭐⭐⭐祝你成功 ⭐⭐⭐