一、rosjava

package 结构和解析

Rosjava

主要是提供了客户端(如:android)与ros系统(如:turtlebot)通信的库,主要应用于android等java平台客户端开发。

Rosjava的安装教程在官网上,这里不再一一解说。

在使用catkin_create_rosjava_xx

命令来创建rosjava的package和子项目之前,先看一个workspace的一般结构如下:

/src

上层

/rosjava_catkin_package_a

中层1,项目名a

/rosjava_gradle_subproject_a 下层 ,子项目名

/rosjava_gradle_subproject_b

/rosjava_gradle_subproject_c

/rosjava_catkin_package_b 中层2

/rosjava_gradle_subproject_d

/rosjava_gradle_subproject_e

/rosjava_gradle_subproject_f

1, 创建一个catkin 的workspace

,这里的创建方法跟cpp和py的workspace创建一样?

$ mkdir -p ~/catkin_ws/src

$ cd ~/catkin_ws/src

$ catkin_init_workspace

$ cd ~/catkin_ws/

$ catkin_make

2,在这个空的workspace

里面新建一对 rosjava catkin 包。

> mkdir -p src

> cd src

> catkin_create_rosjava_pkg rosjava_catkin_package_a

> catkin_create_rosjava_pkg rosjava_catkin_package_b

> cd ..

> catkin_make

> source devel/setup.bash

这里一个单独的rosjava

package包里面包括以下文件:

CMakeLists.txt: 配置gradle构建底层和安装的规则。

Package.xml:使用catkin_make串行或者单独编译各个gradle

项目。

Build.gradle:项目(超级)的gradle构建规则的制定。

Settings.gradle :存放所有子项目的列表的地方(在没有创建子项目之前,为空)。

3.创建项目分支(子项目的创建)

> cd src/rosjava_catkin_package_a

> catkin_create_rosjava_project rosjava_gradle_subproject_a

> cd ../..

> catkin_make

这里创建子目录成功,进入子目录下最底层的目录下(很长),就会发现有个

Listener.java和Talker.java文件。这是默认情况下的生成的例子。

1, 测试,创建好rosjava

项目之后,我们就可以进行测试。在此,我们进行几种方式测试talker

和listener是否可以通行。

第一种是在同一台ros系统上(同一个机器上)测试。

首先,打开一个terminal

终端,启动roscore

然后,打开新的终端,输入以下命令:

> cd build/install/

rosjava_gradle_subproject_a/bin

> ./ rosjava_gradle_subproject_a

com.github.rosjava_catkin_package_a.

rosjava_gradle_subproject_a.Talker

这样就可以启动Talker 了。

最后重新打开另一个终端,输入以下命令:

>

cd src/rosjava_catkin_package_a/

rosjava_gradle_subproject_a

> cd build/install/ rosjava_gradle_subproject_a/bin

> ./ rosjava_gradle_subproject_a

com.github.rosjava_catkin_package_a.

rosjava_gradle_subproject_a.Listener

这样就可以接收到如下信息:

Feb 08, 2014 11:11:31 PM org.ros.internal.node.RosoutLogger

info

INFO: I heard: "Hello world! 95"

Feb 08, 2014 11:11:32 PM org.ros.internal.node.RosoutLogger

info

INFO: I heard: "Hello world! 96"

第二种测试方式,其实可以不用打开com.github.rosjava_catkin_package_a.rosjava_gradle_subproject_a.Listener,

可以使用rosrun rospy_tutorials listener.py

测试是否可以接收到消息,肯定能接收到,结果如下:

这是因为,Talker通过chatter

这个topic来发送消息,而listener.py也是通过chatter这个topic订阅消息,所以就可以接收到以上信息。

最后一种方式是,通过多台机器通信测试,这个在前一篇博文《基于ubuntu的ROS在多机器人上的使用》的基础上进行测试。假设Talker是主机发出,然后再从机(另台机器)上执行以下命令:

rosrun rospy_tutorials listener.py

同样可以接收到消息,这就是因为在同一个局域网内,相同的topic。这就是android

客户端与ROS通信的基本原理。

----------------------------------------------------------------

欢迎大家转载我的文章。

转载请注明:转自听雨轩_Mrfu博客地址是:

ros系统支持java_创建一个rosjava package 并测试发布和接受消息相关推荐

  1. ROS系统用python创建发布者与订阅者,并发布自定义话题消息

    ROS系统用python创建发布者与订阅者,并发布自定义话题消息 最近使用pythonros进行ROS系统开发,发现用python开发的教程挺少的,所以记录一下,废话不多说,开始教程: 一.创建工作空 ...

  2. ev3与java_创建一个可启动EV3的SD卡(以便使用Java/lejos)

    本帖最后由 ntwuhui 于 2013-9-27 00:46 编辑 QQ图片20130920080305.jpg (31.53 KB, 下载次数: 193) 2013-9-20 08:04 上传 T ...

  3. 投票系统web服务器,创建一个Web投票系统

    您的位置:首页 → 精文荟萃 → 软件资讯 → 创建一个Web投票系统创建一个Web投票系统 时间:2004/10/7 19:09:00作者:蓝点 下面zip文件:http://www.content ...

  4. grails 转为java_创建一个grails项目,然后转成maven项目

    记录第一次练手项目实战: 注意:要先安装grails ,maven,才能运行.我的grails版本是2.5.4  maven版本是3.3.9 groov 版本是2.4.7   Java版本是1.8.0 ...

  5. java 中创建数据端口_java 如何在服务器端用socket创建一个监听端口,并对接受的数据进行处理,端口号为3333,请高手指点一下...

    匿名用户 1级 2011-09-10 回答 我百度HI你好了 public class Test { public static void main(String[] args) { Test1 t= ...

  6. ROS在类中发布和接受消息(自定义消息)

    一开始建立pkg: mkdir -p ~/catkin_ws/src cd ~/catkin_ws/ catkin_make cd ~/catkin_ws/src catkin_create_pkg ...

  7. ROS在类中发布和接受消息(标准消息)

    作为模板写的时候方便查一下.本例生成两个节点talkerlisten1& 2, 互相接受对方消息,做了简单处理后在发出去.注意测试的时候先开B在开A. #include "ros/r ...

  8. ROS学习笔记3(创建一个ROS Package)

    文章目录 1 catkin Package由什么组成? 2 catkin工作空间下的packages 3 创建一个catkin package 4 编译并且刷新setup文件 5 package依赖 ...

  9. 3.创建一个ROS package

    创建一个ROS package(rawmeat:wiki.ros.org/ROS/Tutorials/CreatingPackage) 描述:这个教程包含使用roscreate-pkg 或 catki ...

最新文章

  1. 【Leecode】两数相加
  2. Github 2020年度报告:你以为新冠击溃了开发者?不!他们创造了更多代码...
  3. 求伯君:向暴雪学习 金山不求一夜暴富
  4. Google Cloud 下一站之战略转变
  5. 目标和(01背包应用)
  6. 收藏一些效果炫酷的可视化网站
  7. 小白学数据分析-----聚类分析理论之TwoSteps理论篇+实践篇
  8. 硬件超车无法掩盖生态缺失,软实力构建任重而道远 | 中科曙光高性能计算专访...
  9. mybatis中xml文件的#{param1}和#{属性名},比如#{id}的使用环境以及使用的时机情况
  10. 在Latex中插入FontAwesome图标
  11. favi.icon是什么?
  12. 移动硬盘计算机限制打不开,移动硬盘突然打不开并且要求格式化怎么解决
  13. day 0150面向对象-成员
  14. js实现input的赋值,根据今天的日期获取本周的周一和周日的日期,获取当天日期
  15. 抖音开放平台, 企业号私信订阅服务 java(公开的)
  16. 离散化/线段树 (POJ - 2528 Mayor's posters)
  17. IT商界著名公司来历和简介
  18. 《统计建模与R软件》第三章课后习题3.5-3.11解题答案
  19. 解决WIN10隔几分钟就自动黑屏睡眠的方法!
  20. 技校计算机考试题,2011年春季郡智技校计算机一年级期中考试题.doc

热门文章

  1. 有初学的同学问你为什么Java的main方法必须是public static void?请告诉ta!
  2. leetcode 543. 二叉树的直径(Java版)
  3. leetcode 242. 有效的字母异位词(Java版)
  4. 操作系统:第一章 计算机系统概述
  5. 【Java 数据库】Connections.getTables() 方法 获取数据库的元数据
  6. css 注入,electron程序,如何在主进程远程页面中注入js及css?
  7. docker环境安装,镜像和容器常用命令
  8. 线程池应该设置多少核心线程数——Java多线程系列学习笔记
  9. 1097 Deduplication on a Linked List (25 分)_35行代码AC
  10. 【题意+推导讲解】1031 Hello World for U (20 分)_15行代码AC