进行 Web 界面原型设计的一种方法

进行 Web 界面原型设计常用的工具如下:

  1. 白纸、铅笔、橡皮,有时候还需要剪刀。可惜大部分情况下保真度不高而且难以表述页面流程;
  2. Word,可以制作 wireframe,还可以批注或者加大段文字说明。可以在一定程度上表述页面流程,但是依赖于文字功底;
  3. PPT,使用起来比较麻烦,但是可以动态的表达出交互流程,可惜文字表达能力不足;
  4. Flash,同 PPT,更加难以使用。适合制作小屏幕界面原型;
  5. HTML,本文就是想讲如何使用 HTML 快速进行 Web 界面原型设计。

HTML 作为 Web 的基础,也是大部分项目开发过程中,设计师最终要向程序员提交的成果。使用 HTML 进行原型的设计,有相当大的优势在于可以节省一些制作的时间。但是这里面还是遇到几个问题:设计师如何管理 HTML 文件?最后提交给程序员后,如果要修改怎么办?因为大部分情况下,HTML 一旦交付,可能就四分五裂不成样子了。要修改的话可能要先改设计稿,好了之后再次提交给程序员,同时程序员要确认哪里修改了,哪几个文件修改了。如果使用 SVN 来协同开发,情况还好一些,但是设计师就要花上一段时间来理解程序结构。

我常戏称这种方法为页面驱动型开发,因为在开发前(确切说是编码前)大部分工作是处理界面、交互,并且制作出高保真的 HTML 页面原型。它基于 Web 标准设计,完全分离结构和表现,这样当程序员在原型基础上进行编码的同时,设计师可以进一步完善 UI 设计,而只用到 CSS 文件和 images 文件夹。通常情况下需要 CVS 或 SVN 的支持。

这种高保真的 HTML 页面原型,包括:

  • 页面布局和内容:一致的布局和界面上的文字(与用户的对话),不包括详细的 UI;
  • 页面流:页面原型上所有链接可点,并且可理解,比如 href="/posts/add" 这样的链接;
  • 提示信息:利用 JS 模拟用户操作,有成功操作或失败操作的提示;
  • 小元素:比如弹出小窗口的提示和帮助等。

这样的原型交付给程序员,相信他也会相当的开心的 :D,不会因为页面去向不明或者缺少提示等而询问产品经理或者设计师,因为实际操作一下就明白了。

在设计这样的原型时,主要的思想是 MVC。因为一开始程序员在编码前会有一份代码设计的文档,包括一些约定和类的设计。设计师可以借助这份文档一瞥程序结构。以 Blog 管理后台为例,如 Posts 具有 addeditlistdel 等功能。那么在本地就可以相应的建立 Posts 目录,目录下分别新建 add.htmledit.htmllist.htmldel.html 页面。现在设计师通常也配有 IIS 或者 apache 用来调试。那么在省略扩展名的情况下,我们就可以通过 http://localhost/blogadmin/posts/add 来测试添加 post 的页面。这与后期程序约定是一致的。

接下来我们要统一页面的布局(layouts)。以 CakePHP 这个 PHP 框架为例,布局模版一般放在 \app\views\layouts 下面。一般是默认的 default.thtml。仿照这个结构,在原型设计根目录下设 PostsCategoriesCommentsLayouts 等目录。统一的小代码块放在 Elements 目录下。

目录理清楚后,接下来就是如何连接起来。这里用到了 SSI(Server Side Include),可以用简单的注释实现文件包含、代码重用。只需使用例如 <!--#include virtual="/path/to/file" --> 的代码就可以包含文件。为什么不直接使用 PHPinclude?显然让设计师学习 PHP 有些困难,而这种注释形式的“程序”更加容易理解。

为了让所有的页面使用同一个布局,我们用到了系统变量 $QUERY_STRING,即 URL 中的查询字符串,比如 http://example.com/?home,那么 $QUERY_STRING=home。有了查询字符串,布局的问题就解决了,URL 统一的问题也能够解决。

在原型设计的根目录下新建简单的 index.html 文件,加入 <!--#include virtual="/layouts/default.html" -->,也可以直接用 index.html 作为统一布局文件。然后在 /layouts/default.html 文件中加上统一的布局代码,动态变化的区域用 <!--#include virtual="$QUERY_STRING.html" --> 代替。之后你就可以通过 http://localhost/blogadmin/?posts/add 来测试添加 post 的页面($QUERY_STRING=posts/add)。虽然与之前的 URL 不同,但是已经基本一致了。如果你是一个完美主义者,可以配一下 mod_rewrite,可以实现完全的 friendly URLs。

基本上就是如此,最后不要忘了 JS 的小提示、重用代码的整理。在原型设计的过程中可以不断地和程序员沟通,了解他的需求,这样子可以减少不少后期的沟通成本和返工的情况。

新增加 UCD 目录,将以前写的/转的相关文章放进去了。

转: http://www.junchenwu.com/2006/11/a_method_of_using_html_to_design_web_prototype.html

 

viagra

航空陀螺仪(陀螺地平仪)















第一节 航空陀螺仪

                  一、陀螺仪的基本知识

   陀螺玩具旋转时,能够直立在地上;而且转得愈快,立得也愈稳;即使给它一个冲击,也只是晃动而不会倒下。陀螺的这种特性可以被利用来做成仪表用来测量飞机的姿态角、航向角和角速度。
   航空陀螺仪表中的陀螺仪,是把绕自转轴(又叫转子轴)高速旋转的转子用框架支撑起来,使转子绕垂直于自转轴方向可以自由转动的这样一种装置。图8.1表示的是,转子安装在内环和外环这两个框架中,转子可绕自转轴高速旋转,转子同内环可绕内环轴转动,转子同内环和外环还可绕外环轴转动这样支承起来的转子可以绕着垂直于自转轴的两根轴转动,这种装置称为三自由度陀螺仪。若转子仅安装于内环中这样支承起来的转子只能绕着垂直于自转轴的一根轴转动这种装置称为二自由度陀螺仪。
   三自由度陀螺仪的基本特性之一是稳定性(又叫定轴性)。当转子高速旋转时,因具有很大的惯性,自转轴能够保持原来的方向稳定;无论基座怎样转动,自转轴所稳定的方向都将保持不变;同使受到冲击作用,自转轴也仅在原来的方位附近作一种高频微幅的振荡运动。陀螺仪具有抵抗干扰作用而力图保持自转轴方向稳定的特性叫做螺仪的稳定性。

   陀螺仪的又一基本特性是进动性。当转子高速旋转时,若外力矩绕外环轴作用,陀螺仪将绕内环轴转动;若外力矩绕内环轴作用,陀螺仪将绕外环轴转动。陀螺仪转动角速度方向与外力矩作用方向互相垂直的特性,叫做陀螺仪的进动性。进动角速度 的方向取决于转子动量矩H的方向(与转子自转角速度矢量的方向一致)和外力矩M的方向,可用右手定则确定。进动角速度 的大小取决于转子动量矩H的大小和外力矩M的大小,其计算式为 =M/H。如果这种进动由陀螺仪中的干扰力矩引起,则叫做漂移,漂移角速度即漂移率是衡量各种陀螺仪表精度的最重要的指标。

   至于二自由度陀螺仪的特性,就与三自由度陀螺仪不同。二自由度陀螺仪少了垂直于内环轴和自转轴方向的转动自由度。这样,当基座绕着这个缺少自由度的轴线转动时,通过内环轴上一对轴承的推动,就强迫陀螺仪跟随基座转动;与此同时,基座作用于内环两端轴承上的推力形成了推力矩将强迫陀螺绕内环轴进动,使自转轴趋于基座转动角速度的方向重合。因此,二自由度陀螺仪具有感受绕其缺少自由度方向转动的特性。
   正是因为陀螺仪具有上述特性,可以做成测量飞行器(飞机、导弹、卫星等)角位置和角速度的仪表,还可做成测量飞行器线加速度和角加速度的仪表。
在航空上,陀螺仪表的基本用途是测量飞机的姿态角、航向角和角速度,因而成为飞机飞行的重要仪表。

航空陀螺仪表名称

在飞机上的用途

陀螺地平仪

测量飞机的姿态角,给出姿态指示

垂直陀螺仪

测量飞机的姿态角,输出姿态信号

陀螺半罗盘

测量飞机的航向角,给出航向指示

航向陀螺仪

测量飞机的航向角或给偏航角,输出航向或偏航信号

陀螺磁罗盘

陀螺半罗盘与罗盘组合,用来测量飞机的航向角,并给出航向指示

陀螺转弯仪

测量飞机的转弯角速度,给出转弯指示

速率陀螺仪

测量飞机绕机体主轴  转动角速度,给出转弯指示

全姿态组合陀螺仪

垂直陀螺仪与航向陀螺仪组合,用来测量飞机的姿态和航向角,并输出姿态和航向信号

双轴陀螺稳定平台

测量飞机的姿态角,输出姿态信号

三轴陀螺稳定平台

测量飞机的姿态和航向角,输出姿态和航向信号

   这里对飞机航行驾驶和飞行自动控制系统中使用的陀螺仪表列表说明,以便对航空陀螺仪表的名称及其用途有一个概貌的了解。
   从使用角度来看可把表中所列的航空陀螺仪表分成指示式的和传感式的两类。指示式陀螺仪表是给飞行员提供判读指示的陀螺仪表。传感式陀螺仪表是给飞行自动控制系统和机载特种设备提供电气信号的陀螺仪表。

   下面介绍常见的航空陀螺仪表的工作原理包括陀螺地平仪、陀螺半罗盘、陀螺磁罗盘和陀螺转弯仪等指示式仪表。至于垂直陀螺仪、航向陀螺仪和速率陀螺仪等传感式仪表,其工作原理与指示式的并无本质上的区别。
                         二、陀螺地平仪
   陀螺地平仪是利用三自由度陀螺仪的特性和摆的特性做成的陀螺仪表,用来测量飞机的姿态角。飞行员凭借陀螺地平仪的指示,才能保持飞机的正确姿态,完成飞行和作战任务。特别是在云中飞行或进行夜航时,飞行员看不见大地的地平线和地标,如不借助仪表,驾驶飞机就十分困难;而且,飞行员容易产生错觉,甚至可能造成机毁人亡的事故。由于飞行姿态对飞行的运动状态具有决定性的影响,对保证飞行安全也具有极大的重要性,因此,作为首要飞行仪表的陀螺地平仪通常都安装在飞机仪表板中间的最显眼位置上。在有些飞机上还加装了应急地平仪,以备主地平仪出现故障时使用。
   飞机的姿态角是指俯仰角和倾斜角。假如飞机上有一个地平面基准,当飞机抬头或低头时,飞机纵轴与这个地平面之间的夹角就是飞机的俯仰角。当飞机绕纵轴向左或向右转动时,飞机纵向对称平面绕纵轴转过的角度就是飞机的倾斜角。
   要测得飞机的姿态角,关键是在飞机上建立一个地平面或地垂线基准。我们知道,摆能够自动寻找地垂线具有方向敏感性;但它受加速度干扰时会产生很大的误差,缺少方向稳定性。我们也知道三自由度陀螺仪的自转轴并不因加速度干扰而改变方向,具有方向稳定性;但它却不能自动寻找地垂线,没有方向敏感性。即使把自转轴调整到与地垂线重合,由于地球自转和飞机运动导致地垂线在惯性空间不断改变方向,而且陀螺漂移导致自转轴在惯性空间也不断改变方向,这就使得起初与地垂线重合的自转轴逐渐偏离地垂线。由此想到把摆和陀螺仪二者的优点结合在一起,即用摆敏感地垂线并对陀螺仪进行修正,使具有方向稳定性的自转轴获得方向敏感性,这样便可在飞机上建立一个精确而稳定的地垂线基准。
以三自由度陀螺仪为基础,加上修正装置,再装上指示机构,就可构成陀螺地平仪。若不装指示机构,而是装上信号传感器,则可构成垂直陀螺仪。

                三、陀螺半罗盘与陀螺磁罗盘
   陀螺半罗盘是利用三自由度陀螺仪的方向稳定性做成的陀螺仪表用来测量飞机的航向角。陀螺磁罗盘是把陀螺半罗盘与磁罗盘组合在一起以便更好地解决飞机航向的测量问题。飞行员借助陀螺半罗盘或陀螺磁罗盘判明飞机的航向并按一定的航向飞行,才能驾驶飞机沿着正确的航线飞到预定的目标。在我机迎击来犯的敌机时飞行员必须根据敌机飞行情况不断修正飞行航向才能准确地飞到空战区域歼击来犯的敌机。可见陀螺半罗盘或陀螺磁罗盘也是十分重要的飞行仪表。
   飞机的航向角是指飞机纵轴在水平面上的投影与子午线之间的夹角.由于子午线有地理子午线(又叫真子午线)主磁子午线之分,所以航向角也有真航向角和磁航向角之分。由于地磁南、北极与地理南、北极不相重合,所以磁子午线与地理子午线之间相差一个角度这个角度叫做磁差角。在地球上各地的磁差角不同己通过实际测定绘面磁差地图供查阅使用。
   要测得飞机的航向角,关键是在飞机上建立一个磁子午线或地理子午线基准。众所周知,自由悬挂的磁针可以确定出磁子午线方向。利用磁针定向原理做成的测量航向的仪表称为磁罗盘。
   这里,我们又很自然地想到陀螺仪。在地球上放置的三自由度陀螺仪可以感受到地球的自转,加上适当的修正装置之后,自转能够自动寻找到地理子午线方向。这种由陀螺仪做成可测出真航向角的陀螺仪称为陀螺罗盘(常称陀螺罗经)。航海上从本世纪初开始用陀螺罗盘代替磁罗盘,目前在大海里航行的轮船和舰艇都是用它来精确地测量航向。但因陀螺罗盘的工作精度受航行体速度和加速度等影响比较大,而飞机的速度又比舰船大得多,以致在飞行中使用时会造成过大的误差,甚至不能正常工作,所以至今飞机上并未使用陀螺罗盘作为航向仪表。然而,航空上可以利用陀螺仪的方向稳定性做成飞机使用的陀螺半罗盘,以弥补磁罗盘或天文罗盘等航向仪表的不足。
   以两自由度陀螺仪为基础,加上水平修正装置和方位修正装置,再装上指示机构,就构成陀螺半罗盘。

   但是,陀螺半罗盘并不能自动找北,它的方位修正装置也不能完全消除方位偏离误差。因此,飞行员在仪表起动时,以及在使用过程中每隔一定时间例如半小时还必须根据磁罗盘或天文罗盘的航向指示,来调整陀螺半罗盘的航向指示。因它要人工进行航向校正,只起到半个罗盘的作用,故得名陀螺半罗盘。
   人工校正的办法显然增加了飞行员的工作负担所以在近代飞机上都采用自动校正的办法,把陀螺半罗盘与磁罗盘或者天文罗盘组合在一起。陀螺磁罗盘就是由陀螺半罗盘与磁罗盘组合而成,目前各种飞机上广泛把它作为基本航向仪表使用。
                        四、陀螺转弯仪
   陀螺转弯仪是利用二自由度陀螺仪的特性做成的陀螺仪表用来测量飞机的转弯角速度。飞机在空中飞行,经常有两种飞行状态,即保持飞机平直飞行状态和操纵飞机转弯或盘旋飞行状态。飞机的转弯就是改变航向,正确的转弯需要一定的倾斜来协调进行,而转弯的快慢则用来转弯角速度来表示。飞行员除了借助陀螺地平仪和陀螺磁罗盘(或陀螺半罗盘)了解飞机的姿态和航向之外还需借助陀螺转弯仪了解飞机转弯的方向和转弯的快慢。因此,陀螺转弯仪也是一种必备的飞行仪表。
   如前所述,二自由度陀螺仪具有感受绕其缺少自由度方向转动的特性。当基座绕着该轴线转动带动陀螺仪转动时陀螺仪将出现绕内环轴的转动使自转轴趋于与基座转动角速度的方向重合。我们可以利用二自由度陀螺仪的这种特性来测量角速度。
   但是,这样的二自由度陀螺仪仅仅能敏感出基座转动的方向,而无法测量出转动角速度的大小,为此需要在陀螺仪中装有弹簧如螺旋弹簧、片弹簧或弹性扭杆。当基座转动使陀螺仪绕内环轴转动而出现转角时弹簧因弹性变形就产生了与该转角成正比的恢复力矩,以平衡基座转动角速度所产生的绕内环铀的转动力矩。当这两个力矩恰好平衡时,陀螺仪绕内环轴停止转动。基座转动角速度愈大陀螺仪绕内环轴的转角也愈大。由于输出转角与输入角速度成正比,故可度量出角速度的大小。

             五、飞机姿态和航向的综合测量与综合显示
   航空上使用上述这些基本的陀螺仪表是从本世纪初开始的。先是作为指示式仪表用于飞机的航行和驾驶随后作为传感式仪表用于飞行自动控制系统和各种机载特种设备。但是,近代航空陀螺仪表同初期的相比其结构更趋完善性能也更加提高。从五十年代至今的三十年来,陀螺技术有了很大发展,出现了许多新型陀螺仪表。就测量飞机姿态和航向的陀螺仪表来说,目前在新型的飞机采用了全姿态组合陀螺仪或者采用陀螺稳定平台,作为飞机姿态和航向的测量中心给地平指示器、航向指示器、自动驾驶仪以及各种机载特种设备提供飞机姿态和航向信号。
   全姿态组合陀螺仪由垂直陀螺仪和航向陀螺仪组合而成。垂直陀螺仪安装在倾斜随动环内,以便俯仰和倾斜的测量范围均能达到360o。航向陀螺仪安装在俯仰随动环和倾斜随动环内,以便消除飞机俯仰和倾斜所引起的航向测量误差。这样组合的仪表可同时精确测得飞机的姿态和航向。
   近三十年来,在飞机姿态和航向的显示方面也有许多改进,出现了诸如全姿态指示器。指引地平仪(又称姿态指引指示器)和航道罗盘(又称航向位置指示器)等新型指示器,对飞机的姿态和航向进行综合显示和指引显示。

   随着飞机性能的提高特别是低空轰炸系统的出现,从飞行安全考虑,飞行员需要迅速地同时判断出飞机的姿态和航向。为能较好的适应日益复杂的飞行作战任务的需要,出现了把姿态和航向综合在一起显示的全姿态指示器。

   对于现代高速飞机,飞行员必须及时观察和分析飞机的姿态、航向、航道、高度、速度等各种飞行参数信息并在此基础上迅速作出下一步如何操纵飞机的决策。在飞机进场着陆阶段,矛盾更加突出,这时从观察、分析到决策所允许的时间是很短的。为使飞行员对飞机现有姿态、航向和航道等飞行参数能一目了然保证飞机在夜间和复杂气象条件下正常飞行以及安全着陆,出现了带有指引显示的指引地平仪和航道罗盘。这两种仪表是飞行指引系统的重要部件。
   为了更加形象地综合显示各种飞行参数和指令信息,在上述机电式指引地平仪和机电式航道罗盘的基础上,还出现了电子指引地平仪和电子航道罗盘等新型的电子综合显示仪表。


 

  



网  址aircraftdesign.nuaa.edu.cn

校  址:南京市御道街29号

咨询电话:84892177



©2004 南京航空航天大学飞机设计研究所               

关于双轮平衡小车的算法资料收集

[转1]
整个系统分为三大部分。
1.角度采集
2.电机数据运算
3.电机驱动

先说第一部分:角度采集.
这里我采用两种传感器:一种是陀螺仪(ENC03),另一种是加速度计(MMA7260).其实任何其中一
种都可以得出现在的车体倾斜角度值。为什么我们要选择两种呢?原因是这里有一种思想在里面:互补。

先说下陀螺仪:
陀螺仪属于测量旋转运动的传感器,其输出的是角度变化速度。即旋转的越快,输出量越大(不能
无限大,传感器上有极限指标);旋转的越慢,输出量越小(最小为0,即静止时)。
我们可以通过积分运算(累加),得出相对角度数据,这里假设为A。但是我们知道,积分是有严重
的累积误差的。我们可以一句话概括:陀螺仪短时间准确,长时间不准确。
再说下加速度计:
加速度计属于测量线性运动的传感器,其输出的是传感器沿某个轴向直线运行时的速度变化量。即
速度变化的越快,输出量越大(不能无限大,传感器上有极限指标);速度变化的越慢,输出量越小(最小
为0,即静止时)。这种特性用来做惯导研究很好。但是如何和我们的角度倾斜量相关呢?
我们知道加速度计测量的是加速度量,而地球上的物体都是受万有引力制约的,即我们时刻都受到
一个大小为g的竖直向下的加速度的作用。可能很多人都快看不下去了,我就直接贴图说明吧,如下:

我们通过反正弦运算,可以得到加速度计当前与重力方向的夹角数据,这里假设为B。
但是又有新的问题了。加速度计是测量线性运动的,即其对震动非常敏感。电机转动,所产生的震
动是不可小视的。所以其会有很大的噪声。而且当加速度计运动时,其输出量是运动加速度与重力加速度的
混合数据,这会严重影响角度计算的准确性。其特点用一句话概括:加速度计长时间较准确,短时间误差大。

现在我们重新审视一下,这两个传感器恰恰成互补关系。要得出比较准确的、长时间稳定的角度数
据,这两种传感器是缺一不可的。这也就是贯穿我整个数据采集过程的基本思想–互补。
我的具体做法是偏向于使用陀螺仪数据。原因是陀螺仪数据的噪声较小,短时间内误差小。而其长
时间的积分误差怎么解决呢?我的方法是使用加速度计角度数据B的平均值来校准陀螺仪的角度数据A.
直接伪代码如下:
A += (B-A)/k;
这里的K是衰减倍数。
其实就这么简单,这就实现了比较准确的角度数据的采集工作。

下面说下滤波问题。我们知道加速度计的噪声很大,我们这里采用卡尔曼的思想来滤波,另一种说法是数据融合。

其实这里就是两种传感器的典型互补了,用其算出来的角度数据相对来说很准了。
设加速度计换算出的角度数据为M,陀螺仪只采数据为s,陀螺仪相对加速度计的因子为k,上次加速度计经过滤波后的角度数据为M_2,卡尔曼
增益选择固定值为g.滤波后的角度数据为real_M;
那么滤波伪代码:
Temp=M_2+s*k;
real_M = Temp*g+(m-Temp)*(1-g);
M_2 = real_M ;

其实整个小车中,最关键、也最难的地方就是角度采集问题。准确的角度,只要一个P作用量就能轻松让小车站起来。

一部分:电机数据运算.
其实网上关于这部分的资料是最多的。我采用的是经典的PID算法。
理论我不讲了。我只讲讲实现过程。
这里如果先试试车体的稳定性,我们先只使用P作用。
现在以能立住为目标。

P,就是比例。假设当前角度偏差为error,目标角度为aim,比例系数为p,那么
PID计算伪代码为PID_result = (error-aim)*p;//(这里aim=0,即竖直状态)。
可以看出,如果车体倾斜度越大,那么计算出的PID的P值比例性的增大。

举实例说明(具体参数与车体和电机等有关):
我的电机为[email=200RPM@12V]200RPM@12V[/email],PWM的调制精度为-255~+255,那么当我的P参数p=30时,小车基本能够立住了(不足点就是总喜欢前后跑动)。

其实就这么简单。

剩下的I和D参数的调制方法,大家可以查阅网上的丰富的资料。I是减小误差的,D是阻碍小车姿态变化的。

3.电机驱动
这部分是最基础的。我才用的是L298驱动芯片。加了光耦隔离(原因是减速电机正反转切换时,产生的反电动势会造成单片机死机)。电机控制器为ATmega8,脉宽调制是使用的其内部自带的硬件PWM。为了简单起见,直接给两个轮子临时加上了码盘,而ATmega8也承担了由码盘数据得出电机转速和行程的数据任务。其与控制器ATmega168之间使用TWI(其实就是I2C)协议通讯。

 

 

[转2]

主控制流程如下:

下面对“过程一”和“过程二”作具体介绍:
? 过程一:加速度计算:
如图:

关于双轮平衡小车的算法资料收集 - 哲杰 - 哲杰

(原文件名:新建图像.JPG)  引用图片
点O为轮轴,点P为机体(系统)质心;
假设已知:机体质量m , 重力加速度g ,
机轴倾角θ(具体测法参见“实验报告”)。
设机体以加速度a加速,
则受到假想的惯性力F*= ma;
要使机体回复平衡状态,就要使得:
ΣM = 0 (M为力矩);
如图以点O(即轮轴)为转轴,支持力N,过转轴,力矩为零;摩擦力为被动力,且轮胎不与机身固连,不需要考虑。
即:mglsinθ+ F* = 0;
∴  a ≥ g?tanθ;
从而可以令:a = k?tanθ?g (k≥1);
进一步修正:
又知a应与P点相对于点O的角(线)速度(ω=d θ/d  t)成正比以获得更好的回复效果;
∴可以令  a = k1 ?ω?tanθ?g; (★)
其中:k1为常量,其取值可通过实验获得;ω为优化修正量,没有量纲。

?过程二:加速度实现:
假设轮子与地面不发生相对滑动,
∴  a = at    (at为车轮的线加速度);
∴  a = R?d ω/d t    (R为车轮半径);
而  J = ΣJi = ω?I    (J为角动量;I为车轮转动惯量。由于质点组(车轮)角动量方向相同,可以叠加。);
∴  at = R?d ω/d t = R/I?(d J/d t) = (R/I)?M ;
其中:  M = M1 – M0    (其中M0为阻力力矩,设其为定值;M1为马达产生的力矩);
∴  M1 = at?I/R + M0;
已知:M1M1与马达扭力F成正比,
而:P = F?V    (其中,P为功率,V为车轮转速);
∴  可以令:M1 = k?P/V    (*);
∴  P = (1/k)?V?(atI/R + M0)    (其中V可以通过测定轮轴的转速来获得);
进一步修正:
车轮可以近似看作均匀圆盘,∴I ≈ 2mR2    (其中m为单个车轮的质量)
a = at;       令:1/k = k2
∴  P = k2?V?(2mR?a + M0) ;
∴  单个车轮的输出功率为:P = k2?ma?V?R + 0.5 k2?V?M0 ;(★)
其中:k2 、M0均为常量,可从实验中归纳。
注明:由(*)可知,k的量纲为“m”,所以k2的量纲为“1/m”。
? 过程一与二的统一:
将两(★)式联立,可以得到:
P = k1 k2?tanθ?ω?mg?V?R + 0.5 k2?V?M0
其中,ω为优化修正量,没有量纲,k2有量纲(1/m)。

[转3]

Torque = AngleError * Kangle + AngularRate * Krate + VelocityError * Kvel + IntegratedVelocityError * Kivel

  • Angle error is the displacement from vertical (balance)
  • Angular rate is the rate of rotation (deg/sec)
  • Velocity Error is the difference between the commanded velocity and the actual velocity
    Integral Velocity Error is an accumulation of velocity errors used to maintain the forward velocity over uneven terrain.
  • The various Kxxx are the gains for each term.  The value range from 1-30 or so and are dependent upon lots of other factors like the mass of the robot, the resolution of the encoders, the loop rate for controlling the motors, etc.  I determined all of my values by trial and error.

http://e-book2003.blog.163.com/blog/static/17552073201082995130537/