0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ROS操作系统学习笔记2

jf_78858299 来源:机器人网 作者:机器人网 2023-05-19 17:21 次阅读

package 软件包

package是catkin编译的最小单元,我们调用catkin_make编译的对象就是一个个package,所以package也是ROS源码存放的地方。

一个package常见的结构有:

├── CMakeLists.txt #package的编译规则(必须)
├── package.xml #package的描述信息(必须)
├── src/ #源代码文件
├── include/ #C++头文件
├── scripts/ #可执行脚本
├── msg/ #自定义消息
├── srv/ #自定义服务
├── models/ #3D模型文件
├── urdf/ #urdf文件
├── launch/ #launch文件

通常ROS文件组织都是按照以上的形式,这是约定俗成的命名习惯,建议遵守。以上路径 只有 CMakeLists.txt 和 package.xml 是必须的,其余路径根据软件包是否需要来决定

package创建

创建package需要工作空间的src目录下,使用catkin_create_pkg package depends

其中package 是包名,depends是依赖的包名(如roscpp、rospy、std_msgs)执行命令后会自动完成软件包的初始化,并将依赖包按格式写入CMakeList.txt、package.xml.

gaocancan@ubuntu:~/catkin_test/src$ catkin_create_pkg catkin_test_pkg roscpp rospy std_msg
Created file catkin_test_pkg/CMakeLists.txt
Created file catkin_test_pkg/package.xml
Created folder catkin_test_pkg/include/catkin_test_pkg
Created folder catkin_test_pkg/src
Successfully created files in /home/gaocancan/catkin_test/src/catkin_test_pkg. Please adjust the values in package.xml.
gaocancan@ubuntu:~/catkin_test/src$ tree
.
├── catkin_test_pkg
│   ├── CMakeLists.txt
│   ├── include
│   │   └── catkin_test_pkg
│   ├── package.xml
│   └── src
└── CMakeLists.txt -> /opt/ros/kinetic/share/catkin/cmake/toplevel.cmake

4 directories, 3 files
gaocancan@ubuntu:~/catkin_test/src$

常用ros 命令:

如果不指定 [package]默认为当前目录

rospack list #列出本机所有package

rospack find [package] #定位某个package

rospack profile [package] #刷新所有package位置记录

rospack depends [package] #显示package依赖包

roscd [package] #打开package

rosls [package] #相当于ls

rosdep check [package] #检查package依赖是否满足

rosdep install [package] #安装package的依赖

rosdep db #生成和显示依赖数据库

rosdep init #初始化/etc/ros/rosdep中的源

rosdep keys 检查package的依赖是否满足

rosdep update 更新本地的rosdep数据库

  • cmakelists.txt、package.xml文件介绍

    CMakeList.txt指定源码到目标文件的规则,该文件规定了package要依赖的包,编译目标文件、编译流程等。

    cmakelists.txt写法:

cmake_minimum_required() #CMake的版本号
project() #项目名称
find_package() #找到编译需要的其他CMake/Catkin package
catkin_python_setup() #catkin新加宏,打开catkinPython Module的支持
add_message_files() #catkin新加宏,添加自定义Message/Service/Action文件
add_service_files()
add_action_files()
generate_message() #catkin新加宏,生成不同语言版本的msg/srv/action接口 --重要
catkin_package() #catkin新加宏,生成当前packagecmake配置,供依赖本包的其他软件包调用 --重要
add_library() #生成库
add_executable() #生成可执行二进制文件
add_dependencies() #定义目标文件依赖于其他目标文件,确保其他目标已被构建
target_link_libraries() #链接
catkin_add_gtest() #catkin新加宏,生成测试
install() #安装至本机

语法推荐:https://github.com/Akagi201/learning-cmake/blob/master/docs/cmake-practice.pdf 。作者写的很直白,掌握CMake语法可以加深理解ROS工程

package.xml 包含了package 的名称、版本号、内容、编译依赖、运行依赖等信息,实际上rospack find 、rosdep命令也是读取该文件。

package.xml写法:

package.xml有两个版本,目前主流版本都支持。

版本一:

<pacakge> 根标记文件
<name> 包名
<version> 版本号
<description> 内容描述
<maintainer> 维护者
<license> 软件许可证
<buildtool_depend> 编译构建工具,通常为catkin --重要
<build_depend> 编译依赖项,与Catkin中的  --总要
<run_depend> 运行依赖项  --重要

版本二:

<pacakge> 根标记文件
<name> 包名
<version> 版本号
<description> 内容描述
<maintainer> 维护者
<license> 软件许可证
<buildtool_depend> 编译构建工具,通常为catkin
#用depend来整合build_depend和run_depend
<depend> 指定依赖项为编译、导出、运行需要的依赖,最常用 --重要
<build_depend> 编译依赖项  --重要
<build_export_depend> 导出依赖项  --重要
#用depend来整合build_depend和run_depend
<exec_depend> 运行依赖项  --重要
<test_depend> 测试用例依赖项
<doc_depend> 文档依赖项
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 机器人
    +关注

    关注

    206

    文章

    27033

    浏览量

    201409
  • 操作系统
    +关注

    关注

    37

    文章

    6284

    浏览量

    121882
  • ROS
    ROS
    +关注

    关注

    1

    文章

    271

    浏览量

    16681
收藏 人收藏

    评论

    相关推荐

    嵌入式Linux操作系统学习规划,不看肯定后悔

    嵌入式Linux操作系统学习规划,不看肯定后悔
    发表于 04-28 06:22

    探讨嵌入式操作系统

    嵌入式操作系统学习笔记
    发表于 10-27 06:56

    嵌入式系统学习笔记相关资料推荐

    嵌入式系统学习笔记
    发表于 10-27 07:43

    嵌入式Linux操作系统学习规划

    嵌入式Linux操作系统学习规划ARM+LINUX路线,主攻嵌入式Linux操作系统及其上应用软件开发目标:(1) 掌握主流嵌入式微处理器的结构与原理(初步定为arm9)(2) 必须掌握一个嵌入式
    发表于 11-05 06:45

    Linux操作系统下的Python语言程序设计

    文章目录前言导引前言由于本专栏涉及内容较多,如果大家希望系统学习Linux操作系统下的Python语言程序设计,可参考此文章。按本文章所列文章内容进行学习即可,其它文章作为辅助参考资料使用。导引(1
    发表于 12-22 06:17

    UCOSII操作系统的简介

    前言这是我将UCOSII操作系统移植在STM32单片机上后进行UCOSII操作系统学习的一些笔记与理解,此文最后会附上我自己在UCOSII操作系统下使用STM32写
    发表于 01-12 06:00

    ROS操作系统有何作用

    ROS是什么?ROS操作系统有何作用?
    发表于 02-11 07:40

    ROS的含义与机器人操作系统ROS的介绍

    Operating System 的缩写,原本是斯坦福大学的一个机器人项目,后来由 WillowGarage 公司发展,目前由 OSRF(Open Source Robotics Foundation,Inc)公司维护的开源项目。 1、首先是一个操作系统 根据 wikipedia 定义,
    发表于 09-26 14:08 12次下载

    嵌入式操作系统学习笔记

    嵌入式操作系统学习笔记
    发表于 10-20 13:51 3次下载
    嵌入式<b class='flag-5'>操作系统学习</b><b class='flag-5'>笔记</b>

    51操作系统学习笔记(三):建立一个属于自己的AVR的RTOS(1)

    这篇笔记虽然是“51操作系统学习笔记”,但没有找到合适的代码。用杨明记的感觉还有点难度。因而转学《建立一个属于自己的AVR的RTOS》这篇文章绝对是学操作系统入门经典之作。经典之处在于
    发表于 11-15 18:36 9次下载
    51<b class='flag-5'>操作系统学习</b><b class='flag-5'>笔记</b>(三):建立一个属于自己的AVR的RTOS(1)

    51操作系统学习笔记(四):建立一个属于自己的AVR的RTOS(2)

    承接51操作系统学习笔记(三):建立一个属于自己的AVR的RTOS(1),在avr中调试一下下面的程序.为了加深学习应用,决定把代码全部输一遍,比复制的学些效果应该好一些吧。打开Avr studio
    发表于 11-15 21:06 7次下载
    51<b class='flag-5'>操作系统学习</b><b class='flag-5'>笔记</b>(四):建立一个属于自己的AVR的RTOS(2)

    ROS基本介绍

    近来找到的实习主要是做智能车控制,用到的也就是ROS机器人操作系统ROS需要运行在一个操作系统上,这个操作系统常用的就是Linux,而公司
    的头像 发表于 05-19 17:07 5125次阅读
    <b class='flag-5'>ROS</b>基本介绍

    ROS操作系统学习笔记1

    机器人操作系统(Robot operating system ,ROS)是一个应用于机器人上的基础框架,它把原本松散的零部件耦合在一起,提供通信的架构,近似上ROS是一个中间件。 ros
    的头像 发表于 05-19 17:20 558次阅读
    <b class='flag-5'>ROS</b><b class='flag-5'>操作系统学习</b><b class='flag-5'>笔记</b>1

    ROS操作系统学习笔记3

    摘要:这篇文章主要介绍ROS常用工具、ROSPY和ROSCPP常用模块,完全看完三篇文章,可以说ROS就基本入门,可以自己动手做实验了。 **ROS常用工具** ROS工具
    的头像 发表于 05-19 17:37 774次阅读
    <b class='flag-5'>ROS</b><b class='flag-5'>操作系统学习</b><b class='flag-5'>笔记</b>3

    ROS操作系统学习笔记4

    摘要:这篇文章主要介绍ROS常用工具、ROSPY和ROSCPP常用模块,完全看完三篇文章,可以说ROS就基本入门,可以自己动手做实验了。 **ROS常用工具** ROS工具
    的头像 发表于 05-19 17:37 546次阅读