通过rosjava实现android订阅ROS自定义消息
来源:互联网 发布:狗镇 知乎 编辑:程序博客网 时间:2024/06/17 14:22
android要与ROS通讯,首先要有rosjava库,这玩意儿类似于ROS官方支持的rospy roscpp等,也是ROS分布式计算平台的一种language binding
可惜rosjava出现的太晚,不够成熟,文档也很不详细,社区活跃度也不高,很多问题都是没有任何搜索引擎能帮上忙的
我们的机器人配备了一块android平板,要显示底盘的电量信息,这就要订阅底盘上ROS通过/battery_state这个topic发布的电池电量message,但该message的消息类型并不是标准的std_msgs.String之类,而是qbo_arduqbo.BatteryLevel这个自定义类型,怎么办呢?看下面
前提
准备rosjava环境,有2个选项:deb安装和源码安装
我选第2个,建议你也选2
创建包含自定义消息的catkin工程
在rosjava workspace的src目录下创建qbo_arduqbo的catkin工程
haipeng@whp:~/rosjava/src/qbo_arduqbo$ tree.├── CMakeLists.txt├── msg│ └── BatteryLevel.msg├── package.xml└── srv
先在~/rosjava/src目录下创建文件夹 qbo_arduqbo,该文件夹就是catkin包(当然前提是文件夹下必须有CMakeLists.txt 和package.xml才行)然后依次创建上图中的 文件 和 子文件夹(msg、srv)。
BatteryLevel.msg 的内容
Header headeruint8 statfloat32 vol1float32 cur1float32 cur2float32 vol2
注意尽量用ros内置类型(内置类型都是小写字母)
CMakeLists.txt 和package.xml 的内容照着隔壁的rosjava_test_msgs包改吧改吧就行
将该包添加到meta包rosjava_message里
将包名添加到rosjava_message包的catkin配置文件(package.xml CMakeLists.txt)相应位置
添加的位置同样照着隔壁的rosjava_test_msgs包来
执行catkin_make命令
在workspace的根目录执行catkin_make
haipeng@whp:~/rosjava$ catkin_make
该命令会将qbo_arduqbo包里的.msg文件编译成jar包,并放到本地maven仓库里,一般位于下面2个之一
/home/haipeng/android_core/devel/share/maven/home/haipeng/rosjava/devel/share/maven
在自己的工程里引用上一步生成的maven包
在自己工程的build.gradle文件里添加对应的依赖
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile "org.ros.rosjava_messages:qbo_arduqbo:[0.2,0.3)" //这里这里 compile 'org.ros.rosjava_core:rosjava_tutorial_pubsub:[0.2,0.3)' compile project(':android_10') }
==========完毕============
注意事项
运行roscore的主机上必须要设置ROS_IP环境变量,因为android设备跟ROS必然运行在不同的主机上,而跨主机通讯ROS要求hostname必须能被解析,而我们的局域网一般没有DNS服务器,所以会导致android订阅失败!
0 0
- 通过rosjava实现android订阅ROS自定义消息
- 【笔记】ROSjava-android控制ROS机器人——ROSjava消息发送的解密
- android通过rosjava协议从Ros系统中获取topic列表
- Rossum--ROSjava-android控制ROS机器人
- Android的ROS开发环境配置(Android+ROS+rosjava+android_core)
- 【笔记】ROSjava-android控制ROS机器人——ROSjava与ROS构建的机器人设计综述
- Build rosjava Library Sources in ROS w/ Android Studio
- ROS多线程订阅消息(ros::asyncspinner)
- ROS 自定义消息发布器和订阅器测试 +代码详解(入门级)
- 创建ros自定义消息
- Ros自定义消息
- ROS自定义消息
- ROS 自定义消息类型
- ROS学习(-)基本概念+发布&订阅消息
- ROS下视频消息发布与订阅
- ROS-python实现简单的消息发布器和订阅器
- 【ROS学习】(六)ROS多线程订阅消息
- ROS总结——ROS消息发布和订阅
- 利用java的异常处理自己写个一个图书借阅系统的小案例
- 【IOS学习】CocoaPods安装使用及配置私有库
- CSDN 博客文章误删到回收站 恢复
- UVa 397 - Equation Elation
- 最详细的 NavigationDrawer 开发实践总结(上)
- 通过rosjava实现android订阅ROS自定义消息
- 九度1023
- Android开源项目大全 - 视图View类
- 51Nod 1344 走格子
- vp9 命令行参数
- 详解 CSS 属性 - 伪类和伪元素的区别
- 1005 Number Sequence
- 项目发布: error CS0103: 当前上下文中不存在名称“*****”
- 最详细的 NavigationDrawer 开发实践总结(下)