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

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

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

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

第一步:创建工作空间

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.mrgr.cn/news/67568.html

相关文章:

  • VMWareTools安装及文件无法拖拽解决方案
  • 每日OJ题_牛客_最长公共子序列_DP_C++_Java
  • Websocket协议
  • elementplus+vue3显示第几周(el-date-picker)
  • hive表内外表之间切换
  • Linux——Shell的运行原理和Linux文件权限
  • 积极助力信创工作,爱加密荣获麒麟系统优秀合作伙伴
  • EFI和UEFI的起源及Romstage和Ramstage有什么区别?
  • Certimate:又发现了一款不错的自动化SSL证书管理工具,它能让你的网站随时保持https安全状态,抓紧收藏起来吧
  • Windows系统中Oracle VM VirtualBox的安装
  • 探索魁北克:IT精英的理想移民地
  • 书生第四期实训营基础岛——L1G5000 XTuner 微调个人小助手认知
  • 《重学Java设计模式》之 工厂方法模式
  • 以梧桐数据库为例分析分组排序并取每组第二大数值对应的用户的SQL实现
  • C#的IDisposable 接口和析构函数
  • JS保留两位小数
  • 我们来学mysql -- EXPLAIN之ID(原理篇)
  • idea-git 远程仓库代码回滚,本地仓库代码回滚,删除未加入git的文件
  • 二叉树及其应用
  • 背包九讲——背包问题求具体方案
  • 三品PLM系统如何规范企业图纸文档资料电子化管理
  • 全国消防安全月知识答题小程序来袭
  • 基于SpringBoot的Java教学支持系统开发指南
  • 将python代码转化成接口api
  • 低价治理都有哪些方法
  • 营销邮件策略:提升打开率和转化率的技巧!