Strawing Blog Archivers

Strawing Blog » Archivers » 在Android手机上运行ROS驱动机器人

这只是一个微小的尝试 (
我们的机器人通过两个FTDI的「USB To TTL」芯片与下位机(STM32单片机)通信,一个用来控制电机运动,一个用来接收里程计数据及控制手臂舵机(ROS里的move_base那块东西)。
通过以太网连接一个SICK的激光雷达(LMS1XX)实现SLAM导航(ros里的gmapping那块东西)。
好了原来一直是拿PC&Ubuntu跑。
既然Android是个Linux系统,
最主要的是看了下ROS官网,源里直接有armhf及arm64架构的包(deb packge for Ubuntu)
那么在Android上通过chroot跑一个完整(内核还是原来的,所以只是重新跑一个 systemd init程序,以及后面的东西)的Linux发行版,然后就可以跑ros了。
首先呢通过OTG和一个带USB网卡的USBHUB(带USBHUB的USB网卡?)来连接两个USB串口设备和激光雷达

「Type-C to MicroUSB to OTG to Ethernet&UART」(逃

然后ifconfig一下看到有eth0网卡 完美无误差

(不过呢在我这手机上很奇怪,通过ifconfig给eth0设置IP地址后并不能正常通信,必须有DHCP服务器靠DHCP来分配IP地址这个网卡才能用)

然后呢看下/dev里有ttyUSB,完美


接下来呢就是通过chroot的方法在上面跑一个完整的Linux发行版了。有很多自动化的工具(当然你愿意手动折腾也行)
我用的是「Linux Deploy」(连我这种有系统洁癖的人都信得过它了 Google Play 传送门→

我跑的是Ubuntu,毕竟ros wiki上说官方支持armhf/arm64
当然你想跑Debian也没人拦你。
或者呢,你大可选一个init程序不是systemd的发行版 (逃 (我是认真的 (f*** systemd
(好像主流发行版几乎都沦陷了 (赶紧投入systemd的怀抱吧 (在启动的时候,你可以感受到systemd带给你的无限温(bu)暖(g)
默念systemd大法好 大难来时把命保 (逃
附List:Without Systemd 传送门→

什么你的Android没有root权限?
那你用的一定不是Android (而是安卓 (而是YunOS

安装过程就不YY了 (接下来就当你安装好了Ubuntu了吧
你也许需要在Android上跑一个XServer
我试了下「XServer XSDL」 Google Play 传送门→
然后发现这个Efficiency...并不高 (卡得一逼就不说了 (跑cutecom还有bug如下图所示


于是我选择在电脑上跑Xming
然后呢通过SSH连接你的Android里的Ubuntu
我用的「Juice SSH」 Google Play 传送门→
习惯性先给root设个密码

sudo passwd

然后安个Desktop Environment吧 (我选择xfce (印象中lxde比xfce轻量但是xlde占1G空间xfce只有500M左右 (xfce更接近GNOME2风格 (我是GNOME2粉 (不是用MATE就是用gnome-session-flashback

sudo apt-get install xfce4

然后定义你的XServer IP地址

export DISPLAY=192.168.1.1:0

然后

xfce4-session

如果在你的XServer上看到了xfce,那么恭喜你

你的手机被老鼠咬了

然后打开 Konsole Xfce终端/xterm 安装ros吧
ROS官方Wiki:「Ubuntu install of ROS Kinetic」传送门→
然后什么source什么编译你的ros程序的源码就不说了

然后通过cutecom打开「/dev/ttyUSB0」及「/dev/ttyUSB1」看看能不能收到数据,没有权限的话

sudo chmod 777 /dev/ttyUSB*

(为了解决问题一向都是这么暴力
然后就可以跑ros了
我们的包是

roslaunch sit_robot_2dnav move_base_gmapping.launch

rviz成功启动 还不算卡


rosrun teleop_twist_keyboard teleop_twist_keyboard.py

按下键盘 机器人成功跑动 完美无误差
画风大概是这样:

效果视频:
Youku传送门→

查看完整版本:在Android手机上运行ROS驱动机器人

© Strawing Blog

Supported by DHL Author:Wolfit