基于Donkeycar手动实现自动驾驶

关于Donkeycar小车

DonkeyCar是一个用Python编写的高级自动驾驶库。它的开发着眼于实现快速实验和轻松贡献。Donkeycar框架继承了一个完整自动驾驶所需的各种模块功能,如数据采集,模型训练以及自动驾驶等功能。Donkeycar小车在国外各种自动驾驶创意比赛中已被玩的热火朝天。关于Donkeycar框架的代码的讲解,视频内容以搬运到到b站(https://www.bilibili.com/video/BV16J411n7TZ),欢迎去学习,记得三连哦。

本文说明

在网上搜到的大部分Donkeycar小车的教程都是基于树莓派构建的并不太适合本人的想法,而网上也没有提供有基于Jetson nano开发板构建的文章,所以本文将详细讲述实现过程。由于树莓派的算力不够理想,而英伟达今年推出的带GPU的开发板却是一个比较理想的板子,Jetson nano开发板在各种算法的表现能力如图1所示,而恰好Donkeycar也提供了对Jetson nano开发板的支持。所以本文采用jetson nano做为载板进行构建一辆自动驾驶小车。
图1

硬件选择

主板模块

图1
Jetson nano引脚符号说明:

  1. 用于主存储的microSD卡插槽
  2. 40个扩展引脚
  3. 用于5V电源输入或数据传输的Micro-USB接口
  4. 千兆以太网接口
  5. USB3.0接口(x4)
  6. HDMI输出接口
  7. DisplayPort连接器
  8. 5V 外接直流电源插孔
  9. MIPI CSI相机连接器

小车选择

本文所用的小车模型为某人提供的小车模型,其图片如图2所示,但在某宝上找了好久都没有合适的小车骨架,基本就是普通的小车的结构,小车结构主要有巧克力板作为组装,后轮的两个普通电机,前两个轮采用舵机控制转向,12V的电池等。这些零件都可以在某宝购买得到。

图2

驱动模块

1.由于Jetson nano没有直接产生PWM波控制舵机的引脚,所以必须外接模块间接控制舵机,Donkeycar所使用的的模块为PCA9685模块,其图片为图3所示,在某宝可以购买得到。PCA9685模块通过I2C与Jetson nano模块通信,可以产生16路的PWM波。

图3
2.电机驱动模块采用普通常用的L298N驱动模块即可如图4所示,即只需控制两路电机,前面说的12V电源是为了提供给这个模块用的。
图4

其他模块

由于Jetson nano只需提供一个5V的电源,而总的电源为12V所以必须提供一个降压模块提供一路电压给Jetson nano使用,可以如图5所示的降压模块,可以在某宝购买,注意,模块间要想办法让它们共地哦。由于Jetson nano没有提供WIFi模块,所以需要自己购买一个WIFI模块。本文采用的是USB摄像头,如果想直接用本文的代码则摄像头必须使用USB摄像头,因为驱动不是采用Donkeycar的摄像头驱动。
图5

驱动总结

对于驱动模块有不止一种方案,所以本文也提供了两种方案,如图6所示,上面所述的方案是图中下面方案,即不是采用集成模块。
图6

小车组装

根据所选的模块开始拼装小车,可以根据自己的想法来组装,只要把后面所讲的线能够很好的接好就好了,模块放置于哪个位置无所谓。本文最终组装的形状如图7所示。在这里插入图片描述

Jetson nano、PCA9685与L298N模块接线

Jetson nano的电源之间以及降压模块的接线这里就不详细介绍了。主要介绍 Jetson nano、PCA9685与L298N模块接线,其接线图如图8所示。到此所有的模块接线就完成了。

图8

Jetson nano镜像的安装

本文经测试过并打包的镜像,可以直接烧录到jetson nano开发板中,免去安装Donkeycar框架的环境所需要的复杂的过程,如果需要详细的自己动手安装环境以及Donkeycar框架,可以到官网(http://docs.donkeycar.com/)去按照安装流程一步一步的跟随安装,在此说明,如果自己动手安装Donkeycar步骤繁琐而且还费时间,安装完了不一定可以使用。
1、下载本文所提供的的Jetson nano镜像(文件较多,关注微信公众号:科研小贩,回复jetson获取),下载完成推荐使用balenaEtcher软件工具烧录到SD卡中,SD卡最好为32G以上。
2、烧录完镜像,启动Jetson nano,输入密码(12345678)进入系统,在桌面打开终端,输入

cd mycar
python managy.py drive 

启动Donkeycar框架,根据你连接的局域网的IP(在终端中使用ifconfig可以查看),在浏览器中输入IP地址即可看到小车的操控界面,可以控制小车收集数据和启动自动驾驶(要先训练模型)。

车道制作

车道是数据集采集比较重要的数据,车道制作的好坏直接影响你的小车自动驾驶的效果,而本文采用在广告海报中用黑胶布贴成的一个椭圆形的车道,如图9所示。

图9

数据及采集

如果上面的步骤都没问题就可以启动小车在web端控制小车采集数据集了,在采集数据集之前,必须先熟练地控制小车在车道上行驶,然后正式采集前,把原来的数据集文件清空,然后才采集,采集的时候要注意控制小车不要跑出车道,如果跑出车道立即停止采集,把小车手动放回车道继续采集。

模型训练

电脑端Donkeycar镜像安装

由于Jetson nano资源有限,在Jetson nano 上训练模型不太理想,所以必须在PC端进行,可以根据官网提供的教程一步一步的在PC端安装Donkeycar框架,也可以采用本文提供的镜像进行安装,本文采用虚拟机来安装Donkeycar框架,由于虚拟机在一些电脑上安装本文的镜像有些小问题,所以如果遇到无法打开本文的镜像,可以试试不同的电脑。

电脑端模型训练

安装完镜像后启动虚拟机中的系统(本文的镜像系统)(文件较多,关注微信公众号:科研小贩,回复jetson获取),输入密码123456进行系统,之后把Jetson nano中的所采集的数据集传输到PC端,可以使用Filezilla软件登陆到Jetson nano系统,账户名为CLB,密码为12345678,IP为你的Jetson nano的ip,端口为22,并复制进入虚拟机Ubuntu系统的mycar/data文件夹中。在桌面打开终端,输入

source ~/env/bin/activate

当激活Donkeycar环境之后,输入

cd  mycar 
python manage.py drive --model ~/mycar/models/mypilot

如果没有提示错误则就进行训练了,等待训练完成即可。

启动自动驾驶

完成训练之后的保存的模型在mycar/model文件夹中。通过文件传Filezilla输软件传输到Jetson nano系统的mycar/model文件夹中。在桌面打开终端,输入

cd mycar
python managy.py drive 

启动Donkeycar框架,根据你连接的局域网的IP(在终端中使用ifconfig可以查看),在浏览器中输入IP地址即可看到小车的操控界面,把小车放到车道中,在Web端选择自动驾驶,等到一会小车就会自动行驶。

测试视频效果

本文测试的效果视频在B站中,不懂的可以到视频下方留言,看到必定回复,网盘失效请留言。

  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值