创建工作空间与功能包

工作空间的相关概念

工作空间类似于工程project,是一个存放工程开发相关文件的文件夹。其中主要包括四个主要文件夹:

  • src:代码空间(Source Space)
  • build:编译空间(Build Space)【不需要关心】
  • devel:开发空间(Develop Space)【需要关注其中的内容】
  • install:安装空间(Install Space)【安装成功的结果,与开发空间存在重复】

工作空间的创建、编译与环境变量的设置

  •  创建工作空间

 新建文件夹以及该文件夹下的子文件夹(可直接新建或是用命令行新建)

mkdir catkin_ws
cd catkin_ws
mkdir src
cd src

将文件属性配置为ros的工作空间

catkin_init_workspace

在src文件夹下出现如下文本文件即说明工作空间创建完成

  • 编译工作空间

首先回到工作空间的根目录

cd ..

在工作空间中执行编译

catkin_make

随后发现会出现如下问题:

-- Found PythonInterp: /home/dian/opt/anaconda3/bin/python3 (found suitable version "3.9.7", minimum required is "3") 
-- Using PYTHON_EXECUTABLE: /home/dian/opt/anaconda3/bin/python3
-- Using Debian Python package layout
-- Could NOT find PY_em (missing: PY_EM) 
CMake Error at /opt/ros/noetic/share/catkin/cmake/empy.cmake:30 (message):
  Unable to find either executable 'empy' or Python module 'em'...  try
  installing the package 'python3-empy'
Call Stack (most recent call first):
  /opt/ros/noetic/share/catkin/cmake/all.cmake:164 (include)
  /opt/ros/noetic/share/catkin/cmake/catkinConfig.cmake:20 (include)
  CMakeLists.txt:58 (find_package)


-- Configuring incomplete, errors occurred!
See also "/home/dian/newdisk/ros_files/ws1/build/CMakeFiles/CMakeOutput.log".
Invoking "cmake" failed

解决措施:【参考:ROS知识:解决ROS和Anaconda的python冲突_无水先生的博客-CSDN博客_python3-empy

首次在工作空间的根目录下进行编译时,执行:

catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3

此时,根目录下存在三个文件夹:src、devel、build

执行如下代码,进一步生成install文件夹

功能包的相关概念

在创建代码之前需要创建功能包,功能包是放置源码的最小单元,代码必须要放在功能包,不能直接放在src文件夹中。

注意:同一工作空间下,不允许存在同名功能包,不同工作空间下,允许存在同名功能包

  • 添加工作空间:

在src文件夹中打开终端,输入:

catkin_create_pkg test_pkg roscpp rospy std_msgs

两类参数分别是功能包名称和功能包所依赖的库

在src文件夹中新生成文件

 

 其中,src文件夹用于放置功能包的代码,例如cpp文件和py代码文件都是放在功能包的src文件夹中的;include 文件夹用于放置头文件;其余两个文件是功能包必备的文件。

  • 编译功能包

回到工作空间的根目录中,编译工作空间:

catkin_make

在日志中可以看到新出现的功能包

 由于功能包中没有代码,所以不会产生功能或效果

  • 设置环境变量

 编译功能包完成后,若要实现某一个程序,则需要设置工作空间的环境变量,以便系统找到工作空间以及其中的功能包

source devel/setup.bash

检查环境变量

echo $ROS_PACKAGE_PATH

反馈的信息为:

/home/dian/newdisk/ros_files/catkin_ws/src:/opt/ros/noetic/share
  • 文件package.xml的说明

文本文件中包含功能包的基本信息、依赖信息(编译或执行时依赖的其他功能包,可以后需添加)

  • 文件CMakeLists.txt的说明 

文件中保护了功能包的编译规则,使用的语法是CMake

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值