ros系统支持java_创建一个rosjava package 并测试发布和接受消息
一、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 并测试发布和接受消息相关推荐
- ROS系统用python创建发布者与订阅者,并发布自定义话题消息
ROS系统用python创建发布者与订阅者,并发布自定义话题消息 最近使用pythonros进行ROS系统开发,发现用python开发的教程挺少的,所以记录一下,废话不多说,开始教程: 一.创建工作空 ...
- 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 ...
- 投票系统web服务器,创建一个Web投票系统
您的位置:首页 → 精文荟萃 → 软件资讯 → 创建一个Web投票系统创建一个Web投票系统 时间:2004/10/7 19:09:00作者:蓝点 下面zip文件:http://www.content ...
- grails 转为java_创建一个grails项目,然后转成maven项目
记录第一次练手项目实战: 注意:要先安装grails ,maven,才能运行.我的grails版本是2.5.4 maven版本是3.3.9 groov 版本是2.4.7 Java版本是1.8.0 ...
- java 中创建数据端口_java 如何在服务器端用socket创建一个监听端口,并对接受的数据进行处理,端口号为3333,请高手指点一下...
匿名用户 1级 2011-09-10 回答 我百度HI你好了 public class Test { public static void main(String[] args) { Test1 t= ...
- ROS在类中发布和接受消息(自定义消息)
一开始建立pkg: mkdir -p ~/catkin_ws/src cd ~/catkin_ws/ catkin_make cd ~/catkin_ws/src catkin_create_pkg ...
- ROS在类中发布和接受消息(标准消息)
作为模板写的时候方便查一下.本例生成两个节点talkerlisten1& 2, 互相接受对方消息,做了简单处理后在发出去.注意测试的时候先开B在开A. #include "ros/r ...
- ROS学习笔记3(创建一个ROS Package)
文章目录 1 catkin Package由什么组成? 2 catkin工作空间下的packages 3 创建一个catkin package 4 编译并且刷新setup文件 5 package依赖 ...
- 3.创建一个ROS package
创建一个ROS package(rawmeat:wiki.ros.org/ROS/Tutorials/CreatingPackage) 描述:这个教程包含使用roscreate-pkg 或 catki ...
最新文章
- 【Leecode】两数相加
- Github 2020年度报告:你以为新冠击溃了开发者?不!他们创造了更多代码...
- 求伯君:向暴雪学习 金山不求一夜暴富
- Google Cloud 下一站之战略转变
- 目标和(01背包应用)
- 收藏一些效果炫酷的可视化网站
- 小白学数据分析-----聚类分析理论之TwoSteps理论篇+实践篇
- 硬件超车无法掩盖生态缺失,软实力构建任重而道远 | 中科曙光高性能计算专访...
- mybatis中xml文件的#{param1}和#{属性名},比如#{id}的使用环境以及使用的时机情况
- 在Latex中插入FontAwesome图标
- favi.icon是什么?
- 移动硬盘计算机限制打不开,移动硬盘突然打不开并且要求格式化怎么解决
- day 0150面向对象-成员
- js实现input的赋值,根据今天的日期获取本周的周一和周日的日期,获取当天日期
- 抖音开放平台, 企业号私信订阅服务 java(公开的)
- 离散化/线段树 (POJ - 2528 Mayor's posters)
- IT商界著名公司来历和简介
- 《统计建模与R软件》第三章课后习题3.5-3.11解题答案
- 解决WIN10隔几分钟就自动黑屏睡眠的方法!
- 技校计算机考试题,2011年春季郡智技校计算机一年级期中考试题.doc
热门文章
- 有初学的同学问你为什么Java的main方法必须是public static void?请告诉ta!
- leetcode 543. 二叉树的直径(Java版)
- leetcode 242. 有效的字母异位词(Java版)
- 操作系统:第一章 计算机系统概述
- 【Java 数据库】Connections.getTables() 方法 获取数据库的元数据
- css 注入,electron程序,如何在主进程远程页面中注入js及css?
- docker环境安装,镜像和容器常用命令
- 线程池应该设置多少核心线程数——Java多线程系列学习笔记
- 1097 Deduplication on a Linked List (25 分)_35行代码AC
- 【题意+推导讲解】1031 Hello World for U (20 分)_15行代码AC