![机器人SLAM导航:核心技术与实战](https://wfqqreader-1252317822.image.myqcloud.com/cover/141/42557141/b_42557141.jpg)
上QQ阅读APP看书,第一时间看更新
2.1 C++工程的组织结构
C++工程的组织结构虽然可以说是“仁者见仁,智者见智”的问题,但是当项目规模较大且参与开发的人员较多时,就要遵循一定的范式以便于项目管理。
2.1.1 C++工程的一般组织结构
一般情况下,C++工程的组织结构是将不同的功能封装在不同的类中,每个类用配套的头文件和源文件来实现,头文件可以是*.h、*.hpp之类的文件,源文件可以是*.cc、*.cpp之类的文件。最后在main函数中,调用类来实现具体的功能。如图2-1所示为一个典型的C++工程的组织结构,main函数调用Class A和Class B,而Class B需要调用Class C。
![0](https://epubservercos.yuewen.com/B34107/22070569609738106/epubprivate/OEBPS/Images/041-01.jpg?sign=1739140933-yJzxBcI7BZpcNGbUVwiLNIop89OmkIyA-0-4253bb63e4a5bfe5ed8305f72722150e)
图2-1 C++工程的一般组织结构
2.1.2 C++工程在机器人中的组织结构
在机器人项目中,C++工程代码通常分成两个部分:一个部分用于实现具体算法,另一个部分用于进行ROS接口封装。算法部分的C++代码通常采用图2-1所示的方式进行组织,并且算法部分的代码往往可以独立运行或作为库安装到系统中;ROS接口部分的C++代码则采用ROS的方式进行组织。如图2-2所示,ROS接口负责数据输入、数据输出以及核心算法调用,后续章节中涉及的ORB-SLAM2和cartographer_ros都是采用这种方式来组织代码的。
![0](https://epubservercos.yuewen.com/B34107/22070569609738106/epubprivate/OEBPS/Images/041-02.jpg?sign=1739140933-5AuX4ZsvRfF1TNhtf0xMtXtBO0L0fPmg-0-2d500858d8d8f8af02bfad8f3684f880)
图2-2 C++工程在机器人中的组织结构