ROS创建工作空间功能包-基于Eclipse开发

       ROS开发可以使用多种编译器编写代码,为了方便项目的开发很多开发者会选择使用IDE进行开发

其中Eclipse就是在ROS开发中很常见的集成编译器,本文以Eclipse编译器为基础讲解如何利用Eclipse

环境开发ROS。

在开发之前需要先设置好相应的开发环境,具体可以详见:

https://blog.csdn.net/qq_34911636/article/details/100017518

https://blog.csdn.net/qq_34911636/article/details/100057210

(一)创建工作空间

1、在终端中输入cd ~/ 命令切换到root根目录下

2、mkdir  -p catkin_ws/src 创建文件夹catkin_ws和src

3、cd catkin_ws/src  切换到src目录下面

3、catkin_init_workspace 输入工作空间初始化命令

4、cd ..  命令切换到上一级目录catkin_ws(也可以使用cd ~/catkin_ws/命令)

5、catkin_make 命令编译工作空间

6、source  devel/setup.bash 设置工作空间的环境变量

7、echo $ROS_PACKAGE_PATH 用该命令查看是否设置成功,若成功则终端会出现以下提示:

至此工作空间创建完成

(二)在工作空间基础上创建功能包

1、首先把目录切换到cd ~/catkin_ws/src

2、在终端中输入catkin_create_pkg   learning_communication   std_msgs   rospy   roscpp

其中catkin_create_pkg为创建功能包命令,learning_communication为功能包的名称,后面三项

std_msgs   rospy   roscpp为功能包的依赖项

3、cd ..  命令切换到上一级目录catkin_ws(也可以使用cd ~/catkin_ws/命令)

4、使用catkin_make 命令重新编译工作空间

5、source  ~/catkin_ws/devel/setup.bash  设置环境变量

(三)创建Eclipse工程文件

1、cd ~/catkin_ws/ 切换到catkin_ws目录

2、catkin_make --force-cmake -G"Eclipse CDT4 - Unix Makefiles" 输入命令生成可调式的工程文件

3、设置终端的环境变量到Eclipse中

awk -f $(rospack find mk)/eclipse.awk build/.project > build/.project_with_env && mv build/.project_with_env build/.project

项目的文件在目录 ~/catkin_ws/build,至此Eclipse工程文件创建完成

(四)将上述创建完的工程文件加载到Eclipse中

1、打开Eclipse软件设置catkin_ws 文件夹作为工作空间文件夹(文件夹可以自行创建一个)

2、选择File --> Import --> General --> Existing Projects into Workspace

3、点击next,从文件夹~/catkin_ws/导入工程,点击finish完成导入

4、添加预编译头文件命令,低版本的Eclipse软件是不会识别到ROS的头文件信息的,为了修复它

作如下操作进行设置(若是高版本的Eclipse软件此步骤省略,因为高版本不需要设置)

到 Project Properties --> C/C++ General --> Preprocessor Include Paths, Macros设置

以上三项打钩即可

5、导入完成之后就可以看到工程的目录文件

6、添加项目文件,这里以添加.cpp文件为例

如第5步骤图所示Source directory -> first_pkg->src文件下面添加.cpp文件

选择New –> Source File, 创建文件 talker.cpp文件,如下图所示:

点击finish

7、在talker.cpp文件里面加载以下代码,示例代码如下所示

#include "ros/ros.h"
 
int main(int argc, char **argv)
{
    ros::init(argc, argv, "hello");
 
    ros::NodeHandle nh;
    ros::Rate loop_rate(10);
 
    int count = 0;
    while (ros::ok()) // Keep spinning loop until user presses Ctrl+C
    {
        ROS_INFO_STREAM("hello world" << count);
 
        ros::spinOnce(); // Allow ROS to process incoming messages
        loop_rate.sleep(); // Sleep for the rest of the cycle
        count++;
    }
 
    return 0;
}

8、加载完代码如下所示,并且出现“eclipse Function 'init' could not be resolved”警告

“eclipse Function 'init' could not be resolved”警告的解决方法如下:

鼠标点击Project@build选择属性Properties,在属性里面选择C/C++ General->indexer如下所示:

Enable project specific setting 打钩,其他选项设置如下所示:

9、在编译工程项目前需要在包的CMakeLists.txt文件的末尾添加新的编译内容(红色部分)

CMakeLists.txt文件在工程项目中的位置:

CMakeLists.txt文件的末尾添加新的编译内容(红色部分)
## Declare a cpp executable
add_executable(talker src/talker.cpp)

## Specify libraries to link a library or executable target against
target_link_libraries(talker ${catkin_LIBRARIES})

上面两项中talker为新添加需要编译的文件名称

添加完成并且保存之后按快捷键 Ctrl-B,编译整个项目,记住此步骤不能省略

10、在Eclipse软件中运行和调试程序

 在Run --> Run configurations... --> C/C++ Application (double click or click on New)双击C/C++ Application选项

然后选择可执行文件的路径,点击Browse,可执行文件就是刚才通过Ctrl-B编译生成的文件

可执行文件在~/root/catkin_ws/devel/lib/learning_communication/文件中的talker

设置完路径之后还要在Environment中的添加变量ROS_ROOT和ROS_MASTER_URI如下图所示:

其中ROS_ROOT和ROS_MASTER_URI的value值可通过在终端中输入命令获取,如下所示:

至此设置完成,点击Run运行程序,这边需要注意的是在运行程序前需要打开ROS确保ROS已经运行,因为

我们运行的这段程序是针对ROS编程,所以在启动Run前先要重新打开一个终端然后在终端中输入roscore

ROS运行成功运行之后再点击Run,程序才能正常运行起来。

11、程序运行的结果如下所示:

12、调试程序(单步运行、设置断点等)

在调试程序前需要在工作空间的~/root/catkin_ws/build路径下面运行

cmake ../src -DCMAKE_BUILD_TYPE=Debug 命令如下图所示

然后在Eclipse软件选择调试工具进行调试了,进入调试界面,如下所示:

 

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值