经过前面一系列的铺垫,相信你们对整个miiboo机器人的DIY有了一个清晰总体的认识。接下来就正式进入机器人大脑(嵌入式主板:树莓派3)的开发。本章将从树莓派3的开发环境搭建入手,为后续ros开发、slam导航及语音交互算法作准备。本章内容:html
1.安装系统ubuntu_mate_16.04python
2.安装ros-kineticlinux
3.装机后一些实用软件安装和系统设置nginx
5.Android手机端与robot端ROS网络通讯chrome
6.树莓派USB与tty串口号绑定django
7.开机自启动ROS节点ubuntu
虽然咱们顺利安装了ubuntu-mate-16.04系统,而且在系统上装好了ROS-kinetic发行版,为了后面跟高效和便捷的开发,这里将进行一些很是实用软件的安装和系统设置。vim
装完系统后第一次开机,会要求设置用户名和密码,这里应该设置用户开机自动登陆,只有登陆后树莓派3才能自动链接到无线网络,从而才能远程控制。若是装机时已经设置了,请直接跳过这一部分;若是你搞忘记或遗漏了,没有设置开机自动登陆,也没关系,用下面的的方法进行自动登陆设置。centos
打开文件/usr/share/lightdm/lightdm.conf.d/60-lightdm-gtk-greet.conf,在[seat:*]节点下修改或添加如下代码
autologin-user=ubuntu #ubuntu是要自动登陆的用户名
装完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上须要编译一些大型的程序和运行复杂的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
为了让机器人启动后,咱们能经过网络远程访问,须要给机器人配置好网络链接,并分配静态IP,让机器人开机后就能自动链接wifi。关于设置的内容已经在上面安装ros-kinetic详细介绍了,有须要的直接前去翻阅就行。
前一段时间,在ubuntu-mate-16.04上安装ROS后,ubuntu-mate-16.04系统自带的Firefox浏览器不能用了,Firefox最近对这个故障进行了修复。不过为了保险起见,仍是推荐安装谷歌为linux系统推出的浏览器chromium,跟咱们平时用的闻名于世的chrome浏览器是差很少的。安装很简单,就一条命令。
sudo apt-get install chromium-browser
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主板是安装在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远程登陆机器人,这样在不一样的终端下能够开启机器人上不一样的程序。
已经介绍了经过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)挂载好后的远程文件夹
------SLAM+语音机器人DIY系列【目录】快速导览------
第1章:Linux基础
第2章:ROS入门
第3章:感知与大脑
第4章:差分底盘设计
第5章:树莓派3开发环境搭建
第6章:SLAM建图与自主避障导航
2.google-cartographer机器人SLAM建图
第7章:语音交互与天然语言处理
第8章:高阶拓展
2.centos7下部署Django(nginx+uwsgi+django+python3)
----------------文章将持续更新,敬请关注-----------------
若是你们对博文的相关类容感兴趣,或有什么技术疑问,欢迎加入下面的《SLAM+语音机器人DIY》QQ技术交流群,一块儿讨论学习^_^
关于咱们:
视频教程: