![ROS机器人开发实践](https://wfqqreader-1252317822.image.myqcloud.com/cover/565/937565/b_937565.jpg)
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所示的信息,说明安装成功。
![](https://epubservercos.yuewen.com/51F0DE/10797217603874506/epubprivate/OEBPS/Images/3a11.png?sign=1739335293-8wDTurWQTEzLxYymaYeyrhQIqdRgaMS1-0-ca68e713459c04dfcb6fa25b7a1f04e6)
图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)。
![](https://epubservercos.yuewen.com/51F0DE/10797217603874506/epubprivate/OEBPS/Images/3a12.png?sign=1739335293-BZuMURtKUWNp28FS1xbqt8wnulXAWywI-0-0f7e74c5f0596d917b7c89c4cc190b32)
图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)。
![](https://epubservercos.yuewen.com/51F0DE/10797217603874506/epubprivate/OEBPS/Images/3a13.png?sign=1739335293-wOLiusd4RhJMCeQbbZTHO4h7uicSllPl-0-9d03d55d833c3144b891e536ceb27b1e)
图3-13 选择导入已存在的工程
![](https://epubservercos.yuewen.com/51F0DE/10797217603874506/epubprivate/OEBPS/Images/3a14.png?sign=1739335293-BTNgnt7BxFAyxwHOWxyoc4hWdymbFxBK-0-32d00f12247fcffe82d832a9c8a38e6d)
图3-14 选择需要导入的Eclipse工程
导入成功后,应该可以看到如图3-15所示的工程目录,其中“Source directory”就是工作空间中的代码目录。
![](https://epubservercos.yuewen.com/51F0DE/10797217603874506/epubprivate/OEBPS/Images/3a15.png?sign=1739335293-fYxapbkec6Znm8LDjy4XZ5s4UmrCfdIE-0-b2bcd7ab368a769bfe5d02b74dde0ced)
图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)。
![](https://epubservercos.yuewen.com/51F0DE/10797217603874506/epubprivate/OEBPS/Images/3a16.png?sign=1739335293-2OK8KyuK8JD31SDtV3p03EH5iIw7Pe57-0-7778a9f9b4f68b4a05da504009d2e151)
图3-16 设置包含ROS头文件的路径信息
搭建完成的Eclipse开发环境如图3-17所示,现在就可以在Eclipse中通过工具栏按钮或者快捷键(Ctrl+B)编译工作空间了。
![](https://epubservercos.yuewen.com/51F0DE/10797217603874506/epubprivate/OEBPS/Images/3a17.png?sign=1739335293-0zHWPFNxUmwAxa1CLgJZrgVnOQT9U0ih-0-9fc6bc7e5c61f3b10f8ea30a4eded7d7)
图3-17 搭建完成的Eclipse开发环境
3.4.5 运行/调试程序
在运行编译生成的可执行文件之前,还需要设置ROS Master的URI环境变量。点击Run→Run Configurations...→C/C++Application,选择刚才生成的可执行文件(在路径~/catkin_ws/devel/lib/<package name>下,如图3-18所示)。
![](https://epubservercos.yuewen.com/51F0DE/10797217603874506/epubprivate/OEBPS/Images/3a18.png?sign=1739335293-71yqAbeifIYFgfjG6MOalXhexgz765pa-0-0916f3a8a0a3e0e4ab0d85f1d2241627)
图3-18 设置需要调试的可执行文件
然后在Environment标签页中设置ROS_ROOT、ROS_MASTER_URI变量(见图3-19)。
![](https://epubservercos.yuewen.com/51F0DE/10797217603874506/epubprivate/OEBPS/Images/3a19.png?sign=1739335293-jrVnbjVrDjKLnKKU2QND8fCceFHkgr5p-0-3b2895db44da30a7083b8710069c5c20)
图3-19 设置ROS_ROOT和ROS_MASTER_URI环境变量
可以在终端中使用如下命令查看环境变量的具体路径:
$ echo $ROS_ROOT $ echo $ROS_MASTER_URI
现在就可以点击“Run”按钮运行程序了,在Eclipse的控制台窗口中可以看到输出的日志信息(见图3-20)。
![](https://epubservercos.yuewen.com/51F0DE/10797217603874506/epubprivate/OEBPS/Images/3a20.png?sign=1739335293-DTVLeuYmSaZhrzV4R2dCcKT6GDtQYyyn-0-0802b444e2a85909a388ecb8138b1b64)
图3-20 Eclipse控制台中的节点运行日志(有乱码)
控制窗口中的显示可能会出现莫名其妙的前缀和后缀乱码,这是ROS输出编码和Eclipse控制窗口编码不同所导致的,可以在Eclipse中安装ANSI escape sequences插件解决(见图3-21)。
![](https://epubservercos.yuewen.com/51F0DE/10797217603874506/epubprivate/OEBPS/Images/3a21.png?sign=1739335293-xdCu3vTZUXLY0Pa89ImdA1wdkjsLdUUq-0-0cd5fdf36cf9cf24ca5971eb3549f8df)
图3-21 在Eclipse中安装ANSI escape sequences插件
安装完成后,Eclipse控制台窗口的输出就正常了(见图3-22)。
![](https://epubservercos.yuewen.com/51F0DE/10797217603874506/epubprivate/OEBPS/Images/3a22.png?sign=1739335293-hsr7AqBWW3H6e9TaGplgDBQi5RfQyMEw-0-1674a4a95b7b993383132b4c6b90e3de)
图3-22 Eclipse控制台中的节点运行日志(无乱码)
如果需要调试程序,可以选择Debug Configurations...→C/C++Application,然后选择可执行文件,进行单步运行、设置断点等调试工作(见图3-23)。
![](https://epubservercos.yuewen.com/51F0DE/10797217603874506/epubprivate/OEBPS/Images/3a23.png?sign=1739335293-aFy7ACusgIHBkURGMWjiWfj9hBfDquMi-0-645a158d8d64268e414100ebeb208a4a)
图3-23 在Eclipse中调试ROS程序