ego-planner代码个人阅读笔记
写在前面:不建议观看
1.学习代码编程规范架构:
在功能包下分出files文件夹用于存放过程输出文件如节点图等;
创建scripts存放脚本文件如shell脚本可以存放roslaunch的命令靠sh xx.sh启动,#号注释;以及bash文件即可以进行判断等高级操作的shell脚本。
src文件真正存C工程和CMake的地方
2.px4ctrl文件夹
有许多其他文件夹中不曾出现的,原因是用于开发环境配置,使得团队成员在编写代码时配置统一。
(1).vscode文件夹:
有两个json文件:c_cpp_properties.json和settings.json。JSON 是一种轻量级的数据交换格式,是存储和交换文本信息的语法。
需要特别注意的是他是告诉Vscode这个IDE相应的配置信息而不是ROS等其他环境的编译信息,因此有时候会出现Vscode的配置信息和你本地的不匹配但是还是可以编译。这个不正确的话影响的应该是在IDE写代码时的报错说找不到库。
(2)config文件夹:集中管理所有配置文件,cfg文件的意思是存储应用程序的设置和参数。不仅能配置参数还能配置应用程序如代码检查工具等
(3)编译头文件设置:在cMake中设置:
include_directories(${catkin_INCLUDE_DIRS}${CMAKE_SOURCE_DIR}/../include # 关键:添加 src 同级目录的 include )
带${}的意思是使用变量的意思,把这个整体看成一级路径就行。所以要识别当前路径的头文件只需要在这加上include即可
(4)find_package,默认从环境变量设置的ros以及devel下的catkin下的cmake找,找到配置文件后就会找到ros的头文件和devel的头文件。
其次还可以自定义路径,如果找不到了他会在这里找
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")
(5)launch文件
multi_node.launch:控制多个无人机节点iris0,1,2,这是命名空间,实际上是px4ctrl_0才是节点名字,重映射话题防止话题重复from="odom" to="mavros/local_position/odom"后odom这个话题就变成/iris_0/mavros/local_position/odom,在这个命名空间下启动mavros的话题。
然后导入自己的参数yaml。
run_mavros_gazebo.launch:在仿真环境下的单架无人机,软件在环 (SITL):在软件上模拟无人机飞控
run_node.launch:单架无人机
(6)$(find px4)为什么不是find这个PX4-Autopilot
答案是由于历史原因命名出现两个,所以ros在编译时只会认package_xml中的标签name,他实际上都功能是查找package_xml对应的功能包的路径,find px4是ros独创的。