ROS实践11 自定义头文件并调用

文章目录

    • 运行环境:
    • 思路:
    • 1.1 编写头文件
    • 1.2 includepath添加头文件路径
    • 1.3 编写可执行文件
    • 1.4 配置文件
    • 1.5 编译运行

运行环境:

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

思路:

类和函数:
头文件 声明
可执行文件 定义调用

另外:在CMakeLists.txt 添加头文件路径 include_directories

1.1 编写头文件

1)在功能包下的 include/功能包名 目录下新建头文件 hello.h
在这里插入图片描述

#ifndef _HELLO_H
#define _HELLO_H

namespace hello_ns{

class HelloPub {

public:
    void run();
};

}

#endif

1.2 includepath添加头文件路径

添加到功能包的include文件夹

"/home/duduzai/demo01_ws/src/demo01_pub/include/**"

在这里插入图片描述

1.3 编写可执行文件

在 src 目录下新建文件 hello.cpp
#include " 功能包/.h "

#include "ros/ros.h"
#include "demo01_pub/hello.h"

// 命名空间可以更好的管理代码命名,防止命名冲突
namespace hello_ns {

void HelloPub::run(){
    ROS_INFO("自定义头文件的使用....");
}

}

int main(int argc, char *argv[])
{
    setlocale(LC_ALL,"");
    ros::init(argc,argv,"test_head_node");

    //  创建 hello_ns命名空间 HelloPub类 对象helloPub
    hello_ns::HelloPub helloPub;
    // 通过对象.调用run函数
    helloPub.run();
    return 0;
}

1.4 配置文件

配置CMakeLists.txt文件

include_directories(
include
  ${catkin_INCLUDE_DIRS}
)

可执行文件配置和以前一样

add_executable(hello src/hello.cpp)

target_link_libraries(hello
  ${catkin_LIBRARIES}
)

1.5 编译运行

# 编译
ctrl+shift+B

# 运行
roscore
source ./devel/setup.bash
rosrun demo01_pub hello.cpp

在这里插入图片描述


⭐⭐⭐ 嘟嘟崽 ⭐⭐⭐
⭐⭐⭐ 祝你成功 ⭐⭐⭐

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/7404.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

测试行业3年经验,从大厂裸辞后,面试阿里、字节全都一面挂,被面试官说我的水平还不如应届生

测试员可以先在大厂镀金,以后去中小厂毫无压力,基本不会被卡,事实果真如此吗?但是在我身上却是给了我很大一巴掌... 所谓大厂镀金只是不卡简历而已,如果面试答得稀烂,人家根本不会要你。况且要不是大厂出来…

Leetcode6365. 最少翻转操作数题解

题目在此:力扣 首先,先祝福自己本周周赛过了三题。耶耶耶耶耶耶!虽然第一题因为脑子不好使想了半天,还WA了一次。衷心祈祷今年力扣能上1800分!!! 这道题,我看了一些通过人数&#x…

【面试】Java高频面试题(2023最新整理)

文章目录一、java基础1、JDK 和 JRE 有什么区别?2、 和 equals 的区别是什么?3、final 在 java 中有什么作用?4、java 中的 Math.round(-1.5) 等于多少?5、String 属于基础的数据类型吗?6、String str"i"与 …

JUC并发编程高级篇第三章之CAS[Unsafe和原子增强类]

文章目录1、CAS的简介1.1、什么是CAS1.2、使用CAS的前后对比1.3、CAS如何做到不加锁的情况,保证数据的一致性1.4、什么是Unsafe类1.5、CAS方法参数详解1.6、CAS的原理1.7、 CAS的缺点2、原子操作类2.1、基本类型原子类2.2、数据类型原子类2.3、引用类型原子类2.4、对…

66-插入排序

目录 1.直接插入排序 2.折半插入排序 3.在数组arr[l...r]上使用插入排序 类似打扑克牌,整理牌的时候,都是把乱的牌向已经码好的牌中插入——天然的插入排序。 1.直接插入排序 每次选择无序区间的第一个元素,插入到有序区间的合适位置&am…

chatGPT中国入口-ChatGPT评论文章-ChatGPT怎么用

国内怎么玩chatGPT 如果您在国内使用ChatGPT,主要的问题可能是连接OpenAI服务器的速度和稳定性。由于OpenAI位于美国,可能受到中国的网络限制和防火墙的影响,造成访问速度比较慢或不稳定。为了解决这个问题,您可以采取以下方法&a…

idea常用快捷键,包的介绍,访问修饰符

这里有的是我自己定义的快捷键,可以到图片是指定位置查看对应的快捷键是什么。删除当前行,Ctrld复制当前行,自己配置CtrlShift向下箭头补全代码 alt /注释Ctrl /自动导入包在上面位置把两个选项选中,在要导入包的红色位置输入al…

(C++)模板分离编译面对的问题

什么是分离编译模板的分离编译什么是分离编译 一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件链接起来形成单一的可执行文件的过程称为分离编译模式。 模板的分离编译 假如有以下…

Spring入门(万字详细附代码讲解)

1.Spring介绍 Spring其实就是一种开源框架,指的是Spring Framework,具有良好的生态,这也是Spring经久不衰的原因 用一句话概括,Spring就是一个集成了众多工具和方法的IOC容器 2.IOC容器 什么是IOC容器呢? IOC的中文翻译过来就是控制反转,IOC容器其实就是控制反转容器 那什…

2022蓝桥杯省赛——卡片

问题描述 小蓝有 k 种卡片, 一个班有 n 位同学, 小蓝给每位同学发了两张卡片, 一位同学的两张卡片可能是同一种, 也可能是不同种, 两张卡片没有顺序。没有两位同学的卡片都是一样的。 给定 n, 请问小蓝的卡片至少有多少种? 输入格式 输入一行包含一个正整数表示 n 。 输出…

Vue中的slot插槽

目录 (一)什么是slot插槽 (1)slot插槽的作用 (2)插槽的好处和使用场景 (3)slot插槽的分类 1、默认插槽 2、具名插槽 3、作用域插槽 (一)什么是slot插槽 (1)slot插槽的作用 slot具有“占坑”的作用…

Hadoop MapReduce各阶段执行过程以及Python代码实现简单的WordCount程序

视频资料:黑马程序员大数据Hadoop入门视频教程,适合零基础自学的大数据Hadoop教程 文章目录Map阶段执行过程Reduce阶段执行过程Python代码实现MapReduce的WordCount实例mapper.pyreducer.py在Hadoop HDFS文件系统中运行Map阶段执行过程 把输入目录下文件…

【GoF 23 概念理解】AOP面向切面编程

1. 什么是AOP——面向切面编程 AOP是一种编程范式,提供了一种从宁一个角度来考虑程序结构以完善面向对象编程(OOP) AOP是一个思想上的变化——主从换位,让原本主动调用的模块变成了被动等待,甚至在毫不知情的情况下被…

CodeTON Round 4 (Div. 1 + Div. 2, Rated, Prizes!)A~E

比赛连接:Dashboard - CodeTON Round 4 (Div. 1 Div. 2, Rated, Prizes!) - Codeforces A. Beautiful Sequence 题意: t(1≤t≤500)组测试每组给定大小为n(1≤n≤100) 的序列,判断它是否存在一个子序列是好序列。一个序列是好序列当且仅当至…

GPT-3:大语言模型小样本学习

论文标题:Language Models are Few-Shot Learners论文链接:https://arxiv.org/abs/2005.14165论文来源:OpenAI一、概述自然语言处理已经从学习特定任务的表示和设计特定任务的架构转变为使用任务无关的预训练和任务无关的架构。这种转变导致了…

Python - Huffman Tree 霍夫曼树实现与应用

目录 一.引言 二.Huffman Tree 理论 1.定义 2.结构 3.构造 三.Huffman Tree 实现 1.生成霍夫曼树 2.编码霍夫曼编码 3.解码霍夫曼编码 4.霍夫曼树编码解码实践 四.总结 一.引言 上篇 Word2vec 的文章中指出每次计算词库 N 个单词的 Softmax 计算量很大,…

办公工具-latex

一、排版总论 1.1 缺省权力 ​ 首先,最重要最需要强调的是,排版是一个信息量极大的工程。字体,格式,对齐方式,页眉页脚,都只是排版的冰山一角,可以说,一个人是没有办法完全控制一个…

JVM 运行时数据区概述及线程

当我们通过前面的:类的加载 --> 验证 --> 准备 --> 解析 --> 初始化,这几个阶段完成后,就会用到执行引擎对我们的类进行使用,同时执行引擎将会使用到我们运行时数据区。 运行时数据区结构 内存概念: 内存…

leetcode:只出现一次的数字 Ⅲ(详解)

前言:内容包括:题目,代码实现,大致思路,代码解读 题目: 给你一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。你可以按 任…

Qt界面编程(三)—— 父子关系、对象树、信号和槽(自定义信号和槽、Qt5与Qt4的写法)

一、Qt按钮小程序 1. 按钮的创建和父子关系 在Qt程序中&#xff0c;最常用的控件之一就是按钮了&#xff0c;首先我们来看下如何创建一个按钮&#xff1a; #include <QPushButton>QPushButton * btn new QPushButton; //设置父亲btn->setParent(this);//设置文字b…