仿真环境对于机器人研究来说太过重要,一个好的仿真环境能够逼真的模拟真实的场景、拥有高保真的物理引擎,能够比较真实的反映算法的性能。但是有时,我们有一个Idea,想马上实现,从而快速的验证这个idea的可行性,那么一款小巧、简洁的仿真环境可能更加合适。在得到验证有那么点意思后,再利用较真实的仿真环境验证,进一步,再放在实际环境中进行测试。一般来说,简单仿真环境——高保真仿真环境——真实环境,同一算法所需的代码量是递增的(因为要考虑的外围因素会增多,再加上接口代码)。

简单无人车仿真环境python代码

import numpy as np
import matplotlib
import matplotlib.pyplot as plt
%matplotlib inline# set up matplotlib
is_ipython = 'inline' in matplotlib.get_backend()
if is_ipython:from IPython import displayplt.ion()
plt.figure(figsize=(18, 3))class UGV_model:def __init__(self, x0, y0, theta0, L, v0, T): # L:wheel baseself.x = x0 # Xself.y = y0 # Yself.theta = theta0 # headdingself.l = L  # wheel baseself.v = v0  # speedself.dt = T  # decision time periodicdef update(self, vt, deltat):  # update ugv's statedx = self.v*np.cos(self.theta)dy = self.v*np.sin(self.theta)dtheta = self.v*np.tan(deltat)/self.lself.x += dx*self.dtself.y += dy*self.dtself.theta += dtheta*self.dtdef plot_duration(self):plt.scatter(self.x, self.y, color='r')   plt.axis([0, 18, -3, 3])if is_ipython:display.clear_output(wait=True)display.display(plt.gcf())  # set reference trajectory
refer_path = np.zeros((100, 2))
refer_path[:,0] = np.linspace(0, 18, 100)plt.plot(refer_path[:,0], refer_path[:,1], '-.b', linewidth=5.0)
ugv = UGV_model(0, 0, 0, 2.86, 2.0, 0.1)
for i in range(1000):ugv.update(2.0, np.cos(i/5.0))ugv.plot_duration()

简单测试(方向盘转角以余弦周期性变化):

写在后面

简单的仿真环境的模型最简单,预测误差也最大,往往与真实环境中跑的结果相差很大。仿真环境越好,运行效果与真实环境越接近。

无人车系统(三):用python写一个简单的无人车仿真环境相关推荐

  1. 利用python写一个简单的双色球彩票系统

    利用python写一个简单的双色球彩票系统 1.设置每次买的号码一样 写一个双色球彩票系统,系统可以随机产生一组数据,一组彩票数据有六位数,这六位数的的取值范围是0和1. 一张彩票是两块钱,用户可以选 ...

  2. 用python写一个简单的web服务器

    人生苦短,我用python 简洁高效,这才是理想的语言啊 分享一点python的学习经验-----如何用python写一个简单的web服务器 首先,我们需要简单地了解一下网络通信协议,这里用白话介绍一 ...

  3. python爬虫抢火车票_如何用python写一个简单的12306抢票软件|python 爬火车票 教程...

    python 如果抓取验证码图片 类似12306的登录验证码图片 这个以前做次.最大的麻烦是码的识别算法的识别率太低.12306那种网站登陆错3次就限制你20分钟.所以除非你有33%以上的识别率否则不 ...

  4. 用Python写一个简单的双均线策略分析

    用Python写一个简单的双均线策略 双均线策略 先罗列一下我知道的量化策略: 双均线:一句话来讲就是金叉买死叉卖. 布林带:突破压力线(上轨)清仓,跌破支撑线(下轨)持仓. PEG:根据PE/G调整 ...

  5. python解析器是什么_如何用python写一个简单的词法分析器

    编译原理老师要求写一个java的词法分析器,想了想决定用python写一个. 目标 能识别出变量,数字,运算符,界符和关键字,用excel表打印出来. 有了目标,想想要怎么实现词法分析器. 1.先进行 ...

  6. python可以做机器人吗_零基础如何用Python写一个简单的WeChat机器人?(内附代码)...

    (bing图片) python这两年热火朝天,依托其众多类库,基于python的应用层出不穷,也大大降低了非计算机专业人员的入门门槛,WeChat机器人自然不在话下!-- 聪明的瓦肯人 苦于有时候总是 ...

  7. python写词法分析器_如何用python写一个简单的词法分析器

    编译原理老师要求写一个java的词法分析器,想了想决定用python写一个. 目标 能识别出变量,数字,运算符,界符和关键字,用excel表打印出来. 有了目标,想想要怎么实现词法分析器. 1.先进行 ...

  8. python写词法分析器_用python写一个简单的词法分析器

    编译原理老师要求写一个java的词法分析器,想了想决定用python写一个. 目标 能识别出变量,数字,运算符,界符和关键字,用excel表打印出来. 有了目标,想想要怎么实现词法分析器. 1.先进行 ...

  9. python写一个简单的12306抢票

    引言 每逢过年就到了12306抢票高峰期,自己总想研究一下12306购票的流程,虽然网上已经很多资料,但是总比不过自己的亲身体会,于是便琢磨着写一个抢票软件,本人比较熟悉python,所以软件是用py ...

  10. 用python写一个简单的推荐系统

    前言 在上篇文章豆瓣电影,电视剧DM实战中提及到,我和室友们产生了剧荒,萌生出要做一个个人用的推荐系统,解决剧荒的问题的想法,经过一轮的死缠烂打,这个个人推荐系统终于成型了. 今天来分享一下心得,对此 ...

最新文章

  1. git切换ssh和http协议
  2. 创建代码生成器可以很简单:如何通过T4模板生成代码?[下篇]
  3. ScriptManager 帮助您实现 Web 应用程序的 AJAX 功能
  4. 详解Scala与Java的互动
  5. MongoDB--架构搭建(主从、副本集)之副本集
  6. CodeForces - 1368E Ski Accidents(拓扑排序)
  7. step by step to download equipment via request download
  8. oracle编写备份数据库代码,oracle_oracle数据库创建备份与恢复脚本整理,1:创建用户 复制代码 代码如 - phpStudy...
  9. NOIP模拟测试49·50「养花·折射·画作·施工·蔬菜·联盟」
  10. 【DP】【期望】$P1850$换教室
  11. 12位故去的国家最高科技奖得主:科学寰宇,那些永不陨落的“星”
  12. 景观分析工具:arcgis中patch analysis模块
  13. CSS cursor 属性-鼠标形状
  14. 晶圆产能紧缺,成就华为的“无厂模式”反成败笔
  15. python使用-Python3 错误和异常
  16. (Kinetis K60) FTM输出PWM
  17. 4款U盘随身操作系统推荐
  18. Cain嗅探工具的DNS欺骗
  19. 常见的一句话muma
  20. RIME中州韵输入法lua配置获取当前时间(二)

热门文章

  1. VB显示透明FLASH效果
  2. 闲置eSATA接口影响Windows 7启动速度
  3. “Unable to register this add-in because its DllRegisterServer returns an error”的解决办法
  4. dos 批处理 for知识学习
  5. TIR透镜的设计 Matlab,用于DLP投影系统的自由曲面TIR准直透镜设计
  6. 在openSUSE-Leap-15.4-DVD-x86_64中使用佳能喷墨打印机ip2780
  7. 如何用VB开发游戏外挂
  8. Android 解决Dialog 样式的Activity 半透明背景失效问题
  9. Cisco交换机下载IOS
  10. 音视频Share系列2---基于H.265的编码技术优化实战