在ROS层面上编写软件,需要有相关的工作空间(workspace)。
生成工作控件并不复杂,首先,我们打开一个控制台(Ctrl+Alt+T),在用户路径下信件一个文件夹,我们起名为LearnROS(也可以起一个自己喜欢的名字)。
然后在这个文件夹中再建立一个文件夹,我们命名为src;完成后,进入src工作路径,输catkin_init_workspace指令初始化工作控件,这会在src文件夹中生成CMakeList。
然后我们进入主路径,在没有任何代码的条件下catkin_make一下,观察现象:
完整的操作的指令如下:
mkdir LearnROS
cd LearnROS/
mkdir src
cd src
catkin_init_workspace
cd ..
catkin_make
cd src
完成这些操作后,我们发现,在LearnROS路径下生成了3个文件夹:build,devel和src。
build文件夹存放了Makefile文件,是catkin自动生成的编译配置文件
devel路径下存放了生成的可执行文件,也就是ROS运行的节点文件(类似于windows下的exe),在没有源代码的情况下,它是空的。
src中存放了我们创作的源文件和头文件,我们所有的代码也都是在src这个文件夹中完成的。
接下来,我们在ROS中拷入一个完整的软件包,编译看看:
首先,在github网站上随便找一个导航包:https://github.com/ros-planning/navigation
控制台中输入:git clone https://github.com/ros-planning/navigation,就可以将navigation包复制到src路径下。
当然,也可以用我精简的导航包,package的数量被精简为4个,包含了移植后的A*算法,这个编译起来会快很多。
切换到LearnROS目录下,输入:catkin_make,等待编译。编译过程中可能会提示缺少SDL_image包的错误,大家可以自己想解决方案,如果无法解决可以在评论区留言。
等待几分钟,编译完成!
打开devel/lib/文件夹,发现生成了可执行文件,也就是node节点文件,这就说明编译成功了!