ROS笔记一:工作空间和功能包

目录

工作空间

如何创建工作空间:

 编译工作空间

 设置环境变量

功能包

  创建功能包

CMakeLists.txt

 package.xml


工作空间

ROS的工作空间是用来存放工程文件代码的文件夹

ROS的开发依赖于工作空间,包括编写代码、编译等都是在工作空间下进行的

工作空间有三种文件 :build-编译过程产生的中间文件夹、src-代码文件(功能包)、devel-编译生成的目标文件

如何创建工作空间:

①mkdir -p ~/work_name/src创建文件夹

  1. mkdir: 这是一个常用的命令,用于创建目录。

  2. -p: 这个选项允许mkdir命令创建多级目录结构。如果没有加上这个选项,而你尝试创建的目录的上级目录不存在时,mkdir命令会报错。使用了-p选项后,如果所需的上级目录不存在,mkdir会自动创建它们。

  3. ~/work_name/src: 这指定了你想要创建的目录路径。

    • ~代表当前用户的家目录。在Linux和Unix系统中,每个用户都有一个家目录,通常路径是/home/用户名,对于root用户则是/root。在这个上下文中,~会被自动扩展为当前用户的家目录的绝对路径。
    • /work_name/src指定了在家目录下想要创建的目录结构。具体来说,这个命令会在家目录下创建一个名为work_name的目录,然后在work_name目录内部再创建一个名为src的子目录。
    • work_name就是你工作空间的目录

② cd ~/work_name/src进入文件夹

③ catkin_init_workspac初始化工作空间

运行catkin_init_workspace 命令是要切换到src目录下的

 编译工作空间

编译工作空间是一个用于构建和运行程序的环境。它通常由编译器、库文件和其他必要的工具组成,用于将源代码转换为可执行文件或库。编译工作空间提供了一个统一的界面和管理系统,使开发人员能够轻松地编写、调试和测试他们的代码。

catkin_make:编译工作空间(整个工作空间)

编译完之后当前的路径下就会有三个文件

 编译单独功能包:catkin_make -DCATKIN_WHITELIST_PACKAGES="package_name"

 当使用完编译单独功能包的指令之后想编译整个工作空间,但使用catkin_make此时是编译单独那个指定的功能包,需要catkin_make -DCATKIN_WHITELIST_PACKAGES=""才能把单独解除编译全部功能

自定义编译速度:catkin_make -j -l

"-j"用于指定并行构建任务的数量(同步进行的任务数量);-l表示系统加载的任务数

想加快编译速度的话就:catkin_make -j2 -l2

 设置环境变量

添加环境变量,就为了告诉系统这是我们工作空间的一个路径。在运行工作空间里面程序的时候才能够被正确地索引到

source devel/setup.bash(添加单个终端环境变量)

nano .bashrc

source ..../devel/setup.bash

source .bashrc添加全局环境变量

echo $ROS_PACKAGE_PATH查看ROS的环境变量

功能包

功能包是存放在src下,里面的内容就是编写的源代码

功能包里面的内容:

 include--.h文件、src--.cpp文件、CMakeLists.txt--定义功能包编译的规则、urdf--.urdf文件(三位模型)

package.xml--定义package的属性 、launch--launch文件、scripts--可执行脚本文件(Python

config--参数文件,yaml,srv,msg,action

  创建功能包

catkin_create_pkg<package_name>[depend1] [depend2] [depend3]   

 e.g:catkin_create_pkg new_package std_msgs rospy roscpp

CMakeLists.txt

CMakeLists.txt用于定义编译规则的文件,即用于定义如何编译和构建ROS功能包

常用的cmakelist宏:

  1. cmake_minimum_required:指定CMake的最低版本要求。例如,cmake_minimum_required(VERSION 2.8.3)表示需要使用CMake 2.8.3或更高版本。

  2. project:指定ROS软件包的名称和版本。例如,project(my_package VERSION 0.1.0)表示ROS软件包的名称为my_package,版本为0.1.0。

  3. find_package:查找依赖项并配置ROS软件包。例如,find_package(catkin REQUIRED COMPONENTS roscpp std_msgs)表示需要安装roscpp和std_msgs依赖项,并将它们添加到catkin构建系统中。

  4. catkin_package:定义ROS软件包的编译选项和依赖项。例如,catkin_package(CATKIN_DEPENDS roscpp std_msgs)表示需要在编译ROS软件包时使用roscpp和std_msgs,并将它们作为catkin软件包的依赖项。

  5. include_directories:指定ROS软件包的头文件目录。例如,include_directories(include ${catkin_INCLUDE_DIRS})表示需要包含ROS软件包的include目录和catkin_INCLUDE_DIRS变量中的所有目录。

  6. add_executable:定义ROS软件包的可执行文件。例如,add_executable(my_node src/my_node.cpp)表示需要将src/my_node.cpp文件编译成名为my_node的可执行文件。

  7. target_link_libraries:指定ROS软件包的依赖项。例如,target_link_libraries(my_node ${catkin_LIBRARIES})表示需要将catkin_LIBRARIES变量中的所有库链接到my_node可执行文件中

 package.xml

package.xml用于描述功能包的信息。描述和定义ROS功能包的元数据和依赖关系

<package format="2">根标签

......

</package>

package.xml是以一个标签的形式来写的,分为必要标签和可选标签

必要的package.xml标签:

<name>包名
<version>版本号
<description>描述
<maintainer>维护者 
<license>开源许可

可选的package.xml标签:

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

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

相关文章

vue electron应用调exe程序

描述 用Python写了一个本地服务编译成exe程序&#xff0c;在electron程序启动后&#xff0c;自动执行exe程序 实现 1. 使用node的child_process模块可以执行windows执行&#xff0c;通过指令调exe程序 // electron/index.js var cp require("child_process"); /…

【开源】SpringBoot框架开发城市桥梁道路管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 查询城市桥梁4.2 新增城市桥梁4.3 编辑城市桥梁4.4 删除城市桥梁4.5 查询单个城市桥梁 五、免责说明 一、摘要 1.1 项目介绍 基于VueSpringBootMySQL的城市桥梁道路管理系统&#xff0c;支持…

跟着pink老师前端入门教程-day20

二、移动WEB开发之flex布局 1、flex 布局体验 1.1 传统布局与flex布局 传统布局&#xff1a;兼容性好、布局繁琐、局限性、不能再移动端很好的布局 flex弹性布局&#xff1a;操作方便&#xff0c;布局极为简单&#xff0c;移动端应用很广泛&#xff1b;PC 端浏览器支持情况…

archlinux 使用 electron-ssr 代理 socks5

提前下载好 pacman 包 https://github.com/shadowsocksrr/electron-ssr/releases/download/v0.2.7/electron-ssr-0.2.7.pacman 首先要有 yay 和 aur 源&#xff0c;这个可以参考我之前的博客 虚拟机内使用 archinstall 安装 arch linux 2024.01.01 安装依赖 yay 安装的&#…

辛芷蕾在《繁花》中美艳照人,实力打脸于正。

♥ 为方便您进行讨论和分享&#xff0c;同时也为能带给您不一样的参与感。请您在阅读本文之前&#xff0c;点击一下“关注”&#xff0c;非常感谢您的支持&#xff01; 文 |猴哥聊娱乐 编 辑|徐 婷 校 对|侯欢庭 在王家卫导演的电视剧《繁花》中&#xff0c;辛芷蕾饰演的李李…

容器化对数据库的性能有影响吗?

引言 容器化是一种将应用程序及其依赖项打包到一个独立、可移植的运行环境中的技术。容器化技术通过使用容器运行时引擎&#xff08;比如Docker/Containerd&#xff09;来创建、部署和管理容器。Kubernetes&#xff08;通常简称为 k8s&#xff09;是一个开源的容器编排和管理平…

数字图像处理(实践篇)四十七 OpenCV-Python 高动态范围HDR

目录 一 HDR 二 实践 高质量的图像具备的要素如下: ①分辨率 图像中的像素数量。在特定屏幕尺寸下,分辨率越高,像素越多,显示的细节更精细。 ②位深度

国密SM2算法进行数据的加密、签名和验签、解密

一、背景介绍 数据的加解密有很多种方式&#xff0c;几种常用的加密算法如下&#xff1a; DES&#xff08;Data Encryption Standard&#xff09;&#xff1a;对称算法&#xff0c;数据加密标准&#xff0c;速度较快&#xff0c;适用于加密大量数据的场合&#xff1b; 3DES&…

Leetcode—42. 接雨水【困难】

2024每日刷题&#xff08;112&#xff09; Leetcode—42. 接雨水 空间复杂度为O(n)的算法思想 实现代码 class Solution { public:int trap(vector<int>& height) {int ans 0;int n height.size();vector<int> l(n);vector<int> r(n);for(int i 0; …

微软.NET6开发的C#特性——接口和属性

我是荔园微风&#xff0c;作为一名在IT界整整25年的老兵&#xff0c;看到不少初学者在学习编程语言的过程中如此的痛苦&#xff0c;我决定做点什么&#xff0c;下面我就重点讲讲微软.NET6开发人员需要知道的C#特性。 C#经历了多年发展&#xff0c; 进行了多次重大创新&#xf…

C# CAD交互界面-自定义窗体(三)

运行环境 vs2022 c# cad2016 调试成功 一、引用 二、开发代码进行详细的说明 初始化与获取AutoCAD核心对象&#xff1a; Database db HostApplicationServices.WorkingDatabase;&#xff1a;这行代码获取当前工作中的AutoCAD数据库对象。在AutoCAD中&#xff0c;所有图形数…

3D室内虚拟灭火体验为预防火灾提供全新方案

室内火灾常见于充电器未拔、电动车、油锅起火及煤气泄露等原因&#xff0c;由于室内空间小、易燃物多&#xff0c;因此极易造成较大的人员财产损失&#xff0c;3D仿真还原技术、通过1&#xff1a;1模拟还原火灾发生全过程&#xff0c;火灾VR安全培训提供全方位、真实感强的模拟…