
3.4 搭建Eclipse开发环境
在ROS开发中,可以使用多种编辑器对代码进行修改,如Ubuntu系统自带的gedit、vi等。为了方便项目开发,很多开发者也会使用IDE进行开发,如Eclipse、Vim、Qt Creator、Pycharm、RoboWare等,具体配置也可以参考官方wiki:http://wiki.ros.org/IDEs。
本节以Eclipse为例,介绍ROS的IDE搭建过程。
3.4.1 安装Eclipse
Eclipse是一款万能的集成开发环境,适合各种编程语言的项目开发,而且通过丰富的插件可以无限扩展IDE的功能。
1.安装Java环境
Eclipse本身基于Java开发,虽然不需要通过安装程序安装,但是需要Java运行环境的支持,所以首先需要确保计算机的Ubuntu系统中安装了Java。如果没有安装,可以登录Java的官方网站(http://www.oracle.com/technetwork/java/javase/downloads/index.html),下载Linux版本的JDK或JRE,然后进行安装。安装方法可以上网搜索,此处不再赘述。安装成功后,在终端中输入java命令,应该会出现类似图3-11所示的信息,说明安装成功。

图3-11 查看Java的安装版本
2.下载Eclipse IDE
登录Eclipse的官方网站(http://www.eclipse.org/downloads/),下载Linux版本的Eclipse IDE for C/C++Developers。下载完成后不需要安装,只需要解压到指定位置,即可点击其中的可执行程序运行IDE,也可以创建一个快捷方式放到桌面,使启动更加方便。
3.4.2 创建Eclipse工程文件
catkin编译系统可以直接生成Eclipse工程文件。进入之前创建的catkin_ws工作空间根路径中执行如下命令,即可生成可调试的Eclipse工程文件.project:
$ cd ~/catkin_ws $ catkin_make --force-cmake -G"Eclipse CDT4 - Unix Makefiles"
打开build文件夹,使用“Ctrl+h”快捷键就可以看到生成的隐藏文件(见图3-12)。

图3-12 Eclipse工程文件
然后设置终端的环境变量到Eclipse中:
$ awk -f $(rospack find mk)/eclipse.awk build/.project > build/.project_with_env && mv build/.project_with_env build/.project
如果需要调试程序,还需要执行以下命令来设置代码编译成debug版本:
$ cmake ../src -DCMAKE_BUILD_TYPE=Debug
3.4.3 将工程导入Eclipse
打开Eclipse,然后选择File→Import→Existing Projects into Workspace,再点击“Next”按钮(见图3-13)。
然后找到catkin_ws工作空间的路径,选择catkin_ws目录,不需要选择“Copy projects into workspace”,最后点击“Finish”按钮,即可完成工程的导入(见图3-14)。

图3-13 选择导入已存在的工程

图3-14 选择需要导入的Eclipse工程
导入成功后,应该可以看到如图3-15所示的工程目录,其中“Source directory”就是工作空间中的代码目录。

图3-15 ROS工作空间导入Eclipse后的工程目录结构
3.4.4 设置头文件路径
默认情况下,Eclipse无法识别ROS的头文件信息,需要在工程的Properties中选择C/C++General→Preprocessor Include Paths,Macros,etc→Providers,勾选CDT GCC Built-in Compiler Settings选项(见图3-16)。

图3-16 设置包含ROS头文件的路径信息
搭建完成的Eclipse开发环境如图3-17所示,现在就可以在Eclipse中通过工具栏按钮或者快捷键(Ctrl+B)编译工作空间了。

图3-17 搭建完成的Eclipse开发环境
3.4.5 运行/调试程序
在运行编译生成的可执行文件之前,还需要设置ROS Master的URI环境变量。点击Run→Run Configurations...→C/C++Application,选择刚才生成的可执行文件(在路径~/catkin_ws/devel/lib/<package name>下,如图3-18所示)。

图3-18 设置需要调试的可执行文件
然后在Environment标签页中设置ROS_ROOT、ROS_MASTER_URI变量(见图3-19)。

图3-19 设置ROS_ROOT和ROS_MASTER_URI环境变量
可以在终端中使用如下命令查看环境变量的具体路径:
$ echo $ROS_ROOT $ echo $ROS_MASTER_URI
现在就可以点击“Run”按钮运行程序了,在Eclipse的控制台窗口中可以看到输出的日志信息(见图3-20)。

图3-20 Eclipse控制台中的节点运行日志(有乱码)
控制窗口中的显示可能会出现莫名其妙的前缀和后缀乱码,这是ROS输出编码和Eclipse控制窗口编码不同所导致的,可以在Eclipse中安装ANSI escape sequences插件解决(见图3-21)。

图3-21 在Eclipse中安装ANSI escape sequences插件
安装完成后,Eclipse控制台窗口的输出就正常了(见图3-22)。

图3-22 Eclipse控制台中的节点运行日志(无乱码)
如果需要调试程序,可以选择Debug Configurations...→C/C++Application,然后选择可执行文件,进行单步运行、设置断点等调试工作(见图3-23)。

图3-23 在Eclipse中调试ROS程序