ros中cpp节点创建
目录
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节点创建相关推荐
- ROS中工作空间和功能包的创建以及发布者Publisher的实现
最近刚刚开始学习ROS,对于整个ROS的框架和功能正在一点点的了解,跟着B站古月居的<ROS入门21讲>课程,在安装好linux和ROS后,正式开始ROS的学习,动手实践敲代码,在这里先记 ...
- 小白学习ROS(3)创建Publisher和Subscriber节点
创建Publisher和Subscriber节点进行通讯 1.前言 在创建Publisher和Subscriber节点之前,先给介绍一个创建ROS包以及程序编写非常方便的一个ide,真的特别方便,尤其 ...
- ROS基本概念 文件系统 创建ROS软件包 ROS中的一些命令
ROS基本概念 文件系统 创建ROS软件包 ROS中的一些命令 ROS是什么 ROS文件系统 文件系统工具:rospack.roscd.rosls 创建ROS 软件包 catkin是什么 创建和构建一 ...
- 使用Blender中的几何节点创建程序对象
大小解压后:2.4G 持续时间3h 30m 1280X720 MP4 语言:英语+中英文字幕(根据原英文字幕机译更准确) 使用Blender中的几何节点按程序创建对象 信息: 使用Blender中的几 ...
- ROS: catkin和rosmake创建和编译功能包、执行节点
ROS: catkin和rosmake创建和编译功能包 1.编译功能包 在工作空间的根目录下执行编译才行,比如我工作空间根目录是/home/kandi/catkin_ws 2.编译生成目标文件 这里以 ...
- ROS中键盘控制节点功能包下载(下载过程中git时出现拒绝连接的最终处理办法)
在ros中运行sudo teleop_twist_keyboard teleop_twist_keyboard.py时,出现找不到功能包错误,如下 解决问题过程: 1.首先,我现在文件中搜一下这个功能 ...
- ROS中阶笔记(六):机器人感知—机器语音
ROS中阶笔记(六):机器人感知-机器语音 文章目录 1 语音识别理论 2 常用语音功能包 3 科大讯飞SDK 3.1 使用前提 3.2 语音听写 3.3 语音合成 3.4 智能语音助手 4 参考资料 ...
- ROS中使用protoBuf通信
ROS自身话题也挺好的,不过暂时还不知道如何判断网络,因此,还是想换回tcp/udp通信. 但是发现通信时数据比较多,调查一下,发现ROS支持google的protoBuf. 先建立一个ROS的项目, ...
- 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 ...
最新文章
- 大工20春计算机原理在线作业二,大工20春《计算机原理》在线作业【答案满分】...
- mysql文字字符集_MySQL字符集
- 解决ssh7.4升级8.5后环境变量失效和无法登录问题
- 精简系统绝对不可删除的应用程序
- Javascript 对象一(对象详解)
- LeetCode每日打卡 - 汉明距离总和
- Python多行字符串
- 深入C++库分析sync_with_stdio实现
- 强化学习——Q学习算法
- php 微信登录手机网站,微信PC端登录和手机端登录逻辑分享
- mian函数传入参数
- 三维地图开发三维地图服务器
- 盘点一下使用高德api踩得坑
- Mysql——》索引存储模型推演
- SQL 提取数字并转换为数字格式
- 【JAVA毕设】基于Java的在线购物系统的设计与实现
- 基于php技术的web的网上拍卖系统
- 6-DOF-ConvGPD 基于未知物体三维点云特征的机器人六自由度抓取
- 适合学计算机的对联,关于学习的对联大全
- 计算机重启后无法连接网络,路由器重启后电脑无法联网怎么办?有什么解决方法...
热门文章
- 恶意代码分析实战Lab01-03,lab01-04
- 309专供 之 极坐标系
- 监控 SQL Server (2005/2008) 的运行状况--来自微软TetchNet - 邀月 - 博客园
- react+koa实现留言板功能
- 對谷詞翻譯機器人(trans@xiaoi.com)的兩點建議
- 魅族16Android版本,魅族16搭载全新Flyme 7:基于安卓8.0,App启动加速36%
- 无尽对决一直显示正在连接服务器,无尽对决总是显示无法连接网络
- 微信公众号自动回复功能如何设置带链接的文字
- 【C/C++】输出格式%d、%6d、%06d、%-6d、%.6f的区分
- 网摘-20150530