ROS2 - 创建项目 (Ubuntu22.04)

2024-05-14 06:12
文章标签 项目 创建 ros2 ubuntu22.04

本文主要是介绍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

这篇关于ROS2 - 创建项目 (Ubuntu22.04)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/987961

相关文章

Maven项目中集成数据库文档生成工具的操作步骤

《Maven项目中集成数据库文档生成工具的操作步骤》在Maven项目中,可以通过集成数据库文档生成工具来自动生成数据库文档,本文为大家整理了使用screw-maven-plugin(推荐)的完... 目录1. 添加插件配置到 pom.XML2. 配置数据库信息3. 执行生成命令4. 高级配置选项5. 注意事

Linux lvm实例之如何创建一个专用于MySQL数据存储的LVM卷组

《Linuxlvm实例之如何创建一个专用于MySQL数据存储的LVM卷组》:本文主要介绍使用Linux创建一个专用于MySQL数据存储的LVM卷组的实例,具有很好的参考价值,希望对大家有所帮助,... 目录在Centos 7上创建卷China编程组并配置mysql数据目录1. 检查现有磁盘2. 创建物理卷3. 创

eclipse如何运行springboot项目

《eclipse如何运行springboot项目》:本文主要介绍eclipse如何运行springboot项目问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目js录当在eclipse启动spring boot项目时出现问题解决办法1.通过cmd命令行2.在ecl

SpringBoot项目Web拦截器使用的多种方式

《SpringBoot项目Web拦截器使用的多种方式》在SpringBoot应用中,Web拦截器(Interceptor)是一种用于在请求处理的不同阶段执行自定义逻辑的机制,下面给大家介绍Sprin... 目录一、实现 HandlerInterceptor 接口1、创建HandlerInterceptor实

Maven项目打包时添加本地Jar包的操作步骤

《Maven项目打包时添加本地Jar包的操作步骤》在Maven项目开发中,我们经常会遇到需要引入本地Jar包的场景,比如使用未发布到中央仓库的第三方库或者处理版本冲突的依赖项,本文将详细介绍如何通过M... 目录一、适用场景说明​二、核心操作命令​1. 命令格式解析​2. 实战案例演示​三、项目配置步骤​1

golang实现动态路由的项目实践

《golang实现动态路由的项目实践》本文主要介绍了golang实现动态路由项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习... 目录一、动态路由1.结构体(数据库的定义)2.预加载preload3.添加关联的方法一、动态路由1

Spring 缓存在项目中的使用详解

《Spring缓存在项目中的使用详解》Spring缓存机制,Cache接口为缓存的组件规范定义,包扩缓存的各种操作(添加缓存、删除缓存、修改缓存等),本文给大家介绍Spring缓存在项目中的使用... 目录1.Spring 缓存机制介绍2.Spring 缓存用到的概念Ⅰ.两个接口Ⅱ.三个注解(方法层次)Ⅲ.

一文教你Java如何快速构建项目骨架

《一文教你Java如何快速构建项目骨架》在Java项目开发过程中,构建项目骨架是一项繁琐但又基础重要的工作,Java领域有许多代码生成工具可以帮助我们快速完成这一任务,下面就跟随小编一起来了解下... 目录一、代码生成工具概述常用 Java 代码生成工具简介代码生成工具的优势二、使用 MyBATis Gen

springboot项目redis缓存异常实战案例详解(提供解决方案)

《springboot项目redis缓存异常实战案例详解(提供解决方案)》redis基本上是高并发场景上会用到的一个高性能的key-value数据库,属于nosql类型,一般用作于缓存,一般是结合数据... 目录缓存异常实践案例缓存穿透问题缓存击穿问题(其中也解决了穿透问题)完整代码缓存异常实践案例Red

SpringBoot项目中Redis存储Session对象序列化处理

《SpringBoot项目中Redis存储Session对象序列化处理》在SpringBoot项目中使用Redis存储Session时,对象的序列化和反序列化是关键步骤,下面我们就来讲讲如何在Spri... 目录一、为什么需要序列化处理二、Spring Boot 集成 Redis 存储 Session2.1