全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 工业控制 >

ROS操作系统学习笔记2

时间:2023-05-19 17:21

人气:

作者:admin

标签: ROS  机器人  操作系统 

导读:机器人操作系统(Robot operating system ,ROS)是一个应用于机器人上的基础框架,它把原本松散的零部件耦合在一起,提供通信的架构,近似上ROS是一个中间件。ros上手简单适合研究,但是...

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> 文档依赖项
温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信