基于 Eclipse C++ IDE 开发编译自己的 ROS2 包

环境:Ubuntu18.04+ROS2 Bouncy版+ Eclipse C++ Photon Release (4.8.0)

IDE开发环境有方便的代码提示等功能,所以摸索了基于 Eclips C++集成开发环境编写代码并编译自己的ROS2 包,主要参考了 ROS2 wiki 上的 Building ROS 2 on Linux with Eclipse Oxygen 内容,但是完全按照该链接的教程并没有成功实现,后来发现是环境变量设置的位置不对。另外该链接要实现的是ROS2 整个源代码的从头开始完整编译 ,我这里之前已经编译安装了 ROS2系统(https://github.com/ros2/ros2/wiki/Linux-Development-Setup  、https://mp.csdn.net/postedit/81349675), 本文实现了基于 Eclipse C++ IDE 开发编译自己的 ROS2 包,详细步骤如下: 

1、下载安装Eclipse C++ 集成开发环境

下载地址:http://eclipse.bluemix.net/packages/photon/data/eclipse-cpp-photon-R-linux-gtk-x86_64.tar.gz,下载后解压即可直接运行,然后创建了桌面快捷方式。

参考链接:https://askubuntu.com/questions/854373/how-to-create-a-desktop-shortcut/854398/

2、创建 Eclipse C++ 工作空间

我的ROS2 安装在/home/wsc/ros2_ws,自己的包放在/home/wsc/ros2_overlay_ws上。在下图左侧空白区域点击鼠标右键,选择new->Project ,然后选择 C++ Project:


 

下一步设置如下:

 

扫描二维码关注公众号,回复: 2535105 查看本文章

工程代码目录如下,wsc_demo2 可以通过 ros2 pkg create 初始化创建,创建完后可以在IDE下添加自己的代码。includes里是头文件路径,build与src目录(wsc_demo2除外)都是从ROS2 安装目录/home/wsc/ros2_ws(用命令行工具编译成功后)拷贝过来的,因为在开发自己的ROS2包时,代码提示、自动补全时需要相关头文件的支持,也尝试过在IDE 相关设置中直接添加/home/wsc/ros2_ws里的头文件包含路径,但是文件太多添加麻烦,所以干脆都拷贝过来,可能有更方便的方法,知道的麻烦留言告诉我一声。

另外,由于这样加入的文件数目比较大,刚添加时IDE需要进行文件索引,右下角有进度条显示进度,索引完才能有代码提示与自动补全等功能,默认代码提示快捷是ctrl+space组合键,如果没有反应可能是被别的软件占用,需要重新配置(Window->preference->Keys,然后找到content Assist,然后重新设置为自己想要的Short cut 就好了)。

3、编译器、环境变量等设置

为了编译 ROS2 包,需要在Eclipse IDE 的 Project->Preferences 菜单下进行如下设置:

左侧选择 Builder,点击New,弹出如下界面:

双击 Program,弹出如下设置界面,其中/home/wsc/ros2_ws/src/ament/ament_tools/scripts/ament.py通过Browse File System 选择 ROS2 源码中的 ament.py 路径。工作路径通过浏览Browse workspace选取。

编译参数填写build --build-tests --symlink-install   --only-package   demo_nodes_cpp,--only-package   demo_nodes_cpp指的是只编译指定的demo_nodes_cpp 包,这个包在如下路径:

如果是 --only-package   wsc_demo2则 指的是编译 自己的wsc_demo2包,如果没有--only-package 选项,则编译工作空间下的所有包,如果src下包含了ROS2的所有源文件,就实现了编译安装整个ROS2。

下面这一步编译器环境变量配置是最重要的,一开始参照ROS2 wiki 上的 Building ROS 2 on Linux with Eclipse Oxygen 配置(wiki上配置环境变量的位置不一样)没有成功,加上这一步才可以。

在通过源代码编译安装了ROS2后,需要设置的环境变量获取的方法参考照Building ROS 2 on Linux with Eclipse Oxygen ,首先打开一个终端,执行"env > /tmp/out"命令后,进入ROS2工作空间,执行“source ~/ros2_ws/install/local_setup.bash”,然后依次执行"env > /tmp/out1"、"diff /tmp/out /tmp/out1"命令,这样source ROS 2 local_setup.bash 前后的环境变量差异将展示出来,然后我们需要把更改的以及新增的环境变量在编译器环境变量里设置,如上图所示。为了保险起见,我把Building ROS 2 on Linux with Eclipse Oxygen里设置环境变量的地方也设置了一遍(需不需要没做比较验证),如下:

 

 然后就可以成功编译ROS2 包了,我这里并没有执行 Building ROS 2 on Linux with Eclipse Oxygen里提到的取消选择 CDT-Builder 、 删除 the build command make这两步操作。编译结果如下:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/wsc820508/article/details/81388817