python编写赛车_在 Gym 上构建会动的人工智障2:寻迹小车(python)

目录:背景说明

编程环境搭建与入门

本篇文章挑战的任务

我解决问题时使用的工具 skimage

代码效果

项目源码

背景说明

作者一直在探索使用processing进行编程教育。我所构建的编程学习模式包含两方面的内容。为学生的编程学习设计具体的应用场景

演示如何探索一个未知的环境,并在初步尝试后不断的迭代自己的解决方案

可以理解成一个是“出题”,一个是“解题”吧。之前的尝试都是在processing平台的物理库上进行的,但是最近突然发现有一个包已经提供了类似的功能,所以探索一下。这个包就是我们今天的主人公:Gym。

Gym平台包含了丰富的任务,每一个任务的可视化以及内部机制都是设计好的,所以可以把Gym当成一个出题人吧。我们(Agent)负责根据任务中场景(Environment)给出的信息(observation, reward),不断的做决定(action)。然后场景评价我们的决定并给出新的反馈(observation, reward),如下图:

它的具体的任务场景 包括了字符串游戏,红白机游戏,物理引擎(box2D)或专业物理引擎(MuJoCo)中的机械控制等,而且它还支持自定义场景。预告一下,我以后可能也会探索自己构建Gym任务哟~Gym中基于box2D的场景页

有趣的是,Gym原本是由OpenAi开发,用于开发和比较强化学习算法的python包(就像是给他们的强化学习算法找一个“健身房(Gym)”),但是我们拿来用它来进行自己的编程练习。我们写的程序可能既没有深度,也不会学习,所以我在文章的标题里面把这些程序称为“人工智障”。

这篇文章和processing已经没有直接关系了,但是却和趣味编程的关系很大。所以就也放在这个专栏下面了,请各位理解~

编程环境搭建与入门

作者推荐在使用Anaconda和Pycharm软件的条件下,安装python以及Gym就可以啦,网上相关的资源很多,大家可以找到后学习实践一下。遇到其他问题可以参考网上关于“构建Gym,Tensorflow强化学习环境”的帖子,当然我们这里是用不到Tensorflow的。

至于对于Gym的使用入门请参考本专栏的上一篇文章。

本篇文章挑战的任务

这次挑战的任务是:CarRacing-v0。这个场景是构建在box2D上的,主要的目标就是让小车保持在赛道上运动。我们可以控制的物理量由小车的(方向,油门,刹车),而场景给出的反馈是像下图中右面这样的像素画面。官网上对于这个任务场景的简介

我解决问题时使用的工具 skimage

主要的工具是scikit-image。希望能通过使用该工具将“道路”和“赛车”从画面中分离出来,并通过经典图像处理算法获得它们的几何信息,从而最终分析得到小车在路上的偏差,从而为控制小车沿路运动提供参考。

这个工具属于python科学计算生态系统,提供了常用了图像处理算法的包装,并且由丰富详细的教程。它的主要功能有:色彩空间操作,寻找边线,几何变换,过滤和还原,特征和物体的检测, 对象分割等。这个库是基于numpy的,而我们的很多操作也会借助numpy完成。

我使用这个库的方法是先研究那哪个功能是我需要的,然后把它们集成到自己的代码中(俗称“调包侠”)。

代码效果v2-4a01089eb085acedfe0302e613eb574f.jpg多次测试视频https://www.zhihu.com/video/1162120027955765248

经过多次参数调整,上面这个视频基本就是这个程序的最佳状态了。

从上面的视频可以看出,小车在直路以及钝角拐弯处表现良好;遗憾是在锐角拐弯的时候会后拐弯失常的情况,初步猜测是图像处理算法在这里应用的时候存在问题。

项目源码

由于本项目的代码太长了,而且是jupyter notebook格式的,所以就上传到了Github上。由于网速问题,作者还暖心地准备了码云仓库,让大家可以更流畅地浏览代码。

代码的风格是函数化的,根据函数名就能大致猜出函数的作用。很多的函数中还贴心的设置了可选参数show,默认是关闭状态,打开时会输出信息帮助Debug。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值