ROS与Android的窃窃私语

# 简介

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

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

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

# 通信方式

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

  1. rosjava&android_ndk

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

  2. rosbridge

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

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

# 具体实现

  1. 了解通信协议 rosbridge protocol
  2. ROS端安装对应版本rosbridge-suite

  •        
           
    sudo apt-get install ros-<rosdistro>-rosbridge-suite
  • ROS端启动launch,你也可以include到自己的launch文件

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

    # APK Demo

    目前APK已实现功能有:

    1. 根据IP和连接到ROS
    2. 获取ROS端所有Node list, Topic list, Service list
    3. 获取指定Topic或者Service的请求参数,并提供请求接口
    4. 针对Topic /cmd_vel 做了一个方向摇杆控制
    5. 针对Topic /map做了一个地图的展示

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



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

  • 3
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值