前面一篇博客记录了硬件清单和组装,这里接着做软件配置让系统能运行起来。

Donkey Car的GitHub仓库地址为:

https://github.com/autorope/donkeycar

我还是先用这个让小车跑起来,它提供了基本的功能,包括通过摄像头采集数据,训练,利用训练结果进行自动驾驶,用网页界面控制小车等。

首先是树莓派的安装配置,这里不展开,不过我之前做过,也记录了详细文档,贴这里仅供参考:

http://www.beavermagic.com/doc/%E6%A0%91%E8%8E%93%E6%B4%BE3B+%E6%90%AD%E5%BB%BA%E7%82%B9%E6%92%AD%E7%B3%BB%E7%BB%9F%E5%8F%8A%E6%97%A5%E5%B8%B8%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3.pdf

因为我已经有个树莓派了,这个小车的就需要修改下主机名称,将/etc/hostname中的名称改为donkey,/etc/hosts中127的本地ip也对应改为donkey即可。

接着,树莓派能够运行了,开启了ssh和vnc,处于局域网下,我可以从同局域网的电脑上连接访问它:

不得不说VNC确实舒服。

那么,需要先测试下摄像头能否正常工作,摄像头需要通过树莓派自带的管理器开启,注意摄像头插紧,电源要够标准。我原来遇到过摄像头无法初始化的问题,重启没用,又插拔了摄像头,换了电源就好了。效果如下:

用该命令成功得到一个3280*2464的大图,还是很清晰的,这里就不放图了。

树莓派和摄像头都没问题了,接着就可以进行Donkey Car的配置了。先说明一下,我安装的树莓派系统都是官方的,官方用的是32位系统,所以你看到cpu信息可能是armv7l,那是因为它跑的是32位系统。但是它的cpu是a53,支持64位,所以如果你跑64位系统,看到的应该是armv8(64)吧。其实有人在搞树莓派64位,这里就还继续用官方带桌面的32位系统。

(树莓派用conda还是有较多问题的,而且donkey car自身用的virtualenv,我这里的记录有的是弯路,后面换成virtualenv了)先准备环境,既然是32位系统,那么下载一个miniconda 32位的Linux安装包,而且全面转向python3,选择对应python3的miniconda。但是如果你直接在minicnonda官网页面下载就出问题了,因为这个32位是x86的,而我们树莓派的32位是arm,所以会报错:

无法执行二进制文件: 可执行文件格式错误

所以树莓派安装miniconda需要:

wget http://repo.continuum.io/miniconda/Miniconda3-latest-Linux-armv7l.sh
bash Miniconda3-latest-Linux-armv7l.sh

创建一个名为py3-env的环境:

conda create -n py3-env python=3.4

这里写python版本3.4,因为arm对应的还没到3.7,只有一个最高的3.4。接着就可以:

git clone https://github.com/autorope/donkeycar.git

这里为了测试donkey car,单独建立一个donkey虚拟环境,上面的py3-env留作以后正式使用。激活该虚拟环境后,安装donkeycar:

pip install donkeycar

官方文档后面好像还有括号和pi,不用带也一样的。等它把各个依赖都安装好:

这里完成后就可以:

python -c "import donkeycar as dk; print(dk.__version__)"

文档后面还有要:

pip install -e ./donkeycar

等操作,主要是为了进行训练的,而训练时放在别的服务器或者笔记本上,不在树莓派上做。这里也就可以说软件配置完成了。

接着创建模板:

donkey createcar ~/mycar --template donkey2

就报错了:

undefined symbol: PyFPE_jbuf not built

查了下好像pip安装的numpy和conda本身环境有冲突。所以我就继续用virtualenv创建一个donkey环境吧,把原来的清理掉。期间pip安装的numpy会花很长时间(还有个pandas),因为numpy是c实现的,需要编译后安装,一定要耐心等。完成后运行上面的createcar命令,得到:

已经有manage.py了,接着运行:

python manage.py drive

提示要tensorflow,然后提示picamera,都用pip安装好后,提示要Adafruit_PCA9685。这个也可以用pip直接安装:

pip install adafruit-pca9685

然后还要i2c开启,如果权限不够,需要将自己的用户添加进i2c组中。如果临时添加,记得要退出当前终端,重新开,不然还是没权限。

一直到这里,我都还没将9685连接到树莓派呢,现在连接上。可是怎么连接呢?之前想买整装的就是担心连接不会,但是无奈买不到整装的,只能DIY了。这里主要参考官方视频:

https://www.youtube.com/watch?v=byRLYkZkJZE&t=3720s

视频还算清楚:

然后结合官网文档和树莓派引脚定义,先将树莓派和这个PCA9685连接起来。这里放一个树莓派引脚图:

结合视频和引脚定义,将树莓派内侧第一个引脚,也就是1号引脚,连接到9685的第二个引脚,也就是它的VCC引脚,这样树莓派的3.3V供电给到9685。树莓派的内侧第二个引脚,也就是3号引脚SDA连接9685的第三个引脚,也就是它的SDA。树莓派的5号引脚SCL连接9685的SCL,树莓派的9号引脚也就是GND连接9685的最后一个引脚也就是他的GND。如下:

接着就是电机部分了,要将控制电机的功能从原来的2.4G接收器上拿掉,放在舵机上让树莓派控制。原来的连接是这样的:

我的这个控制器有四排线,从下面开始数,第一和第二是插着的,第三和第四是空着的只有排针。这上面有防呆接口,第一排线是有小缺口的:

第二排则没有。继续观察,第一排线是接Servo上的,也就是控制转向的,也就是Steering信号。第二排是接到那个小的BEC上的。BEC就是Battery Eliminator Circuit,也就是免电池电路,这些说法都常见于Radio-controlled(RC)模型(车)。BEC能让遥控模型只搭载一组电池,而不需要两组(一组马达电池,一组遥控电路电池)。最终BEC输出的红黑两条线缆给到电机,也就是说第二排是控制速度的,也就是Throttle信号了。

那么这俩如何连接到9685上呢?9685是16路的,这里只需要两路信号。这两路信号线都是一样的颜色,黑色代表的是GND,也就是地,对应到9685上也要是黑色孔。这里想要连接就要看代码了:

#STEERING
STEERING_CHANNEL = 1
STEERING_LEFT_PWM = 420
STEERING_RIGHT_PWM = 360#THROTTLE
THROTTLE_CHANNEL = 0
THROTTLE_FORWARD_PWM = 400
THROTTLE_STOPPED_PWM = 360
THROTTLE_REVERSE_PWM = 310

所以这里将9685的信号0对应Throttle,也就是第二排线,信号1对应第一排线也就是Steering。另外说一下,如果遇到ESC这个词,说的是Electronic Speed Control,就是电子转速控制。这个小车上用的是7.2V的电源,是6个小电池串联的,每个小电池1.2V。

最后,还需要加一个移动电源,因为车子本身的电池没有树莓派需要的那种标准。我这里用了魅族移动电源,5V/2A输出刚好够树莓派用。

最后组装好了如下:

这就真的运行起来了,就能到浏览器中访问控制页面,输入的网址就是小车的ip加上8887端口号:

为什么小车没动呢,好像昨天晚上车子电池接着车身,不过也没怎么用不会就耗完了吧。充电完成继续测试,总算可以了。用网页控制小车移动还是很不错的,连接收器的电池钱都省了。

树莓派自动驾驶小车(Donkey Car)调试运行相关推荐

  1. 基于树莓派搭建自动驾驶小车;Donkey Car组装硬件DIY

    还是想朝着人工智能方向靠一靠,之前研究图像有关的分类.识别,还是觉得太枯燥了.后来结合自己接触较多的Unity引擎,发现有自动驾驶用Unreal或者Unity之类的游戏引擎进行虚拟训练.接着发现了微软 ...

  2. 树莓派智能小车python论文_基于树莓派的自动驾驶小车,利用树莓派和tensorflow实现小车在赛道的自动驾驶...

    self_drive 基于树莓派的人工智能自动驾驶小车 Artificial intelligence automatic driving car based on raspberry pie git ...

  3. Arduino毕业设计——基于Arduino+PID+AI的自动驾驶小车控制系统设计与实现(毕业论文+程序源码)——自动驾驶小车控制系统

    基于Arduino+PID+AI的自动驾驶小车控制系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于Arduino+PID+AI的自动驾驶小车控制系统设计与实现,文章末尾附有本毕业设计的 ...

  4. vb.net label 不要自动换行_自动驾驶小车——(四)数据采集

    又鸽了好几个月,因为要准备考研,不过这个系列肯定会完成,现在也仅仅是一个初稿,以后还要整体完善一下的.这个小项目的设计思路大致分为三部分,数据采集.神经网络训练和加载模型三部分,本篇文章就讲一下怎样采 ...

  5. arduino控制小车转向_利用XECU和激光雷达快速搭建入门级的自动驾驶小车

    利用XECU和激光雷达快速搭建入门级的自动驾驶小车 1 简介 如果关注过我们之前的推文和视频演示,相信大家对我们的XECU应该已经很熟悉了.那么今天就向大家介绍一下,如何利用我们的XECU和激光雷达快 ...

  6. 亚马逊自动驾驶小车上线啦:才卖1700元,请叫它“强化学习玩具”

    晓查 发自 凹非寺  量子位 出品 | 公众号 QbitAI 原价399美元的自动驾驶小车,现在预订,只要249美元就能抱回家! 亚马逊的自动驾驶汽车DeepRacer上线啦,不过你并不能坐进去,它只 ...

  7. 基于linux的智能小车_商汤首款原创机器人SenseRover X自动驾驶小车斩获Red Dot Award...

    创建于1955年的德国Red Dot Award红点产品设计奖,是世界三大设计奖之一,是设计品质的象征,每年7月份都会在德国埃森举办盛大的Red Dot产品设计奖颁奖典礼. 60多年来,从计算机时代, ...

  8. 湖南阿波罗智行L4级低速自动驾驶小车亮相 湖南自动驾驶“朋友圈”再添新成员

    10月16日,长沙国际会展中心,湖南阿波罗智行科技有限公司举行BOBO·GO低速自动驾驶产品推介会,由湖南湘江新区本土企业自主设计研发的首款L4级低速自动驾驶售卖小车BOBO·GO(波波购)正式亮相. ...

  9. 一起打造自己的自动驾驶小车mycar - 4.手柄控制小车移动

    文章目录 1. 蓝牙游戏手柄 1.2 手柄配置 轴(axis): 按钮(button): 1.3 按键功能 1.4 代码实现 2. 录制视频 3. 运行 3.1 clone代码 3.2 连接蓝牙手柄 ...

最新文章

  1. 云计算数据中心规划设计方案
  2. linux java javac版本_linux下java 和 javac version 不一致问题
  3. 数据库启动提示: ORA-27102: out of memory
  4. 关于SAP Spartacus Routing 页面上下文切换机制的实现
  5. Delphi 与 DirectX 之 DelphiX(71): TDIB.Negative;
  6. 软件项目可行性分析定义_如何定义最低可行产品
  7. 方舟服务器制作修改,ARK方舟:生存进化服务器禁止物品制造的修改方法
  8. 回调java 简书_Java接口回调机制详解【转】
  9. emlog-博客定制版lu1.3主题模板
  10. [LintCode] Reverse Pairs 翻转对
  11. 【HTTP】POST 与 PUT 方法区别
  12. springboot中日志配置
  13. 在Java中==的一个坑
  14. [RocketMQ]消息中间件—RocketMQ消息消费(一)
  15. 记Angular与Django REST框架的一次合作(2):前端组件化——Angular
  16. linux PMBus总线及设备驱动分析
  17. python异步请求aiohttp_利用aiohttp制作异步爬虫
  18. 大脚战场插件怎么关闭_魔兽战场插件 capping插件怎么关闭
  19. coffeescript基本语法
  20. Deep Crossing: Web-Scale Modeling without Manually Crafted Combinatorial Features【论文记录】

热门文章

  1. Java基本程序介绍
  2. 读文章笔记(七):赛尔笔记 | 多模态情感分析简述
  3. NO6 -- 抽样分布-Python实战
  4. 除以用计算机按哪个键,计算器上没有off键,可以用另一种方法关机,是哪几个键组合?...
  5. 产品分析数据来源渠道
  6. 深入解析WINDOWS操作系统 1
  7. CockroachDB集群搭建和配置
  8. MYSQL自动备份并发送邮件工具
  9. 印度斯佩格spegra
  10. Edge浏览器出现无法访问此页面,XXX已拒接链接,请尝试检查代理和防火墙