在ros下实现节点编程,实现一个节点发送消息,另一个节点接收。实现方式有多种,可以直接在命令窗口创建工作空间包以及节点,用catkin_make进行编译,添加.bash路径,然后执行rosrun package node_name 。这种方式对于一个ROS初学者来说容易出错,而且很多网上的教程中出现了不同的问题,比如需要修改CMakeLists.txt和package.xml中的内容,相当繁琐。为了避免不必要的麻烦,初学者可以应用IDE进行节点编程,达到一定的水平后,再用上面的方式去实现。下面就介绍一下roboware 软件实现helloword的发送和接收。
这个例子是在ROS能正常运行的情况下进行的,所以为了不必要的麻烦,最好先跑跑小乌龟的例子。
1.下载安装roboware.
去官网下载地址:http://www.roboware.me/#/home
选择Studio v1.2.64bit deb 下载 。如果是32位机选择v.2.0 32bit deb版本。
傻瓜式安装,一直下一步。安装好以后如下所示:
2.创建工作区
打开软件后,选择新建工作区,这里要选择一个文件夹,这里最后选择主文件夹。然后在名称:robot
robot 即为新建的工作空间名称。建好之后后出现一个src文件夹,和一个CMakeLists.txt文件。
3.新建ROS包
右键src文件夹选择“新建ROS包”在名称栏:test
建好之后会出现一个test文件夹,下有一个SRC文件夹。
4.新建ROS节点
右键test文件夹,选择新建C++ROS节点。在名称:test
建好之后文件内有两个.cpp文件,一个是test_pub.cpp ,用于发送helloworld 信息,称为发送者。 另一个是test_sub.cpp用于接收信息,称为订阅者。
5.点击左上角的锤子编译文件,ROS节点界面会出现test节点。看到100%说明编译成功。
以上就完成了整个工程的编译,这部分内容一般不会出现什么问题,接下来就要执行了,问题就来了。
6.打开ROS master
roscore
7.rosrun执行节点
rosrun test test_pub
分析其原因可能是因为在安装ROS时已经创建了工作空间,新建的工作空间和之前的不同,所以需要将新建的工作空间的路径添加到bashrc文件中。
于是执行下面的步骤:新开一个终端输入下面的命令打开文件bashrc
gedit .bashrc
在新建工作空间的devel 文件下找到setup.bash文件,查看其路径将其路径添加到bashrc文件的末尾,具体如下:
然后关闭所有终端,重新打开终端执行
roscore
再打开一个终端:
rosrun test test_pub
出现:
这里实现了发送
8.执行接收节点
rosrun test test_sub
出现same name的问题。
这是我们在创建节点时没有修改cpp文件中初始化文件名导致的。
将名称改为test_pub和test_sub
保存,重新编译。然后将所以终端全部关闭,重新执行打开master和发送、接收
可以实现接收了。