摘要
通过前面一系列的铺垫,相信大家对整个miiboo机器人的DIY有了一个清晰整体的认识。接下来就正式进入机器人大脑(嵌入式主板:树莓派3)的开发。本章将从树莓派3的开发环境搭建入手,为后续ros开发、slam导航及语音交互算法做准备。本章内容: 1.安装系统ubuntu_mate_16.04 2.安装ros-kinetic 3.装机后一些实用软件安装和系统设置 4.PC端与robot端ROS网络通信 5.Android手机端与robot端ROS网络通信 6.树莓派USB与tty串口号绑定 7.开机自启动ROS节点
3.装机后一些实用软件安装和系统设置
虽然我们顺利安装了ubuntu-mate-16.04系统,并且在系统上装好了ROS-kinetic发行版,为了后面跟高效和便捷的开发,这里将进行一些非常实用软件的安装和系统设置。
3.1.开机自动登录
装完系统后第一次开机,会要求设置用户名和密码,这里应该设置用户开机自动登录,只有登录后树莓派3才能自动连接到无线网络,从而才能远程控制。如果装机时已经设置了,请直接跳过这一部分;如果你搞忘记或遗漏了,没有设置开机自动登录,也不要紧,用下面的的方法进行自动登录设置。 打开文件/usr/share/lightdm/lightdm.conf.d/60-lightdm-gtk-greet.conf,在[seat:*]节点下修改或添加以下代码
autologin-user=ubuntu #ubuntu是要自动登录的用户名
3.2.超级用户root密码设置
装完ubuntu-mate-16.04系统后,root用户默认是没有密码的;用普通用户ubuntu的sudo权限去设置root用户的密码。 反正我们是用于学习,出于方便记忆的考虑,所以和之前设置ubuntu的用户名和密码一样,这里设置root的用户名和密码也一样,也就是root用户的密码也是root。
ubuntu@ubuntu-desktop:~$ sudo passwd root
[sudo] password for ubuntu: #键入ubuntu密码
Enter new UNIX password: #键入root新密码
Retype new UNIX password: #确认root新密码
passwd: password updated successfully
root密码设置成功后,su root登录进去验证一下,如果能登录就设置成功了。
3.3.扩展SWAP空间
由于后续在树莓派3上需要编译一些大型的程序和运行复杂的SLAM算法,默认的物理内存1GB是不够用的,常常造成卡机死机等现象,这里需要添加SWAP扩展空间,其实就是当系统内存不足时会用硬盘上SWAP分区作为虚拟内存。 由于我的microSD卡是32GB的,所以可以多分配一些给SWAP,所以分配4GB给SWAP空间。具体步骤:
#先关闭swap
cd /var
sudo swapoff /var/swap
#重设swap大小1M*4096=4GB,会花较长时间,请耐心等待
sudo dd if=/dev/zero of=swap bs=1M count=4096
#格式化
sudo mkswap /var/swap
#开启swap
sudo swapon /var/swap
#设置开机启动,在/etc/fstab文件中添加如下代码
/var/swap swap swap defaults 0 0
#查看当前已生效的swap
swapon -s
#查看当前swap使用情况
free -m
3.4.连接wifi网络
为了让机器人启动后,我们能通过网络远程访问,需要给机器人配置好网络连接,并分配静态IP,让机器人开机后就能自动连接wifi。关于设置的内容已经在上面安装ros-kinetic详细介绍了,有需要的直接前去翻阅就行。
3.5.安装chromium浏览器
前一段时间,在ubuntu-mate-16.04上安装ROS后,ubuntu-mate-16.04系统自带的Firefox浏览器不能用了,Firefox最近对这个故障进行了修复。不过为了保险起见,还是推荐安装谷歌为linux系统推出的浏览器chromium,跟我们平时用的闻名于世的chrome浏览器是差不多的。安装很简单,就一条命令。
sudo apt-get install chromium-browser
3.6.安装vim、ssh工具
vim是Linux中一款很经典的代码文本编辑器,不论是本地还是远程编辑文本都很强大;ssh功能很强大,不紧可以提供用户远程登录控制系统和编辑文件,还提供命令终端下的scp远程文件传输。安装很简单,几条命令就搞定。
#安装vim
sudo apt-get install vim
#安装ssh服务端
sudo apt-get install openssh-server
#开启ssh服务
sudo service ssh start
#设置开机自启动ssh服务,在开机自启动脚本/etc/rc.local加入下面这条命令,
#注意加入位置是在exit 0这一句之前
service ssh start
#检查ssh是否启动,使用下面命令
ps -e | grep ssh
如果输出中含有ssh-agent和sshd就说明成功了
3.7.通过ssh远程登录到机器人
树莓派3主板是安装在miiboo机器人上的,由于机器人要在地上自由移动,给机器人上的树莓派配一个HDMI显示器和鼠标键盘用于程序调试显然是不方便的。一个很好的方法是,工作端PC和机器人连接到同一个路由器完成局域网组网,然后在PC端用ssh远程登录到机器人,这样就可以在工作PC端对机器人上的程序和文件进行调试开发了。 ssh远程登录方法:
#在PC端上打开终端,ssh远程登录机器人,
#ubuntu为登录用户名,192.168.0.117为登录机器的IP,根据实际替换
ssh ubuntu@192.168.0.117
#退出ssh远程登录
exit
一旦PC端打开的终端窗口ssh远程登录机器人后,就可以在该终端下像在机器人上使用终端一样进行操作了。PC端可以打开多个终端窗口ssh远程登录机器人,这样在不同的终端下可以开启机器人上不同的程序。
3.8.在工作PC端远程编辑机器人上的文件
已经介绍了通过ssh远程登录机器人的方法,其实可以直接在登入的终端下用vim对机器人上的文件进行查看编辑。但是,如果需要同时编辑多个文件,或对一个软件项目源码进行编辑,vim就不方便了。 这里推荐在PC端安装IDE开发工具(比较推荐atom,不过sublime text也不错,根据个人喜好选择吧),然后将机器人上的系统文件夹远程挂载在PC端系统,这样就可以在PC端上用IDE开发工具直接对远程挂载过来的文件及文件夹进行编辑了。 在PC端安装IDE开发工具atom很简单,直接在ubuntu软件中搜索atom,然后点击安装就行了,如图21。
(图21)在PC端安装IDE开发工具atom
将机器人上的系统文件夹远程挂载在PC端系统,首先打开[文件]管理器,找到左侧栏的[连接到服务器],在服务器地址栏输入远程文件地址(如sftp://192.168.0.117/home/ubuntu,这里的sftp是协议,192.168.0.117是远程设备IP地址,/home/ubuntu是远程设备中想要被挂载的文件夹请根据实际替换),然后点击[连接],这是需要输入远程设备的登录名和密码,如图22。
(图22)将机器人上的系统文件夹远程挂载在PC端系统
挂载好后,就可以使用各种我们喜欢的编辑工具对文件夹中的文件进行编辑了,如图23,不过远程文件系统挂载会比较占用网路带宽,不用时建议尽量断开。
(图23)挂载好后的远程文件夹