5938|3

655

帖子

30

TA的资源

版主

楼主
 

39“万里”树莓派小车——ROS学习(ROS项目文件系统结构介绍以及导入外部软件包的... [复制链接]

 
本帖最后由 lb8820265 于 2022-11-1 16:03 编辑

       学习软件最快的方式就是从例程入手,而大部分的软件例程都可以直接用软件打开运行。但是ROS例程使用起来却要稍显麻烦,要弄懂ROS例程怎么导入并使用之前,需要了解ROS工程的组织架构和各个文件的功能和作用。

Catkin编译系统

        对于源代码包,我们只有编译才能在系统上运行。而Linux下的编译器有gcc、g++,随着源文件的增加,直接用gcc/g++命令的方式显得效率低下,人们开始用Makefile来进行编译。然而 随着工程体量的增大,Makefile也不能满足需求,于是便出现了Cmake工具。CMake是对 make工具的生成器,是更高层的工具,它简化了编译构建过程,能够管理大型项目,具有良 好的扩展性。对于ROS这样大体量的平台来说,就采用的是CMake,并且ROS对CMake进行 了扩展,于是便有了Catkin编译系统。

Catkin工作原理

catkin编译的工作流程如下:

  1. 首先在工作空间 catkin_ws/src/下递归的查找其中每一个ROS的package。
  2. package中会有package.xml和CMakeLists.txt 文件,Catkin编译系统依据 CMakeLists.txt 文件,从而生成makefiles (放在catkin_ws/build/ )。
  3. 然后make刚刚生成的makefiles等文件,编译链接生成可执行文件(放在catkin_ws/devel )。

Catkin工作空间 

      Catkin工作空间是创建、修改、编译catkin软件包的目录。catkin的工作空间,直观的形容就是一个仓库,里面装载着ROS的各种项目工程,便于系统组织管理调用。在可视化图形界面里是一个文件夹。

 src/: ROS的catkin软件包(源代码包)

build/: catkin(CMake)的缓存信息和中间文件

devel/: 生成的目标文件(包括头文件,动态链接库,静态链接库,可执行文件等)、环境变量

.catkin_workspace:隐藏文件,用来指示该空间为catkin空间

      在编译过程中,它们的工作流程如图:

      后两个路径由catkin系统自动生成、管理,我们日常的开发一般不会去涉及,而主要用到的是 src文件夹,我们写的ROS程序、网上下载的ROS源代码包都存放在这里。

Package软件包

        Package软件包是catkin编译的基本单元,我们调用catkin_make 编译的对象就是一个个ROS的package,一个package下常见的文件、路径有:

├── CMakeLists.txt  #package的编译规则(必须)

├── package.xml  #package的描述信息(必须)

├── src/  #源代码文件

├── include/   #C++头文件

├── scripts/ #可执行脚本

├── msg/ #自定义消息

├── srv/ #自定义服务

├── models/ #3D模型文件

├── urdf/ #urdf文件

├── launch/ #launch文件

    其中定义package的是 CMakeLists.txt 和 package.xml ,这两个文件是package中必不可少的。catkin编译系统在编译前,首先就要解析这两个文件。这两个文件就定义了一个package。

导入外部软件包的方法

    因此,导入外部软件包的方法实际上就是将Package软件包放入Catkin工作空间的src文件夹,具体步骤如下:
0. 安装“noetic”版本ROS

1. 建立ROS工作空间文件夹
    例如新建“catkin_ws”文件夹和“src”子文件夹

mkdir -p catkin_ws/src

2. 将源代码放入“src”文件夹
    可以手动复制放入,例如将源码中“helloworld”例程文件夹放入“src”文件夹,也可以从GitHub克隆整个软件到“src”文件夹,代码如下:

cd ~/catkin_ws/src
git clone https://https://github.com/wanli-car/ROS_Examples.git

3. 安装所需要的依赖

rosdep install --from-paths src --ignore-src --rosdistro=noetic -y

4. 编译
    在“catkin_ws”文件夹目录下执行编译指令

catkin_make

5. 刷新环境

source ~/catkin_ws/devel/setup.bash

6. 使用VSCode打开工程(可无)

code .

7. 启动ROS内核
    重新打开一个终端输入

roscore

8. 运行
    在原来的终端中输入

rosrun helloworld helloworld_node

参考

    参考了中国大学MOOC---《机器人操作系统入门》课程的PDF,表示感谢,该PDF帖子最后下载。

源码

    GitHub:https://github.com/wanli-car/ROS_Examples

    Gitee:https://gitee.com/wanli-car/ROS_Examples

ROS机器人操作系统讲义.pdf

7.17 MB, 下载次数: 7

最新回复

看了ROS工程的组织架构感觉还是挺复杂的   详情 回复 发表于 2023-5-12 22:56
点赞 关注
个人签名QQ:252669569
 
 

回复
举报

7044

帖子

11

TA的资源

版主

沙发
 

对于源代码包,我们只有编译才能在系统上运行。而Linux下的编译器有gcc、g++,随着源文件的增加,直接用gcc/g++命令的方式显得效率低下,人们开始用Makefile来进行编译。然而 随着工程体量的增大,Makefile也不能满足需求,于是便出现了Cmake工具。CMake是对 make工具的生成器,是更高层的工具,它简化了编译构建过程,能够管理大型项目,具有良 好的扩展性。对于ROS这样大体量的平台来说,就采用的是CMake,并且ROS对CMake进行 了扩展,于是便有了Catkin编译系统。

我是刚学到make呀,路很长。希望向版主多多学习!

 
 
 

回复

34

帖子

0

TA的资源

一粒金砂(中级)

板凳
 

对于ROS这样大体量的平台来说,就采用的是CMake,并且ROS对CMake进行 了扩展,于是便有了Catkin编译系统

 
 
 

回复

1704

帖子

0

TA的资源

五彩晶圆(初级)

4
 

看了ROS工程的组织架构感觉还是挺复杂的

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表