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

ros2创建一个工程

第一步:创建src目录

$ mkdir ros2-demo
$ cd ros2-demo/
$ mkdir src
$ cd src/

第二步:创建功能包

cd src$
ros2 pkg create --build-type ament_cmake ros2_demo --dependencies rclcpp std_msgsros2 pkg create --build-type ament_python learning_pkg_python # Python
ros2命令中:
pkg:表示功能包相关的功能;
create:表示创建功能包;
build-type:表示新创建的功能包是C++还是Python的,如果使用C++或者C,那这里就跟ament_cmake,如果使用Python,就跟ament_python
package_name:新建功能包的名字。比如在终端中分别创建C++和Python版本的功能包:

第三步:确定功能包

  1. c++/c功能包

  1. 首先看下C++类型的功能包,其中必然存在两个文件:package.xml和CMakerLists.txt。

  1. package.xml文件的主要内容如下,包含功能包的版权描述,和各种依赖的声明。

  1. CMakeLists.txt文件是编译规则,C++代码需要编译才能运行,所以必须要在该文件中设置如何编译,使用CMake语法。

2.python功能包

  1. C++功能包需要将源码编译成可执行文件,但是Python语言是解析型的,不需要编译,所以会有一些不同,但也会有这两个文件:package.xmlsetup.py

  1. package.xml文件的主要内容和C++版本功能包一样,包含功能包的版权描述,和各种依赖的声明。

  1. setup.py文件里边也包含一些版权信息,除此之外,还有“entry_points”配置的程序入口。

第四步:创建节点文件

cd ~/ros2-demo/src/ros2_demo
sudo gedit sub_node.cpp

sub_node.cpp代码具体如下:

#include <chrono>
#include "rclcpp/rclcpp.hpp"
using namespace std::chrono_literals;
/* This example creates a subclass of Node and uses a fancy C++11 lambda* function to shorten the timer syntax, at the expense of making the* code somewhat more difficult to understand at first glance if you are* unaccustomed to C++11 lambda expressions. */
class MinimalTimer : public rclcpp::Node
{
public:MinimalTimer(): Node("minimal_timer"){auto timer_callback = [this]() -> void { RCLCPP_INFO(this->get_logger(), "Hello, world!") };timer_ = create_wall_timer(500ms, timer_callback);}
private:rclcpp::TimerBase::SharedPtr timer_;
};
int main(int argc, char * argv[])
{rclcpp::init(argc, argv);rclcpp::spin(std::make_shared<MinimalTimer>());rclcpp::shutdown();return 0;
}

第五步:修改CMakeLists.txt和package.xml

  1. 修改CMakeLists.txt;

cd ~/ros2-demo/src/ros2_demo
sudo gedit CMakeLists.txt
  1. find_package(ament_cmake REQUIRED)下面添加

find_package(rclcpp REQUIRED)
find_package(std_msgs REQUIRED)
  1. 添加可执行文件的名字为ros2_demo

add_executable(ros2_demo src/sub_node.cpp)
ament_target_dependencies(ros2_demo rclcpp std_msgs)
  1. 添加 install(TARGETS…) 把可执行文件安装到install去

install(TARGETSros2_demoDESTINATION lib/${PROJECT_NAME})

第六步:编译和运行

  1. 编译节点

cd ~/ros2-demo
colcon build --packages-select ros2_demo
source install/setup.bash
  1. 运行节点

ros2 run ros2_demo sub_node

相关文章:

ros2创建一个工程

第一步&#xff1a;创建src目录 $ mkdir ros2-demo $ cd ros2-demo/ $ mkdir src $ cd src/第二步&#xff1a;创建功能包cd src$ ros2 pkg create --build-type ament_cmake ros2_demo --dependencies rclcpp std_msgsros2 pkg create --build-type ament_python learning_pkg…...

【力扣】stack容器的探索之有效的括号

作者&#xff1a;狮子也疯狂 专栏&#xff1a;《算法详解》 愿你生如夏花之绚烂&#xff0c;幸运永远与你相伴&#xff0c;疯狂常在。 目录一. &#x1f981; Stack容器的来历1.1 操作栈的方法二. &#x1f981; Stack的使用2.1 题目2.2 分析2.3 详细算法实现2.4 力扣AC截图三…...

【Elsevier出版社】中科院2区,SCIEEI 双检,已有发表案例,3个月左右录用

1区智能传感器类SCIE&EI 【期刊简介】IF&#xff1a;5.0-6.0&#xff0c;JCR1区&#xff0c;中科院2区&#xff0c;SCI&EI 双检&#xff0c;正刊 【参考周期】3个月左右录用 【截稿日期】2023.5.30 【征稿领域】有关人工智能与传感器的相关研究均可 包括但不限于&#…...

基于明道云平台重建医院管理流程

一、龙华区医疗信息化建设情况 首先&#xff0c;给大家介绍一下龙华区医疗信息化建设的情况&#xff0c;龙华区位于深圳市的中部&#xff0c;目前下属3家公立医院&#xff0c;2家公共卫生机构。2017年&#xff0c;龙华区提出了建设智慧龙华总体框架方案&#xff0c;龙华区卫生…...

【蓝桥杯嵌入式】STM32定时器的配置,解析预分频系数和重装载值与时钟频率的关系

&#x1f38a;【蓝桥杯嵌入式】专题正在持续更新中&#xff0c;原理图解析✨&#xff0c;各模块分析✨以及历年真题讲解✨都在这儿哦&#xff0c;欢迎大家前往订阅本专题&#xff0c;获取更多详细信息哦&#x1f38f;&#x1f38f;&#x1f38f; &#x1fa94;本系列专栏 - 蓝…...

ChatGPT API 低价上线,开发者可以人手一个了?

千呼万唤&#xff0c;ChatGPT API来了&#xff01; 不仅首发&#xff0c;价格居然还有惊喜&#xff0c;0.002美元/每1000 token&#xff0c;并将价格降低90%&#xff0c;直接打了1折。OpenAI官方还表示&#xff0c;gpt-3.5-turbo目前的版本代号是gpt-3.5-turbo-0301&#xff0…...

品牌营销策略 | 科学经营合作伙伴关系的5个要素

在管理众多的合作伙伴项目时&#xff0c;企业会遇到很多的问题&#xff0c;比如&#xff0c;数据信息分散凌乱、手动操作繁琐重复和处理环节粗放等。这将耗费公司大量的人力物力&#xff0c;严重影响大数据的综合分析和利用。因此&#xff0c;企业要科学管理好企业的合作伙伴关…...

【剑指offer-C++】JZ20:表示数值的字符串

【剑指offer-C】JZ20&#xff1a;表示数值的字符串题目描述解题思路题目描述 描述&#xff1a;请实现一个函数用来判断字符串str是否表示数值&#xff08;包括科学计数法的数字&#xff0c;小数和整数&#xff09;。 科学计数法的数字(按顺序&#xff09;可以分成以下几个部分…...

【NLP相关】深度学习领域不同编程IDE对比

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️&#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…...

定制ubuntu的docker镜像

ssh登录jdkmavenvimpingcurlFROM ubuntu:22.04RUN apt-get updateRUN apt-get install -y \vim \inetutils-ping \openssh-server \curl \openjdk-8-jdk \mavenRUN mkdir /var/run/sshdRUN echo root:root |chpasswdRUN sed -ri s/^#?PermitRootLogin\s.*/PermitRootLogin yes…...

我的 System Verilog 学习记录(8)

引言 本文简单介绍 SystemVerilog 的接口。 前文链接&#xff1a; 我的 System Verilog 学习记录&#xff08;1&#xff09; 我的 System Verilog 学习记录&#xff08;2&#xff09; 我的 System Verilog 学习记录&#xff08;3&#xff09; 我的 System Verilog 学习记…...

详解JAVA字节码

目录 1.概述 2.字节码文件构成 2.1.魔数 2.2.版本号 2.3.常量池 2.4.访问标志 2.5.索引 2.6.字段表 2.7.方法表 3.字节码指令 3.1.概述 3.2.指令分类 3.2.1.加载存储指令 3.2.2.运算指令 3.2.3.其他指令 3.3.完整指令工作流程 4.字节码保护 1.概述 以往的编程…...

前端利用emailjs发送邮件

最近有一个需求&#xff0c;前端发送一个form表单到一个邮箱&#xff0c;找了一圈发现emailjs还不错就使用他了。首先emailjs官网注册一个账号注册完之后创建一个邮件服务&#xff08;我这里使用的是谷歌邮箱&#xff09;链接谷歌邮箱账户 然后创建服务接下来就要创建一个邮件的…...

16 Nacos服务端服务注册源码分析

Nacos服务端服务注册源码分析 服务端调用接口 我们已经知道客户端在注册服务的时候实际上是调用的NamingService.registerInstance这个方法来完成实例的注册&#xff0c;而且在最后我们也告诉了大家实际上从本质上讲服务注册就是调用的对应接口nacos/v1/ns/instance&#xff…...

Spring Boot2中如何优雅地个性化定制Jackson

概述 本文的编写初衷&#xff0c;是想了解一下Spring Boot2中&#xff0c;具体是怎么序列化和反序列化JSR 310日期时间体系的&#xff0c;Spring MVC应用场景有如下两个&#xff1a; 使用RequestBody来获取JSON参数并封装成实体对象&#xff1b;使用ResponseBody来把返回给前…...

2023年全国最新食品安全管理员精选真题及答案11

百分百题库提供食品安全管理员考试试题、食品安全员考试预测题、食品安全管理员考试真题、食品安全员证考试题库等&#xff0c;提供在线做题刷题&#xff0c;在线模拟考试&#xff0c;助你考试轻松过关。 101.婴幼儿配方乳粉的产品配方应当经&#xff08;&#xff09;部门注册。…...

【脚本】用于得到某个文件/文件夹所有文件的存储大小(MB单位)

知识点 来自在线转换换算网页&#xff1a;在线文件大小(bit,bytes,KB,MB,GB,TB)转换换算 电脑中存储常用的单位&#xff1a; 1Byte(Byte 字节) 8Bit 1KB (Kilobyte 千字节) 1024Byte 1MB (Megabyte&#xff0c;兆字节&#xff0c;简称“兆”) 1024KB 1GB (Gigabyte&am…...

19- CNN进行Fashion-MNIST分类 (tensorflow系列) (项目十九)

项目要点 Fashion-MNIST总共有十个类别的图像。代码运行位置 CPU: cputf.config.set_visible_devices(tf.config.list_physical_devices("CPU"))fashion_mnist keras.datasets.fashion_mnist # fashion_mnist 数据导入训练数据和测试数据拆分: x_valid, x_train…...

【正点原子FPGA连载】第二十二章IP封装与接口定义实验 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南

1&#xff09;实验平台&#xff1a;正点原子MPSoC开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id692450874670 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html 第二十二章IP封装…...

【ElasticSearch8.X】学习笔记(二)

【ElasticSearch8.X】学习笔记四、基础操作4.1、索引操作4.1.1、创建索引4.1.2、查询指定索引4.1.3、查询所有索引4.1.4、 删除索引4.2、文档操作4.2.1、创建文档4.2.2、查询文档4.2.3、修改文档4.2.4、删除文档4.2.5、查询所有文档4.3、数据搜索4.3.1、匹配查询文档4.3.2、匹配…...

Ubuntu22.04安装、配置、美化、软件安装、配置开发环境

Ubuntu22.04安装、配置、美化、软件安装、配置开发环境 一、Ubuntu、Windows11&#xff08;10&#xff09;双系统安装 因为ubuntu的安装网上的教程特别多了&#xff0c;所以这里不做赘述&#xff0c;推荐使用小破站这个up主的教程&#xff1a;Windows 和 Ubuntu 双系统从安装到…...

企业电子招投标采购系统之系统的首页设计

​​ 功能模块&#xff1a; 待办消息&#xff0c;招标公告&#xff0c;中标公告&#xff0c;信息发布 描述&#xff1a; 全过程数字化采购管理&#xff0c;打造从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通供应商门户具备内外协同的能力&#xff0c;为…...

Python爬虫-阿里翻译_csrf

前言 本文是该专栏的第37篇,后面会持续分享python爬虫干货知识,记得关注。 笔者在前面有介绍过百度翻译的案例,感兴趣的同学,可往前翻阅查看(JS逆向-百度翻译sign)。而本文,笔者要介绍的是阿里翻译,相对于百度翻译的参数被逆向需要花点时间,阿里相对于易上手。 下面…...

C语言实现三子棋【详解+全部源码】

大家好&#xff0c;我是你们熟悉的恒川 今天我们用C语言来实现三子棋 实现的过程很难&#xff0c;但我们一定要不放弃 三子棋1. 配置运行环境2. 三子棋游戏的初步实现2.1 建立三子棋分布模块2.2 创建一个名为board的二维数组并进行初始化2.3 搭建棋盘3. 接下来该讨论的事情3.1 …...

双指针法将时间复杂度从 O(n^2) 优化到 O(n)

[1] 什么是双指针法 双指针法&#xff08;Two Pointers&#xff09;是一种常见的算法技巧&#xff0c;常用于数组和链表等数据结构中。 双指针法的基本思想是维护两个指针&#xff0c;分别指向不同的位置&#xff0c;通过它们的移动来解决问题。在某些情况下&#xff0c;使用双…...

【SpringBoot系列】 Spring中自定义Session管理,Spring Session源码解析

系列文章:Spring Boot学习大纲,可以留言自己想了解的技术点 目录 系列文章:Spring Boot学习大纲,可以留言自己想了解的技术...

【上位机入门常见问题】SQLServer2019 安装指导

SQLServer2019 安装指导 这里要说一下SQLServer的版本问题&#xff0c;首先说纵向的高低版本&#xff0c;如果大家跟我学习&#xff0c;我教给大家的是T-SQL编程的方法&#xff0c;而不是直接操作菜单的方法&#xff0c;所以&#xff0c;我们学习中只要使用SQLServer2012或以上…...

RabbitMQ第一讲

目录 一、RabbitMQ-01 1.1 MQ概述 1.2 MQ的优势和劣势 1.2.1 优势 1.2.2 劣势 1.2.3 MQ应用场景 1.2.4 常用的MQ产品 1.3 RabbitMQ的基本介绍 1.3.1 AMQP介绍 1.3.2 RabbitMQ基础架构 1.3.3 RabbitMQ的6种工作模式 ​编辑 1.4 AMQP和JMS 1.4.1 AMQP 1.4.2 JMS …...

华为机试题:HJ100 等差数列(python)

文章目录&#xff08;1&#xff09;题目描述&#xff08;2&#xff09;Python3实现&#xff08;3&#xff09;知识点详解1、input()&#xff1a;获取控制台&#xff08;任意形式&#xff09;的输入。输出均为字符串类型。1.1、input() 与 list(input()) 的区别、及其相互转换方…...

数据推荐 | 人体行为识别数据集

人体行为识别任务旨在通过对人体姿态进行分析&#xff0c;识别出人体的具体动作&#xff0c;为人体行为预测、突发事件处理、智能健身、智能看护等领域提供技术支持。 图片 图片 人体行为识别数据标注方式 人体行为数据通用的标注方式包括人体关键点标注和动作标签标注&#…...

wordpress前台不显示图片/网上引流推广怎么做

网上关于JAVA的适配器模式例子有很多&#xff0c;但真的有少实在不怎么样&#xff0c;看也不懂。自己总结了一个在性能和结构上都很容易理解的Adapter模式。 Adapter模式也叫适配器模式&#xff0c;是由GoF提出的23种设计模式的一种。Adapter模式是构造型模式之一&#xff0c;通…...

淘宝客网站程序模板/免费的网页设计成品下载

今天是第十四届阿里日&#xff0c;也是第十三届集体婚礼&#xff0c;1314&#xff0c;都是因为你。 橙子也有幸见证了这次超甜蜜的集体婚礼&#xff1a; 咦&#xff0c;怎么还有国际友人&#xff1f;原来这102对新人里&#xff0c;还有12对是来自海外的阿里新人&#xff1a; 当…...

广西网站设计欣赏/武汉seo网站排名优化公司

Datagrid 控件是 Microsoft ASP.NET 中功能最强、用途最广的 Web 控件之一&#xff0c;这一点已经得到了 ASP.NET 权威人士的认同。虽然 Datagrid 控件易于使用&#xff0c;但同样易于给使用者带来麻烦。以下是许多人所犯的一些错误&#xff0c;这些人包括从初学者到富有经验的…...

网站的注册上一步下一步怎么做/百度网页推广

SQL Server 2000中的并行处理和执行计划中的位图运算符 摘抄自&#xff1a;SQLServer 2000并行处理和位图简介 刘志斌 并行查询介绍Degree of Parallelism&#xff08;并行度&#xff09; 一个查询使用并行来处理时&#xff0c;SQL Server为该查询分配多个线程&#xff0c;每个…...

网站建设技术支持牛商网/上海seo网站推广公司

注意&#xff1a;我主要使用ARM机器,因此其中一些可能是ARM特定的.另外,我将尽可能地尝试简化它.随意纠正任何可能错误或过于简单的事情.Lets say the thread makes a system call. I am a bit unclear on the workings after this. The Interrupt will generate a call. One o…...

网站备案地址不是我的地址怎么办/免费推广方法有哪些

快乐虾http://blog.csdn.net/lights_joy/欢迎转载&#xff0c;但请保留作者信息在first.py中创建了一个点到点的信道&#xff0c;且配置了两个属性&#xff1a;pointToPoint ns.point_to_point.PointToPointHelper() pointToPoint.SetDeviceAttribute("DataRate", n…...