ROS操作系统学习笔记2

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_msgcreated file catkin_test_pkg/cmakelists.txtcreated file catkin_test_pkg/package.xmlcreated folder catkin_test_pkg/include/catkin_test_pkgcreated folder catkin_test_pkg/srcsuccessfully 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.cmake4 directories, 3 filesgaocancan@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 packagecatkin_python_setup() #catkin新加宏,打开catkin的python module的支持add_message_files() #catkin新加宏,添加自定义message/service/action文件add_service_files()add_action_files()generate_message() #catkin新加宏,生成不同语言版本的msg/srv/action接口 --重要catkin_package() #catkin新加宏,生成当前package的cmake配置,供依赖本包的其他软件包调用 --重要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有两个版本,目前主流版本都支持。
版本一:
根标记文件 包名 版本号 内容描述 维护者 软件许可证 编译构建工具,通常为catkin --重要 编译依赖项,与catkin中的 --总要 运行依赖项 --重要版本二:
根标记文件 包名 版本号 内容描述 维护者 软件许可证 编译构建工具,通常为catkin#用depend来整合build_depend和run_depend 指定依赖项为编译、导出、运行需要的依赖,最常用 --重要 编译依赖项 --重要 导出依赖项 --重要#用depend来整合build_depend和run_depend 运行依赖项 --重要 测试用例依赖项 文档依赖项

峰岹科技获国家级专精特新“小巨人”企业认定
浅谈传统电力企业转型之路的瓶颈 全国发电装机容量现状分析
AI操作避险基金 绩效已逐渐超过人类
高通着手准备5G骁龙本的心脏 第二代骁龙8cx 5G处理器带来更出色的性能和能效
格力做芯片宜放眼长远
ROS操作系统学习笔记2
使用3D打印时什么情况下需要使用到PVA材料
一键拍出全视界 保千里打令VR手机是如何做到的?
受苹果自主开发电源管理芯片,Dialog 暴跌24%,紫光集团增持股Dialog7.15%
你知道51单片机&迪文DGUS屏之DGUS屏的密码设计?
基于远程荧光粉技术的LED照片设计
人工智能推动文学新发展
中国制造业平均工资超过拉美 工业机器人是解药?
盲插式双行程磁吸模组
CES 2024宏碁将推出支持裸眼3D的笔记本电脑
机器学习是未来系统设计和平台创建中的关键组成部分
5轴cnc制造工艺的优缺点有哪些?
高端家电产业未来的发展方向,请看头部品牌新动向
锂电池智能工作体系建设与解析
提高PLC系统运行可靠性的注意事项有哪些