树莓派做智能小车环境配置

暑假里,留校了基本50天,在机器人比赛上,参加了南京的旅游机器人比赛和山东的全国机器人比赛。但实在有些后悔,并没有拿到特别好的成绩。反思起来,一部分是因为自己没有用心参与团队的比赛,另一方面,我们可能过多依赖于别人的技术。

这段时间,思前想后,发现:我们虽然用学校经费大价钱购置了几台往年的车型,但底层的核心代码全部掌握在别人手中。这一点导致我们接手后能做的工作只是在大框架下进行代码调试,使其适应比赛规则及场地的要求,但无法做出创新的更改。最终,还是决定做一个一台自组装的智能小车,并希望用小车来参加明年的比赛。

小车采用树莓派3做总控,并通过各种扩展模块对电机,传感器进行控制。具体的方案我会写在将来的文章中,在此,仅写下环境配置方案,以备份用于不时之需。

硬件选择与介绍

作为一个机器人项目,用作中控的芯片选择很多:

  • 基于AVR的arduino系
  • stm32系
  • arm系
  • fpga系
  • ……

其中fpga开发难度极大,且价格较贵,一般用作飞控,这里不做考虑;而在我所想的方案中,希望能够做到较容易的开发且需要一定量的计算能力,arduino和stm32一般产品的时钟频率都比较偏低,难以应对图像处理,且stm32需要从底层开发,难度较大;而在arm系中树莓派成为一个极佳的选择。

树莓派至今(2017年98月),已出3代产品,每代产品又分为A、B两型。A型一般用于企业,公司定制,无各种外接接口,需要额外焊接;B型为对外出售型号,有各式各样的IO接口,包括USB,HDMI,3.5mm音频接口,lan接口,以及专用的摄像头输入和视频输出接口。

而最主要的,是其包含40pin的gpio,这一点足够用于机器人开发。除此外,B型还有后期的B+型号,是对B型的性能的较低提升。就性能而言,不像arduino和stm32孱弱的性能(一般低于50mHz),树莓派是一台完整的计算机,soc为博通研发,现在最新第三代产品raspberrypi3 B,其cpu采用4核1.2G,足够用以图像处理,甚至跑一些简单的神经网络模型。

具体详细的各版本硬件介绍,可以参阅树莓派百度百科

系统安装

raspberrypi官方系统安装

树莓派官方官网:https://www.raspberrypi.org/downloads/

分为NOOBS版本和RASPBIAN版,NOOBS内置了RASPBIAN但多了一个启动界面(相当于BIOS),在安装时可以通过网络选择其他的系统,我们一般若安装官网系统直接下载RASPBIAN版,就好。

  1. 下载后,解压会得到一个img后缀的文件,这就是已打包的系统镜像;
  2. sd插入电脑(可用读卡器),格式化sd卡;
  3. 下载win32diskimager,用于写入镜像;
  4. 选择已解压的镜像文件,并选择sd卡盘符(默认已选),最后点Write 即可完成写入;
  5. sd插入树莓派,接入hdmi线,通电自动开机。

第三方系统安装:ubuntu mate

因为linux一直在用Ubuntu的发行版,所以在本次配置中拟采用ubuntu mate作为系统环境,针对树莓派的ubuntu mate下载地址,和2.1系统安装一样,解压得到img文件,win32diskimager写入,开机。

基础环境配置

vim编译器

vim编译器一直我都比较喜欢,但逻辑不同于一般win平台的编译器(例如notepad++),需要一定的时间练习。在官方系统可能存在vim编译器为common版,在编辑时存在方向键无法使用的问题,通过以下命名即可更换:

1
2
sudo apt-get remove vim-common
sudo apt-get install vim

中文输入法

  • raspbian版中,系统默认英文,且没有中文字库,我们需先安装简体字体
1
sudo apt-get install ttf-wqy-zenhei
  1. 再通过 raspi-config进入参数选择;
  2. 然后选择change_locale
  3. Default locale for the system environment中选择zh-CN UTF-8(空格键选择);
  4. 然后然后按回车,然后默认语言选中zh-cn然后回车;
  5. 重启机器,就发现整个环境变成中文的了。
  • ubuntu mate系统安装时,可以自主选择语言,不存在字体问题。在系统中,我们采用google拼音输入法作为中文输入法,注意这里采用fcitx作为输入法框架,类似框架还用ibus。
1
sudo apt-get install fcitx fcitx-googlepinyin

在raspbian中,我们采用ibus输入法作为中文输入法

1
sudo apt-get install ibus ibus-pinyin

更新源更改

因为墙的原因,国内访问树莓派的更新源都比较慢,甚至出现404情况,因此我建议把源换回国内

  • raspbian系统的国内源比较多,这里我们采用阿里云的源
1
2
3
4
sudo nano /etc/apt/sources.list #编辑源
# 把所有内容替换为以下内容,保存并退出
deb http://mirrors.aliyun.com/raspbian/raspbian/ stretch main non-free contrib
deb-src http://mirrors.aliyun.com/raspbian/raspbian/ stretch main non-free contrib

最后,更新源,会看见明显下载速度的提升

1
2
sudo apt-get update
sudo apt-get upgrade
  • ubuntu mate的源相对较少,国内我现在只找到一家,是中科大的源。具体操作也是
1
2
sudo vim /etc/apt/sources.list #编辑源
# 然后把其中的 http://ports.ubuntu.com/ 换为 http://mirrors.ustc.edu.cn/ubuntu-ports/

最后,同样命令更新源

1
2
sudo apt-get update
sudo apt-get upgrade

pip源更改

pip源也存在连接过慢的问题,pip源更改也比较简单,

对Linu系统:首先进用户主文件,建立个.pip文件夹(注意有个点),再在.pip文件下建立pip.conf文件。

1
2
3
4
cd ~/
sudo mkdir .pip
cd .pip
sudo vim pip.conf

写入以下内容,详情见http://mirrors.aliyun.com/help/pypi

1
2
3
4
5
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/

[install]
trusted-host=mirrors.aliyun.com

远程设置

远程连接一般采用两种方式ssh远程桌面

  • SSH:
    • raspbian版可通过raspi-config设置ssh开启,或在存储卡根目录新建一个ssh空文件
    • ubuntu mate版默认开启ssh
  • 远程桌面:远程桌面有多个选择,vnc,xrdp等,我们建议使用xrdp,可以免于繁琐的配置。但在raspbian版中已经集成了vnc,可以通过raspi-config开启
1
sudo apt-get install xrdp

文件共享

文件共享能实现局域网内windows与树莓派的文件共享。

  1. 首先要保证windows网络发现功能开启,树莓派上采用samba作为共享工具

    1
    2
    sudo apt-get install samba samba-common-bin 	# 安装samba
    sudo vim /etc/samba/smb.conf # 修改配置文件
  2. 在文本末端加入以下内容(以共享主文件下 公共的 文件夹为例

    1
    2
    3
    4
    5
    6
    7
    [共享目录]
    comment = this is Linux share directory
    path = ~/公共的
    public = yes
    writable = yes
    browseable = yes
    available = yes
  3. 再重启samba服务

    1
    sudo /etc/init.d/samba restart
  4. 在Samba配置文件设置过权限后,还需要在系统中将共享文件夹的权限设置为同配置文件中相同的权限,这样才能确保其他用户正常访问及修改文件夹内容

    1
    sudo chmod -r 777 ~/公共的/

应该就能在windows的网络位置发现树莓派设备了。

开发环境配置

openCV3.2 编译安装

关于3.2版的openCV我已经写在我的另一篇文章ubuntu17.04环境下opencv3.2.0配置,基本同样的步骤,只是在make的时候,树莓派的计算能力较弱,且发热量较大,如果没有主动散热,建议

1
sudo make -j2 #两个线程编译

当然,若有额外的散热工具,也可以用:

1
sudo make -j4  #四线程加快编译

tensorflow 安装

tensorflow作为Google开源的计算机深度学习库,可以极大简化深度学习的代码。

github上已经有人针对树莓派做好了移植代码,致敬!链接

注意:现在的所支持tensorflow最高版本为1.2.0,所支持的python版本为2.7和3.4,一般的树莓派系统都是3.5,这一点可以通过docker解决。

具体步骤不再赘述,请移步github查看。