目录

1.创建工作空间

2.创建功能包

3.在src中创建广播a.cpp

4.创建订阅b.cpp

5.修改cmake文件

6.编译

7.运行,在终端输入roscore启动

8.查看消息节点


1.创建工作空间

mkdir -p ~/test_ws/src
cd ~/test_ws/src
catkin_init_workspace
cd ~/test_ws
catkin_make

2.创建功能包

cd ~/tets_ws/src
catkin_create_pkg test-cpp roscpp std_msgs

3.在src中创建广播a.cpp

cd ~/test_ws/src/test-cpp/src
touch a.cpp
touch b.cpp

在a.cpp中写入

#include "ros/ros.h"    //包含了使用ROS节点的必要文件
#include "std_msgs/String.h"    //包含了使用的数据类型
#include <sstream>int main(int argc, char **argv)
{ros::init(argc, argv, "node_a");    //初始化ROS,节点名命名为node_a,节点名必须保持唯一ros::NodeHandle n;    //实例化节点, 节点进程句柄ros::Publisher pub = n.advertise<std_msgs::String>("str_message", 1000);    //告诉系统要发布话题了,话题名为“str_message”,类型为std_msgs::String,缓冲队列为1000。
ros::Rate loop_rate(10);    //设置发送数据的频率为10Hz
//ros::ok()返回false会停止运行,进程终止。while(ros::ok()){std_msgs::String msg;std::stringstream ss;ss<<"Hello World";msg.data = ss.str();ROS_INFO("node_a is publishing %s", msg.data.c_str());pub.publish(msg);    //向话题“str_message”发布消息ros::spinOnce();    //不是必须,若程序中订阅话题则必须,否则回掉函数不起作用。loop_rate.sleep();    //按前面设置的10Hz频率将程序挂起}return 0;
}

4.创建订阅b.cpp

#include "ros/ros.h"
#include "std_msgs/String.h"
//话题回调函数
void chatterCallback(const std_msgs::String::ConstPtr& msg)
{ROS_INFO("node_b is receiving [%s]", msg->data.c_str());
}int main(int argc, char **argv)
{ros::init(argc, argv, "node_b");    //初始化ROS,节点命名为node_b,节点名必须唯一。ros::NodeHandle n;    //节点句柄实例化ros::Subscriber sub = n.subscribe("str_message", 1000, chatterCallback);    //向话题“str_message”订阅,一旦发布节点(node_a)在该话题上发布消息,本节点就会调用chatterCallbck函数。ros::spin();    //程序进入循环,直到ros::ok()返回false,进程结束。return 0;
}

5.修改cmake文件

gedit ~/test_ws/src/test-cpp/CMakeLists.txt
cmake_minimum_required(VERSION 3.0.2)
project(test-cpp)
find_package(catkin REQUIRED COMPONENTS roscpp std_msgs)
catkin_package()
include_directories( ${catkin_INCLUDE_DIRS})
add_executable(test_a src/a.cpp)
add_executable(test_b src/b.cpp)
target_link_libraries(test_a ${catkin_LIBRARIES})
target_link_libraries(test_b ${catkin_LIBRARIES})

6.编译

cd ~/test_ws
catkin_make

7.运行,在终端输入roscore启动

cd ~/test_ws
source devel/setup.bash
rosrun test-cpp test_a

cd ~/test_ws
source devel/setup.bash
rosrun test-cpp test_b

8.查看消息节点

rqt_graph

rostopic list
rostopic echo /str_message

ros中cpp节点创建相关推荐

  1. ROS中工作空间和功能包的创建以及发布者Publisher的实现

    最近刚刚开始学习ROS,对于整个ROS的框架和功能正在一点点的了解,跟着B站古月居的<ROS入门21讲>课程,在安装好linux和ROS后,正式开始ROS的学习,动手实践敲代码,在这里先记 ...

  2. 小白学习ROS(3)创建Publisher和Subscriber节点

    创建Publisher和Subscriber节点进行通讯 1.前言 在创建Publisher和Subscriber节点之前,先给介绍一个创建ROS包以及程序编写非常方便的一个ide,真的特别方便,尤其 ...

  3. ROS基本概念 文件系统 创建ROS软件包 ROS中的一些命令

    ROS基本概念 文件系统 创建ROS软件包 ROS中的一些命令 ROS是什么 ROS文件系统 文件系统工具:rospack.roscd.rosls 创建ROS 软件包 catkin是什么 创建和构建一 ...

  4. 使用Blender中的几何节点创建程序对象

    大小解压后:2.4G 持续时间3h 30m 1280X720 MP4 语言:英语+中英文字幕(根据原英文字幕机译更准确) 使用Blender中的几何节点按程序创建对象 信息: 使用Blender中的几 ...

  5. ROS: catkin和rosmake创建和编译功能包、执行节点

    ROS: catkin和rosmake创建和编译功能包 1.编译功能包 在工作空间的根目录下执行编译才行,比如我工作空间根目录是/home/kandi/catkin_ws 2.编译生成目标文件 这里以 ...

  6. ROS中键盘控制节点功能包下载(下载过程中git时出现拒绝连接的最终处理办法)

    在ros中运行sudo teleop_twist_keyboard teleop_twist_keyboard.py时,出现找不到功能包错误,如下 解决问题过程: 1.首先,我现在文件中搜一下这个功能 ...

  7. ROS中阶笔记(六):机器人感知—机器语音

    ROS中阶笔记(六):机器人感知-机器语音 文章目录 1 语音识别理论 2 常用语音功能包 3 科大讯飞SDK 3.1 使用前提 3.2 语音听写 3.3 语音合成 3.4 智能语音助手 4 参考资料 ...

  8. ROS中使用protoBuf通信

    ROS自身话题也挺好的,不过暂时还不知道如何判断网络,因此,还是想换回tcp/udp通信. 但是发现通信时数据比较多,调查一下,发现ROS支持google的protoBuf. 先建立一个ROS的项目, ...

  9. ROS中usb摄像头的使用_(usb_cam)

    http://xiaoyatec.com/2015/10/10/ros%E4%B8%ADusb%E6%91%84%E5%83%8F%E5%A4%B4%E7%9A%84%E4%BD%BF%E7%94%A ...

最新文章

  1. 大工20春计算机原理在线作业二,大工20春《计算机原理》在线作业【答案满分】...
  2. mysql文字字符集_MySQL字符集
  3. 解决ssh7.4升级8.5后环境变量失效和无法登录问题
  4. 精简系统绝对不可删除的应用程序
  5. Javascript 对象一(对象详解)
  6. LeetCode每日打卡 - 汉明距离总和
  7. Python多行字符串
  8. 深入C++库分析sync_with_stdio实现
  9. 强化学习——Q学习算法
  10. php 微信登录手机网站,微信PC端登录和手机端登录逻辑分享
  11. mian函数传入参数
  12. 三维地图开发三维地图服务器
  13. 盘点一下使用高德api踩得坑
  14. Mysql——》索引存储模型推演
  15. SQL 提取数字并转换为数字格式
  16. 【JAVA毕设】基于Java的在线购物系统的设计与实现
  17. 基于php技术的web的网上拍卖系统
  18. 6-DOF-ConvGPD 基于未知物体三维点云特征的机器人六自由度抓取
  19. 适合学计算机的对联,关于学习的对联大全
  20. 计算机重启后无法连接网络,路由器重启后电脑无法联网怎么办?有什么解决方法...

热门文章

  1. 恶意代码分析实战Lab01-03,lab01-04
  2. 309专供 之 极坐标系
  3. 监控 SQL Server (2005/2008) 的运行状况--来自微软TetchNet - 邀月 - 博客园
  4. react+koa实现留言板功能
  5. 對谷詞翻譯機器人(trans@xiaoi.com)的兩點建議
  6. 魅族16Android版本,魅族16搭载全新Flyme 7:基于安卓8.0,App启动加速36%
  7. 无尽对决一直显示正在连接服务器,无尽对决总是显示无法连接网络
  8. 微信公众号自动回复功能如何设置带链接的文字
  9. 【C/C++】输出格式%d、%6d、%06d、%-6d、%.6f的区分
  10. 网摘-20150530