系列文章目录
提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
TODO:写完再整理
文章目录
前言
认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对ROS工程规范做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章
提示:以下是本篇文章正文内容
一、ROS工程目录架构规范
(1)launch启动文件
Launch文件最好放在一个功能包里面,用命令行容易寻找得到,同时编程的时候工程也不用这么乱。总的launch文件搞一个robot_launch功能包,子功能包内放一个launch文件夹来存放【防盗标记–盒子君hzj】
(2)工程架构
--src
--一级文件目录【按层次分】
(一级功能包......)
--二级文件目录【按功能分】
--(二级功能包)
二、ROS功能包架构规范
(0)cmakelist、package.xml文件填写参数【cmake编译器相关】【防盗标记–盒子君hzj】
(1)src文件夹
存放C++、python源码的空间
(2)include文件夹
存放通用库lib文件或功能包
(3)config文件夹
存放参数文件,如.csv/.yaml/.config
(4)launch文件夹
存放调试和部署的大大小小的launch文件
存放rviz相关的文件
存放gazebo相关的文件
(5)doc/.md文件夹
存放说明文档
...
注意
(1)功能包是多个文件夹的东西一起写的,不分先后顺序,同时进行debug【防盗标记–盒子君hzj】
(2)不同的功能包可以定义相同名字的变量和函数,因为功能包名字不一样,所以不同的功能包可以定义相同名字的变量和函数,这样可以使得功能包更加连贯起来,同时功能又相互独立
三、ROS源文件节点(.cpp/,h)架构规范
(1)#include<功能包名/.h文件名>
(2).cpp构造函数编写最好是有顺序规范的
【构造函数最好带有句柄,.h文件的class也是对应这个顺序】
0)句柄
1)param变量加载
2)创建订阅器
3)创建发布器
4)创建定时器
5)创建boost线程
6)服务通讯
7)动作通讯
8)运行仅仅运行一次的初始化函数
(3).h的类:对应写声明,分门别类
注意
没有写完main()函数就会报错,因为编译找不到起点,要写完main()函数,类和构造函数逗得先写完【防盗标记–盒子君hzj】
四、ROS的msgs数据类型规范
待补充~
五、ROS的话题名、变量名命名规范
(1)在节点node中设置订阅和发布topic名字的技巧
(1)作用
可以在launch文件中更改话题的名字,修改话题名字比较方便,同时在终端debug的时候比较方便
【先使用launch文件的话题名,没有在launch文件中定义的时候使用默认的话题名】
(2)方法
1)在launch文件夹中用<param>标签定义一个话题名变量
2)在CPP源文件的构造函数中用nh.param获取该话题名变量,然后在订阅器和发布器上填入该话题名变量即可【一开始的时候,最好默认的话题名和launch的话题名一致】
(2)话题名规范,话题名前面都加上“/”,作为话题的识别【当然不加也可以】【防盗标记–盒子君hzj】