加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

创建一个rosjava package 并测试发布和接受消息

(2014-06-29 19:16:36)
标签:

ros

android

rosjava

分类: ROS

一、rosjava package 结构和解析

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

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

二、创建一个rosjava package

   使用catkin_create_rosjava_xx 命令来创建rosjavapackage和子项目之前,先看一个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, 创建一个catkinworkspace ,这里的创建方法跟cpppyworkspace创建一样?

$ 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.javaTalker.java文件。这是默认情况下的生成的例子。


1, 测试,创建好rosjava 项目之后,我们就可以进行测试。在此,我们进行几种方式测试talkerlistener是否可以通行。

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

 首先,打开一个terminal 终端,启动roscore

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

> 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.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 测试是否可以接收到消息,肯定能接收到,结果如下:

http://s12/mw690/003AldHwgy6K3FGdYfN9b&690package 并测试发布和接受消息" TITLE="创建一个rosjava package 并测试发布和接受消息" />

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

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

rosrun rospy_tutorials listener.py

 同样可以接收到消息,这就是因为在同一个局域网内,相同的topic。这就是android 客户端与ROS通信的基本原理。


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

欢迎大家转载我的文章。

转载请注明:转自听雨轩_Mrfu
博客地址是:http://blog.sina.com.cn/u/3285404150

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有