1. 安装eclipse
二进制安装和卸载:也可以apt-get方式进行安装和卸载,只不过安装的版本较低。
#安装
sudo apt-get install eclipse
#卸载
sudo apt-get remove --purge eclipse
2. 安装CDT (C Development Tools)
#查找
sudo apt-cache search cdt
#安装
sudo apt-get install eclipse-cdt*
3. 设置eclipse快捷方式
cd /usr/share/applications
sudo touch eclipse.desktop
sudo nano eclipse.desktop
然后将如下内容保存到eclipse.desktop
[Desktop Entry]
Name=Eclipse
Type=Application
Exec=/opt/eclipse/eclipse
Terminal=false
Icon=/opt/eclipse/icon.xpm
Comment=Integrated Development Environment
NoDisplay=false
Categories=Development;IDE
Name[en]=eclipse.desktop
4. 创建一个简单的ros包
- 建立测试目录和文件
mkdir catkin_ws #建立工作目录
mkdir src #在工作目录下建立src文件夹。
#切到src目录下,我们开始建立包,后面的东东都是依赖项
catkin_create_pkg hello rospy roscpp std_msgs
#切到hello 包目录下,此时会多几个文件,切到src目录下
#新建自己的程序。也就是节点程序,开始写你的代码就行。
vim hello.cpp
- 内容如下:
// a simple "hello" ROS program.
#include "ros/ros.h"
#include "std_msgs/String.h"
using namespace ros;
int main(int argc, char **argv)
{
ros::Time::init(); //定时器初始化
ros::init(argc, argv, "hello"); //节点初始化
ros::Rate loop_rate(10); //定时10ms
while (ros::ok()) //节点是否正常工作
{
ROS_INFO("%s", "hello world !"); //打印节点信息
ros::spinOnce(); //节点只循环一次
loop_rate.sleep(); //不够10ms的补充到10ms为止。
}
return 0;
}
- 添加依赖项,在切回来到hello 包底下,在CMakeLists.txt文件中添加依赖项,。
add_executeable(hello src/hello.cpp) #其实会生成hello.exe的名字
target_link_libraries(hello ${catkin_LIBRARIES}) #添加节点编译需要的库文件。
- 开始编译整个项目
catkin_make --force-cmake -G"Eclipse CDT4 - Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug -DCMAKE_ECLIPSE_MAKE_ARGUMENTS=-j8
增加 –-force-cmake之后,表示强制编译,编译工具用的CDT4,且会生成两个文件 .project ,此project 也就是在Eclipse里面要用到的。
在devel目录下可以看到两个project隐藏文件.
5. 导入ROS包到Eclipse
- 通过已存在的包导入
这里我们只导入借助CDT编译生成的Project-Debug,其余的都是我用gcc 和catkin_make生成的包.将来我会把这些工程用eclipse CDT重新编译生成,然后导入到eclipse中.
6. 配置eclipse里面导入的工程
在导入的项目名称,右击—debug as – debug configurations,配置一下 C/C++ Application
然后查看工程属性,查看include path是否已经自动正确配置.右键-->属性-->C/C++ Include Paths
当上面的工作都做好以后,我们就可以进行debug了
7. 开始debug
选择下面的debug项进行调试,但是需要先在命令行启动roscore
点击debug之后,开始系统调试,
这里报错,说我们没有设置ROS_MASTER_URI,我们需要在.bashrc里面设置一下.
source一下bashrc文件,然后重新启动roscore和重新debug
设置后,还不成功,还是报同一个错误.
最后我就在eclipse上配置环境变量
然后无论是debug还是run都没有问题啦
至此,我们已经通过一个简单的例子,打通了的eclipse编译运行ros package的流程.
下面,我们在eclipse里面修改hello.cpp,然后试试看能否生效.我们修改了输出的内容,然后点击工程名,会发现里面包含了在catkin_ws里面的所有的包
经过我们多番折腾,发现我们修改了cpp后,无论怎么编译,在eclipse里面都无法生效.这个让人很恼火.下面我们换方法进行尝试,最终成功
--------------------------------------------------------------------------------------------------------------------------------------------
第一步:
首先确保你的项目是通过roscreate-pkg创建的
假设你的ROS项目目录为catkin_ws,进入catkin_ws,执行下列命令。为你的项目生成Eclipse可以识别的Makefile
catkin_make --force-cmake -G"Eclipse CDT4 - Unix Makefiles"
第二步:
请确保你的Eclipse已经安装了CDT。
第三步:
现在你已经在Eclipse C/C++项目中有了catkin_ws该项目了。
File > New > Project
点击finish,完成
第四步:
配置你的编译路径
Project > Properties > C/C++ Build
设置Build Location为 catkin_ws/build
第五步:如何解决类似下列问题?
ImportError: No module named genmsg.template_tools
向你的Eclipse中添加PYTHONPATH环境变量(python变量)。
Project > Properties > C/C++ Build > Environment
这里,我们顺便吧ROS_MASTER_URI设置一下.
OK, 到此为止,你的Eclipse就配置完成了。
第六步 编译工程
迅速尝试一下Project > Build Project吧。
我们运行一下hello这个包,配置一下run as 的configuration,配置要运行的applicaiton是我们的hello,也可以在这里的Environment里面设置ROS_MASTER_URI
第七步 运行hello包
第八步, 修改hello包的src目录下的hello.cpp
第九步, 执行第六步和第七步,即可.