ROS2 - 创建项目 (Ubuntu22.04)

本文简述:在 Ubuntu22.04 系统中使用 VS CODE 来搭建一个ROS2开发项目。

1. 创建工作空间

本文使用 Ubuntu 22.04, 已安装配置完成 VS Code,C++ 环境(g++/gdb)

1.1 创建目录

选择文件夹作为工作空间,并在这个文件夹下,创建 src 子文件夹。

cd btl_ros_project/
mkdir src
 1.2 编译工作空间

在创建好的功能包中,继续完成代码的编写,完成后需要编译和配置环境变量,才能正常运行:

colcon build   # 编译工作空间所有功能包
source install/local_setup.bash    #配置环境初始化

执行命令后,文件夹内出现了一些新的文件夹:build, install, log。

创建工作空间时需要编译,以后创建功能包,修改代码后都要重新编译。 

1.3 设置环境变量, 初始化工作区

编译完成后,还需要设置环境变量才能让系统知道这个工作空间内有哪些功能包和可执行文件,因此还需要设置环境变量。这一步的作用是初始化工作区。

1)使环境变量只在当前终端内生效

cd btl_ros_project/
source install/local_setup.sh

2)使环境变量在所有终端生效。使用第二种后,也可以使用第一种手动刷新环境变量。

cd btl_ros_project/
echo " source ~/myProjects/btl_ros_project/install/local_setup.sh" >> ~/.bashrc

设置环境变量的操作在每次编译之后都要执行。

2. 创建功能包 

2.1 创建只有一种语言的功能包

创建 C++ 功能包:

cd srcros2 pkg create cal_joint_angle --node-name joint_node --build-type ament_cmake --dependencies rclcpp std_msgs

ros2 pkg create <你的功能包名字> --build-type <选择cmake/ament_camke/ament_python三者之一作为项目的编译工具> --node-name <节点名称,这一项可以不写,后续手动配置> --dependencies <依赖项名字,例如在ROS1中常用的rclpy rclcpp std_msgs sensor_msgs等>

创建 Python 功能包:

cd srcros2 pkg create cal_joint_angle_py --node-name joint_node --build-type ament_cmake --dependencies rclpy std_msgs

package.xml 文件是ROS2项目的功能包管理文件。上述命令中依赖项可以先不写,可以在创建完成后在package.xml中修改CMakeLists.txt 是ROS2项目的编译配置文件。

2.2

2.2 包含多种语言的功能包

建议一个节点仅使用一种语言,通过修改CMakeLists.txt的内容,也可以创建包含多种语言的节点。

3. 进行节点编程

3.1 代码存放位置

C++功能包,将代码文件新建到功能包文件夹下的 src 文件夹内。

Python功能包,将代码文件新建到功能包文件夹下的与功能包同名的文件夹下。

上述两个功能包分别位于:

btl_ros_project/src/cal_joint_angle/src/

btl_ros_project/src/cal_joint_angle_py/cal_joint_angle_py/ 

3.2 VS Code 配置 ROS

1.创建 VS Code 工作目录

cd btl_ros_project/src (进入src文件夹)
code . (在该目录下打开VS CODE)

2. <ROS2工程目录下>/src/<节点cpp>.cpp 节点代码编写

3. 配置 settings.json文件

需要自己在项目下面新建 .vscode 文件夹,然后在在该文件夹下新建 settings.json文件 , 添加下列内容:

{

//添加/opt/ros/humble文件夹下的ros2的include路径

"files.associations": {

"iostream": "cpp"

},

"C_Cpp.default.includePath": ["/opt/ros/humble/include/**"]

}

4. ROS2项目的 package.xml 文件和配置 CMakeLists.txt 文件:

  package.xml 文件是ROS2项目的功能包管理文件。 CMakeLists.txt 是ROS2项目的编译配置文件,ROS2项目采用ament_cmake工具。

5. colcon 构建项目

在项目工作空间的目录下,运行:

colcon build

6.设环境变量

cd btl_ros_project/
source install/local_setup.sh

7.执行该项目节点文件

在终端输入 ros2 run 功能包名 节点名

ros2 run cal_joint_angle joint_node

参考链接:

1. https://blog.csdn.net/qq_51403009/article/details/133415895

2.https://blog.csdn.net/aniclever/article/details/135653069

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

空号检测接口如何对接?

手机运营商空号检测接口又叫空号过滤查询接口、手机号状态检测查询接口&#xff0c;指的是输入手机号&#xff0c;查询其在网活跃度&#xff0c;返回包括空号、实号、停机、库无、沉默号、风险号等状态。那么运营商空号检测接口如何对接呢&#xff1f; 首先我们找到一家有手机…

vb6 ado连接数据库 oledb Microsoft OLE DB Provider for SQL Server 连接字符串

SQL Server 2000 标准安全 Providersqloledb;Data SourcemyServerAddress;Initial CatalogmyDataBase;User IdmyUsername;PasswordmyPassword; SQL Server 2000SQL服务器7.0 可信连接 Providersqloledb;Data SourcemyServerAddress;Initial CatalogmyDataBase;Integrated Secur…

排序-冒泡排序(bubble sort)

冒泡排序&#xff08;Bubble Sort&#xff09;是一种简单的排序算法&#xff0c;它重复地遍历待排序的数列&#xff0c;一次比较两个元素&#xff0c;如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复地进行直到没有再需要交换&#xff0c;也就是说该数列已经排序完成…

Weblogic 任意文件上传漏洞(CVE-2018-2894)

1 漏洞描述 CVE-2018-2894漏洞存在于Oracle WebLogic Server的Web服务测试页面&#xff08;Web Service Test Page&#xff09;中。这个页面允许用户测试Web服务的功能&#xff0c;但在某些版本中&#xff0c;它包含了一个未经授权的文件上传功能。攻击者可以利用这个漏洞&…

数据特征降维 | 主成分分析(PCA)附Python代码

主成分分析(Principal Component Analysis,PCA)是一种常用的数据降维技术和探索性数据分析方法,用于从高维数据中提取出最重要的特征并进行可视化。 PCA的基本思想是通过线性变换将原始数据投影到新的坐标系上,使得投影后的数据具有最大的方差。这些新的坐标轴称为主成分…

苹果cms:搜索功能的开关与设置

今天有个小伙伴问了个关于苹果cms搜索的问题&#xff1a;直接搜演员搜索不到影片信息&#xff08;如下图&#xff09; 1、我们拿演员王宝强为例&#xff1a;搜索王宝强后结果显示无相关视频 2、但是我们搜索王宝强主演的“大闹天竺”后却能得到关于王宝强的影片信息。这是为什…

springboot以tomcat方式启动后报错

使用idea启动tomcat时&#xff0c;报错。将程序打包到linux后&#xff0c;仍报相同错误。 错误如下&#xff1a; 一个或多个筛选器启动失败。完整的详细信息将在相应的容器日志文件中找到 严重[localhost] org.apache.catalina.core.StandardContext.startInternal 由于之前的…

代理模式的理解

文章目录 前言一、代理模式的定义和优、缺点定义优点缺点 二、代码演示案例1.静态代理2.JDK动态代理3.CGLIB动态代理 总结 前言 代理模式常见的使用场景包括&#xff1a; 需要对对象的访问进行控制或限制的情况。 需要在访问对象时执行额外的操作&#xff0c;例如记录日志、收…

内啡肽的产生

内啡肽的产生 短视频、直播和游戏等娱乐活动可以刺激多巴胺分泌&#xff0c;让人感到兴奋和愉悦。这些短暂的快乐却会让我们逐渐上瘾&#xff0c;难以自拔。不知不觉中&#xff0c;我们忽略了时间的流逝&#xff0c;满足于现状&#xff0c;失去了追求更高目标的动力。 越是富…

跨ROS系统通信:使用TCP实现节点间的直连

当涉及到在机器人操作系统&#xff08;ROS&#xff09;环境中的通信时&#xff0c;标准做法通常是在同一个ROS网络内通过话题和服务进行。但在某些特定情况下&#xff0c;比如当你有两个分布在不同网络中的ROS系统时&#xff0c;标准的通信方法可能不太适用。此时&#xff0c;一…

【WEB前端2024】开源智体世界:乔布斯3D纪念馆-第21课-购买烟花插件

【WEB前端2024】开源智体世界&#xff1a;乔布斯3D纪念馆-第21课-购买烟花插件 使用dtns.network德塔世界&#xff08;开源的智体世界引擎&#xff09;&#xff0c;策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编写的智体世界引擎…

OpenAI 5月13日推出的ChatGPT4o模型带来了什么新东西及我们需要注意什么

前言 OpenAI再次发布了新一代模型&#xff0c;可惜不是GPT5&#xff0c;发布会很长&#xff0c;所以我尝试看了一些自媒体对发布会做的总结视频&#xff0c;但是我发现这些自媒体制作的视频普遍很“营销号”味且总结的不全面&#xff0c;所以我看了发布会并尝试做了总结。 正…

OmniDrive:具有 3D 感知推理和规划功能的自动驾驶整体 LLM-智体框架

24年5月北理工、Nvidia和华中科大的论文“OmniDrive&#xff1a;A Holistic LLM-Agent Framework for Autonomous Driving with 3D Perception Reasoning and Planning”。 多模态大语言模型&#xff08;MLLMs&#xff09;的进展导致了对基于LLM的自动驾驶的兴趣不断增长&…

软件各阶段资料(需求设计,系统架构,开发文档,测试文档,运维阶段的部署维护文档,概要设计,详细设计)

一、 引言 &#xff08;一&#xff09; 编写目的 &#xff08;二&#xff09; 范围 &#xff08;三&#xff09; 文档约定 &#xff08;四&#xff09; 术语 二、 项目概要 &#xff08;一&#xff09; 建设背景 &#xff08;二&#xff09; 建设目标 &#xff08;三&#xff0…

解决Jmeter报错 :Error generating the report: java.lang.NullPointerException

当我们在使用命令行的方式来执行jmeter 脚本的时候&#xff0c;例如 ./jmeter -n -t /opt/jmeter/script/test.jmx -Juser50 -Jtime100 -l /opt/jmeter/script/restult2.jtl 上面脚本的含义解释如下&#xff1a; -n -t 通过命令行的方式执行脚本test.jmx -Juser50 并发用户…

【贪心的商人】-华为OD

系列文章目录 文章目录 系列文章目录前言一、题目描述二、输入描述三、输出描述四、java代码五、测试用例 前言 本人最近再练习算法&#xff0c;所以会发布自己的解题思路&#xff0c;希望大家多指教 一、题目描述 商人经营一家店铺&#xff0c;有number种商品&#xff0c;由…

一次完整的GC流程

Java堆中内存区分 Java的堆由新生代&#xff08;Young Generation&#xff09;和老年代&#xff08;Old Generation&#xff09;组成。新生代存放新分配的对象&#xff0c;老年代存放长期存在的对象。 新生代&#xff08;Young&#xff09;由年轻区&#xff08;Eden&a…

亚马逊卖家,如何打造爆款,如何提高产品权重、曝光、流量?

新老卖家们要知道&#xff0c;亚马逊A9算法影响产品排名的关键因素&#xff1a;产品相关性、销售排名、产品价格、点击率、转化率、产品图片、买家评论、买家满意度、QA的答复情况、搜索结果页详细信息级别。亚马逊A9算法&#xff0c;是根据卖家提供的listing文案信息进行收录、…

NIUKE SQL:大厂面试真题(四) 【某滴打车】

SQL174 2021年国庆在北京接单3次及以上的司机统计信息 问题&#xff1a;请统计2021年国庆7天期间在北京市接单至少3次的司机的平均接单数和平均兼职收入&#xff08;暂不考虑平台佣金&#xff0c;直接计算完成的订单费用总额&#xff09;&#xff0c;结果保留3位小数 SELECTc…

新一代GPT!GPT-4O:更快、更懂人类情感的人工智能新纪元

今天凌晨&#xff08;5.14凌晨&#xff09;&#xff0c;OpenAI 的 GPT-4O 版本在自然语言处理领域带来了革命性的改变。不仅在处理速度上获得了显著提升&#xff0c;GPT-4O 还增加了对人类情感的理解能力&#xff0c;这使得它在与人类的交互中更加自然和富有同理心。本文将深入…