【转载】ROS与Android

原文:xxhong.net/2016/12/01/ros-client/

ROS与Android的窃窃私语

2016-12-01|ROSAndroid||1515

# 简介

ROS (Robot Operating System, 机器人操作系统) 提供一系列程序库和工具以帮助软件开发者创建机器人应用软件。它提供了硬件抽象、设备驱动、函数库、可视化工具、消息传递和软件包管理等诸多功能。ROS遵循BSD开源许可协议

Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发

ROS严格来说并不算OS,而是一套运行于linux之上,连接机器人软硬件的软件包,而Android是针对于移动端的定制Linux.我们主要来聊聊ROS与Android之间的通信

# 通信方式

目前,ROS与Android主要的通信方式有两种:

rosjava&android_ndk

ROS的java语言实现,借助该类库,能在Android上运行ROS 节点,功能强大,但是编译比较麻烦,最大的问题是ROS对其支持只到indigo版本!

rosbridge

通过Websocket以JSON格式的API为非ROS环境提供ROS通信支持,包括对Topic和Service的各种操作,这种通信方式轻量级,跨平台

接下来我们主要讨论第二种方式的实现过程

# 具体实现

了解通信协议rosbridge protocol

ROS端安装对应版本rosbridge-suite

1sudo apt-get install ros--rosbridge-suite

ROS端启动launch,你也可以include到自己的launch文件

1roslaunch rosbridge_server rosbridge_websocket.launch

Android端需要一个websocket的java实现,然后就是按协议解析json,这好像也挺麻烦的嘛,不过好在找到一个开源项目ROSBridgeClient,貌似是一个netbeans project,我是直接把源码Copy到自己项目中来,该库依赖于java_websocket 和 json_simple两个library,这样就可以开始写你自己的逻辑代码了

# APK Demo

目前APK已实现功能有:

根据IP和连接到ROS

获取ROS端所有Node list, Topic list, Service list

获取指定Topic或者Service的请求参数,并提供请求接口

针对Topic /cmd_vel 做了一个方向摇杆控制

针对Topic /map做了一个地图的展示

理论上来说,应该能在Android端实现rviz类似的功能,大家可以体验一下我实现的Demo(下载地址点我),最后放几张截图

转载请注明出处:http://xxhong.net/2016/12/01/ros-client

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,230评论 25 709
  • PART I 1.rosbridge介绍rosbridge(rosbridge_suite)是ros官方为开发者提...
    marine0131阅读 13,346评论 0 2
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,092评论 19 139
  • 曾经向往依然如故,我的坚持是你给了我力量, 骄傲的痛苦持久的折磨,让我感受到大地的温暖, 当你风光的时候,朋友认识...
    Xxlxxwfl阅读 3,255评论 3 8
  • 《新生-七年就是一辈子》提到美国密执安大学教授卡尔·韦克讲述过一个奇妙的实验: 把一群蜜蜂和苍蝇装进同一个玻璃瓶里...
    日更飘阅读 3,535评论 0 1

友情链接更多精彩内容