在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和发送、接收

可以实现接收了。

ROS 用 roboware实现节点信息发送和接收的更多相关文章

  1. Android 短信模块分析(四) MMS之短信的发送与接收

     MMS之短信的发送与接收分析: 一.信息发送: com.android.mms.data.WorkingMessage.java 类 send()函数: public void send() { . ...

  2. IIS将错误信息发送到浏览器

    本文版权归博客园和dige1993所有,访问作者博客:http://www.cnblogs.com/dige1993 最近又开始玩ASP了,调试的时候出现错误不清楚详细错误信息特别不方便,记得以前可以 ...

  3. 微博关注/QQ信息发送

    <!doctype html> <html lang="en" xmlns:wb=“http://open.weibo.com/wb”> <head& ...

  4. struts2是如何加载相关的package元素节点信息的

    这不是一篇纯技术文章,而是一篇分享我个人在前后端分离路上收获的点点滴滴的文章,以此来为准备尝试前后端分离或者想了解前后端分离的童鞋做一个大体的讲解. 上一家公司是家小公司,做了一年的全栈开发,对前端的 ...

  5. PHP自学4——通过mail函数将feedback界面用户填写表单信息发送至指定邮箱

    这一讲的内容依旧简单(谁叫PO主水平菜,依旧是个弱鸡ORZ),通过PHP的内置mail函数将一个反馈界面的信息发送到指定邮箱.在Windows平台不能直接需要使用该函数,需要下载一个sendmail并 ...

  6. ROS_Kinetic_26 使用rosserial_windows实现windows与ROS master发送与接收消息

    使用rosserial_windows实现windows与ROS master发送与接收消息(适用版本hydro,indigo,jade,kinetic) 官方wiki地址汇总请参考:http://b ...

  7. wx.createSelectorQuery() 获取节点信息 获取不到解决方法

    场景:一个气泡的宽度由加载来的数据填充所决定,不定宽,     wx.createSelectorQuery().selectAll('.talkbubble').boundingClientRect ...

  8. Python递归_打印节点信息

    Python递归_打印节点信息 递归特性:1.必须由一个明确的结束条件2.每次进入更深一层递归时,问题规模相比上一次递归都应该有所减少3.递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用时 ...

  9. 获取BT节点信息bittorrent-discovery

    获取BT节点信息bittorrent-discovery   BT/磁力都是常见的P2P下载方式.用户作为一个节点node从其他用户node或者peer获取文件数据,以完成下载.bittorren-d ...

随机推荐

  1. Python 原生2种 邮件发送(发送验证码) 的方法

    import smtplib from email.mime.text import MIMEText # 第三方 SMTP 服务 mail_host = "smtp.sina.cn&quo ...

  2. INotitypropertyChanged

    WPF数据绑定(要是后台类对象的属性值发生改变,通知在“client界面与之绑定的控件值”也发生改变须要实现INotitypropertyChanged接口) MainWindow.xaml < ...

  3. HTML5属性

    HTML5同时增加和废除了很多属性.下面介绍一些常用的属性. 1.表单属性 为input(type=text).select.textarea与button元素新增了autofocus属性.(它以指定 ...

  4. Vue2.0史上最全入坑教程(上)—— 搭建Vue脚手架(vue-cli)

    ps: 想了解更多vue相关知识请点击VUE学习目录汇总 Vue作为前端三大框架之一截至到目前在github上以收获44,873颗星,足以说明其以悄然成为主流.16年10月Vue发布了2.x版本,经过 ...

  5. JSON和JSONP,原来ajax引用这个来实现跨域访问的

    由于Sencha Touch 2这种开发模式的特性,基本决定了它原生的数据交互行为几乎只能通过AJAX来实现. 当然了,通过调用强大的PhoneGap插件然后打包,你可以实现100%的Socket通讯 ...

  6. 启动Hadoop时,DataNode启动后一会儿自动消失的解决方法

    查看slaver1/2的logs,发现 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for ...

  7. Data Lake Analytics账号和权限体系详细介绍

    一.Data Lake Analytics介绍 数据湖(Data Lake)是时下大数据行业热门的概念:https://en.wikipedia.org/wiki/Data_lake.基于数据湖做分析 ...

  8. Hdu 4251 区间中位数(划分树)

    题目链接 The Famous ICPC Team Again Time Limit: 30000/15000 MS (Java/Others)    Memory Limit: 32768/3276 ...

  9. JS---案例:手风琴 (利用封装好的动画函数)

    案例:手风琴     封装好的动画函数在common.js里面     //function getStyle(element, attr) {...}     //function animate( ...

  10. JDK8 Stream 数据流效率分析

    JDK8 Stream 数据流效率分析 Stream 是Java SE 8类库中新增的关键抽象,它被定义于 java.util.stream (这个包里有若干流类型: Stream<T> ...