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

22.04Ubuntu---ROS2使用rclcpp编写节点C++

节点需要存在于功能包当中,功能包需要存在于工作空间当中。

所以我们要想创建节点,就要先创建一个工作空间,再创建功能包。

第一步:创建工作空间

mkdir -p chapt2_ws/src/

第二步:创建example_cpp功能包,使用ament-cmake作为编译类型,并为其添加rclcpp依赖。

cd chapt2_ws/src
ros2 pkg create example_cpp --build-type ament_cmake --dependencies rclcpp
  • pkg create 是创建包的意思
  • --build-type 用来指定该包的编译类型,一共有三个可选项ament_pythonament_cmakecmake
  • --dependencies 指的是这个功能包的依赖,这里给了一个ros2的C++客户端接口rclcpp

打开终端,进入chapt2_ws/src运行上面的指令,创建完成后的目录结构如下:

.
└── src└── example_cpp├── CMakeLists.txt├── include│   └── example_cpp├── package.xml└── src5 directories, 2 files

接着我们在example_cpp/src下创建一个node_01.cpp节点,创建完成后的目录结构如下:

可以选择用touch命令,也可以直接在vscode里创建。

开始编写代码:

#include "rclcpp/rclcpp.hpp"int main(int argc, char **argv)
{/* 初始化rclcpp  */rclcpp::init(argc, argv);/*产生一个node_01的节点*/auto node = std::make_shared<rclcpp::Node>("node_01");// 打印一句自我介绍RCLCPP_INFO(node->get_logger(), "node_01节点已经启动.");/* 运行节点,并检测退出信号 Ctrl+C*/rclcpp::spin(node);/* 停止运行 */rclcpp::shutdown();return 0;
}

修改CmakeLists

在CmakeLists.txt加入下面两行代码。目的是让编译器编译node_01这个文件

add_executable(node_01 src/node_01.cpp)
ament_target_dependencies(node_01 rclcpp)

接着在上面两行代码下面添加下面的代码。

install(TARGETSnode_01DESTINATION lib/${PROJECT_NAME}
)

编译运行节点

在 chapt2_ws下依次输入下面的命令

colcon build                  

source install/setup.bash

ros2 run example_cpp node_01

在另一终端输入

ros2 node list

可以看到显示出来的节点 

http://www.lryc.cn/news/481584.html

相关文章:

  • XML 现实案例:深入解析与应用
  • Spring源码(十二):Spring MVC之Spring Boot
  • Kafka 之事务消息
  • 小菜家教平台(四):基于SpringBoot+Vue打造一站式学习管理系统
  • 解决 Vue3、Vite 和 TypeScript 开发环境下跨域的问题,实现前后端数据传递
  • 量化交易系统开发-实时行情自动化交易-3.3.数据采集流程
  • 探索PyAV:Python中的多媒体处理利器
  • SpringBoot源码解析(三):启动开始阶段
  • C# const与readonly关键字的区别
  • 【数据分享】1901-2023年我国省市县镇四级的逐年降水数据(免费获取/Shp/Excel格式)
  • hhdb数据库介绍(9-4)
  • 苍穹外卖的分层所用到的技术以及工具+jwt令牌流程图(jwt验证)
  • Python——数列1/2,2/3,3/4,···,n/(n+1)···的一般项为Xn=n/(n+1),当n—>∞时,判断数列{Xn}是否收敛
  • css:还是语法
  • 关于 el-table 的合计行问题
  • 解决SVN更新,提交错误乱码
  • 《Python网络安全项目实战》项目4 编写网络扫描程序
  • Python金融大数据分析概述
  • 黑马产品经理
  • 机器学习——损失函数、代价函数、KL散度
  • 首次超越扩散模型和非自回归Transformer模型!字节开源RAR:自回归生成最新SOTA!
  • C语言最简单的扫雷实现(解析加原码)
  • 20. 类模板
  • SSL证书以及实现HTTP反向代理
  • 多种算法解决组合优化问题平台
  • 【笔记】LLC电路工作频点选择 2-1 输出稳定性的限制
  • Linux系统程序设计--2. 文件I/O
  • 右值引用——C++11新特性(一)
  • JavaScript 观察者设计模式
  • 鸿蒙进阶篇-网格布局 Grid/GridItem(二)