前一段时间在根据网上的视频学习ROS,在过程中遇到了各种领域的问题,硬件支持,系统兼容,软件迭代等等,但是个人觉得这些都是一些外在的,比较容易解决的问题,但是在学习ROS的过程中,发现了许多之前遗漏的知识点掌握不全面导致的各种问题,甚至出现了许多完全看不懂的地方,完全不能理解的代码书写方式,也让我重新审视了我当前的学习状态
在过去一段时间里,我常常采用的学习方式是运行Demo,看看ROS究竟能干什么,它的平台究竟有多么卓越,但是并没有深入理解其构建的基础,即C++和Python,这就导致最开始根本连代码都看不懂,可是,视频的制作者认为我这样的同学已经有了一定的C++基础。甚至大部分C++代码都能一眼看明白,不过我当前的状态与之相去甚远,所以,我打算在接下来的这一段ROS学习中,分出来一大部分时间去补习C++和Python基础,也在这一小段时间内收货到了按需学习的成果,总的来说,有很多地方茅塞顿开,就像当时学习STM32的时候还没有完全理解C语言一样。
大概包括以下几点
-
关于命名空间
- 之前一直不能很好理解ros::init: :*是什么意思,在学习了C++的命名空间相关知识之后明白了ros中很多函数都是有自己应用的命名空间 关于主函数回调
- 看了一些Python的基础课程,对回调函数的基本操作有了一定的理解,相当于在函数中为其保留一个入口,在需要的时候进行回调 关于程序接口
- 这点目前只是我的个人猜测,我猜想ROS中不同功能包的接口其实和Class中在public中声明的接口函数有异曲同工之妙,在很大程度上既保护了数据的安全性(但是拒收ROS I没有安全性保护)又达到了传输数据的目的 关于头文件声明
- 在明白了尖括号和双引号的区别之后,也让我对功能包路径和ROS系统PATH重要性的理解有了很大的帮助,在这之前虽然有模模糊糊的认识,但是只有接触到了原理性的内容,才会明白目的是什么,我最开始才抄写代码的时候还有意把所有双引号变成尖括号,包括在之前的C语言编程中也有类似的经历,真是无知。 关于主函数的传入参数
- 之前在学习了命令行传入参数之后隐约觉得主函数的传入参数有几分相似,在系统学习C++的过程中,接触到了C++的标准书写形式,虽然目前还不爱能准确描述其定义,但是对我理解ROS程序已经有了很大的帮助