从激光SLAM说起
最近在看任乾老师的知乎文章:从零开始做自动驾驶定位,看到了第3篇,然后被代码编译卡住了,一直报定义了多个main函数的错误,现在编译通过才发现,是要用catkin_make编译,而不是直接用cmake、make编译。
ROS和Ubuntu是什么关系
关于这个问题,MOOC上这篇文章介绍的比较清楚:什么是ROS
ROS虽然叫做操作系统,但并非Windows、Mac那样通常意义的操作系统,它只是连接了操作系统和你开发的ROS应用程序,所以它也算是一个中间件,基于ROS的应用程序之间建立起了沟通的桥梁,所以也是运行在Linux上的运行时环境,在这个环境上,机器人的感知、决策、控制算法可以更好的组织和运行。
而任佬github上那个程序是需要在ROS环境下编译的。
ROS环境下如何编译C++代码
关于为什么有catkin编译系统,可以继续看MOOC的文章:ROS文件系统
对于源代码包,我们只有编译才能在系统上运行。而Linux下的编译器有gcc、g++,随着源文件的增加,直接用gcc/g++命令的方式显得效率低下,人们开始用Makefile来进行编译。然而随着工程体量的增大,Makefile也不能满足需求,于是便出现了Cmake工具。CMake是对make工具的生成器,是更高层的工具,它简化了编译构建过程,能够管理大型项目,具有良好的扩展性。对于ROS这样大体量的平台来说,就采用的是CMake,并且ROS对CMake进行了扩展,于是便有了Catkin编译系统。
具体编译方法,大家可以找一下这篇文档:ROS的C++程序编译流程图