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标签:

  • 21
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值