当前位置: 首页 > article >正文

ROS实践12 自定义源文件并调用

文章目录

    • 运行环境:
    • 思路:
    • 原理:
    • 1.1 头文件编写
    • 1.2 编写源文件
    • 1.3 编写可执行文件
    • 1.4 🏯配置文件🏯
    • 1.5 编译运行

运行环境:

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

思路:

上一期:类和函数:
头文件 声明
可执行文件 定义

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

添加include路径
新建c++库
链接c++库和ros库
链接可执行文件和新建c++库

原理:

头文件将源文件和可执行文件链接起来

1.1 头文件编写

1)在功能包下的 include/功能包名 目录下新建头文件 hello.h
2)配置 includepath 详情见上期

#ifndef _HAHA_H
#define _HAHA_H

namespace hello_ns {

class My {

public:
    void run();

};

}

#endif

1.2 编写源文件

1)在 src 目录下新建文件:haha.cpp

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

namespace hello_ns{

void My::run(){
    ROS_INFO("hello,head and src ...");
}

}

1.3 编写可执行文件

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

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

int main(int argc, char *argv[])
{
    ros::init(argc,argv,"hahah");
    hello_ns::My my;
    my.run();
    return 0;
}

1.4 🏯配置文件🏯

配置CMakeLists.txt文件

添加include路径
新建c++库
链接c++库和ros库

# 添加inlude路径
include_directories(
include
  ${catkin_INCLUDE_DIRS}
)

# 新建名为head的c++,将头文件和源文件添加到库中
add_library(head
  include/demo01_pub/haha.h
  src/haha.cpp
)

# 链接c++库和ros库
target_link_libraries(head
  ${catkin_LIBRARIES}
)

可执行文件配置:链接可执行文件和新建c++库

add_executable(use_head.cpp src/use_head.cpp)

target_link_libraries(use_head.cpp
  head
  ${catkin_LIBRARIES}
)

1.5 编译运行

# 编译
ctrl+shift+B

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

在这里插入图片描述


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

http://www.kler.cn/a/7927.html

相关文章:

  • 基于yolov8、yolov5的鱼类检测识别系统(含UI界面、训练好的模型、Python代码、数据集)
  • vscode远程连接服务器并启用tmux挂载进程
  • react 中 useContext Hook 作用
  • C 语言 【模拟实现内存库函数】
  • 设计模式练习(一) 单例模式
  • C++编程:利用环形缓冲区优化 TCP 发送流程,避免 Short Write 问题
  • Serverless MQTT 服务即将正式上线、新增 2 个平台安装包
  • Python SMTP发送邮件和线程
  • DevExpress WinForms电子表格控件,让应用更快拥有现代办公体验!
  • QT笔记——QuaZIP压缩文件夹
  • 若依Linux环境部署
  • 导数的四则运算
  • 产品经理考个PMP有多大作用吗?
  • 走进小程序【五】微信小程序架构之【逻辑层】详解
  • vs中的错误集合
  • CSDN竞赛第42期题解
  • Android 手机自动化测试工具有哪几种?
  • C++ 类与对象part3(static成员、匿名对象、友元、内部类、编译器的优化)
  • 创维跨界脑洞大 XR+汽车=睡眠?
  • STM32 FSMC接口驱动4.3寸TFT LCD屏
  • SpringBoot操作Redis
  • 【Redis】Redis 主从复制 + 读写分离
  • Linux扩展文件系统
  • 【蓝桥杯】【嵌入式组别】第九节:MCP4017编程设计
  • 图片文字的居垂直居中对齐属性:vertical-align:middle
  • ggplot2主题专栏02:时尚又商业范儿十足的ggthemr扩展包