摘要: 在浏览IBM“开源机器人技术工具包”时,无意中发现了ODE(Open Dynamic Engine-开源动力学引擎),由此便产生了深入了解的兴趣,同时也发现与之相关的各种资料、文档、探讨等等在国内的网络上几乎为零。既然是一款开源的软件,那么与之相关的各种学习、研究也都有免费公开的义务,因此也就有了这一系列的博文。 希望能将学习的过程中遇到的各种问题和产生的各种想法记录下来,跟志同道合的朋友分享、探讨,共同学习、共同进步。这篇博文的目的就是希望能为即将到来的学习阶段开个好头,也希望能通过博客这个平台结识更多的朋友,分享更多的观点,得到更多的成长。。。非常欢迎对各种机器人技术有兴趣的朋友能够... 阅读全文
posted @ 2012-03-11 16:33 暮夕 阅读(1138) 评论(0) 推荐(1) 编辑
摘要: 这一部分的承接前面的关节类型和相关函数(中)6.4.8 活塞关节活塞关节示意图如图 11所示:图 11:活塞关节活塞关节类似于插销关节,只是它可以绕着平移轴旋转而已。系统默认的轴心参数为:Axis: x=1, y=0, z=0 void dJointSetPistonAnchor (dJointID, dReal x, dReal y, dReal z);void dJointGetPistonAnchor (dJointID, dVector3 result);设置活塞关节的锚点参数。关节会尽力保持这一点相对固定在body2上,坐标参数必须是世界坐标。如果关节上没有连接任何刚体,则这个函数不 阅读全文
posted @ 2012-06-11 17:34 暮夕 阅读(1424) 评论(0) 推荐(0) 编辑
摘要: 这一部分主要针对不同类型的关节,简单介绍一些相应的函数6.4 关节参数设定函数6.4.1 球窝关节(Ball and Socket)如图 4所示即为球窝关节示意图:图 4:球窝关节void dJointSetBallAnchor (dJointID, dReal x, dReal y, dReal z);设置关节的锚点位置。关节会努力保持每个刚体都连接在这一点上,函数输入的坐标指定为世界坐标。如果没有刚体连接到关节上,这个函数就不会起任何作用。void dJointGetBallAnchor (dJointID, dVector3 result);获取关节的锚点位置(世界坐标)。这个函数返回的 阅读全文
posted @ 2012-06-04 11:12 暮夕 阅读(858) 评论(0) 推荐(1) 编辑
摘要: 这一部分主要是介绍一些在ODE中,跟关节相关的函数6.1 关节的创建和销毁dJointID dJointCreateBall (dWorldID, dJointGroupID);dJointID dJointCreateHinge (dWorldID, dJointGroupID);dJointID dJointCreateSlider (dWorldID, dJointGroupID);dJointID dJointCreateContact (dWorldID, dJointGroupID, const dContact *);dJointID dJointCreateUniversal 阅读全文
posted @ 2012-06-02 15:06 暮夕 阅读(638) 评论(0) 推荐(1) 编辑
摘要: 非常抱歉,忙乱的毕业季打断了对ODE的学习,这段时期暂时停止了对ODE手册的翻译学习,实在是迫不得已.进入六月,又恰逢6·1儿童节,算是送给自己的一个礼物吧,重新启动对ODE手册的翻译学习。希望此后的日子里能坚持不懈地将对ODE手册的翻译学习顺利完成;-) 阅读全文
posted @ 2012-06-01 10:30 暮夕 阅读(237) 评论(0) 推荐(0) 编辑
摘要: 这一部分主要是介绍一些在ODE中,跟刚体相关的函数5.1 刚体的创建和销毁dBodyID dBodyCreate (dWorldID); 在一个指定的world的原点(0,0,0)处创建一个质量参数默认的刚体,并且返回其ID(dBodyID)。void dBodyDestroy (dBodyID); 销毁一个指定的刚体,同时与其相连接的所有关节都会被遣送到“地狱边境”(也就是说,它们跟仿真的对象不再保持连接,也不会影响到仿真对象,但并不是说会删除掉)。5.2 位置和姿态void dBodySetPosition (dBodyID, dReal x, dReal y, dReal z); v.. 阅读全文
posted @ 2012-03-24 12:59 暮夕 阅读(850) 评论(0) 推荐(0) 编辑
摘要: 4.1 常用函数 在ODE中,world对象是一个用来容纳刚体和关节的容器,处于不用world中的对象之间不能进行交互。例如:在两个不同world中的刚体就不可能发生碰撞。在同一个world中的所有对象都处于同一个时间点上,因此使用多个独立world的一个理由就是用来模拟不同等级的系统。但是大多数的应用都只需要一个world。dWorldID dWorldCreate(); 用于创建一个新的、空白的world并且返回它的ID。dWorldID dWorldDestroy(); 销毁一个world和它里面的所有东西,像在world中的所有刚体,不属于任何关节组中的所有关节都会被销毁掉。在关... 阅读全文
posted @ 2012-03-21 21:28 暮夕 阅读(811) 评论(0) 推荐(0) 编辑
摘要: 3.1 基本数据类型 ODE库可以被编译为使用单精度或双精度浮点数据类型。使用单精度时,模拟在占用较小内存空间的同时会取得较快的速度,但是会引起更多的数值型误差而且会引起可见的错误。另一方面,在使用单精度时会降低模拟的精确度和稳定性(必须说明哪些因素会影响到模拟的精确度和稳定性)。浮点型数据类型有dReal和其它一些常用的类型dVector3、dMatrix3、dQuaternion。矢量类浮点型数据类型都是通过简单的dReals数组实现的。它们的设计惯例如下:名称实现格式dQuaterniondReal[4][w,x,y,z]w表示实数部分,(x,y,z)表示向量部分dVectors4dR. 阅读全文
posted @ 2012-03-19 21:39 暮夕 阅读(757) 评论(0) 推荐(0) 编辑
摘要: 在Windows平台上做软件开发的同行都知道,有一款“简约而不简单”的源代码编辑、浏览、分析软件Source Insinght。这款软件的特色就不再这里做详细介绍了,套用一句经典广告词:“不用不知道,用了吓一跳”。无可厚非,这是一款"牛"系列的软件,无可厚非的另一点是:需要¥(不言自明……大家都懂的)。今天要介绍的cscope呢,是一款主要适用于Linux平台的软件,毋庸置疑的是这款软件是开源的,毋庸置疑的另一点是:不需要¥(无需多说……大家多支持开源软件)。它的功能和Source Insight相似,用于源代码的编辑、浏览、分析,是Linux程序员用做软件开发的“利器”。 阅读全文
posted @ 2012-03-15 12:31 暮夕 阅读(1878) 评论(0) 推荐(1) 编辑
摘要: 说明:本手册翻译自ODE官方Manual 2.1 背景介绍 我会在这里陆续写一些关于刚体动力学和机器仿真的背景知识。但是在此期间,请参看Baraff's的SIGGRAPH(Special Interest Group on Computer Graphics:美国计算机协会绘图专业组)指南。 刚体:从计算机仿真的角度来看,一个刚体包含若干个属性,其中一些属性会随着时间的改变而发生改变:刚体的位置:用向量(x,y,z)表示刚体的位置(基准点),通常情况下基准点的选取必须跟刚体的质点一致刚体的方位:用一个四元组(qs,qx,qy,qz)或者一个2x2的旋转矩阵表示刚体的线速度:用向量(vx 阅读全文
posted @ 2012-03-13 22:18 暮夕 阅读(1442) 评论(0) 推荐(1) 编辑
摘要: 注:本篇博文转载自 开源小站 之前看过一篇东西,大致上说:之所以PHP这么流行,主要是因为PHP太“下贱”。门槛太低,什么样的写法都有。这些年接触下来,也颇有共鸣。正巧赶上最近网上很流行“普青、文青、2B青”的恶搞,抱着“回字到底有几种写法”的态度,对同样的问题进行各种风格的编码,为了更多的体现算法,我剔除了注释。只为搏大家一笑,希望大家也不要拓展开来了。题目:1只羊第二年后开始繁殖,每年一胎,每胎一只,直到第5年死亡,列出前十年的羊的数量。首先照例是普青: 1 <?php 2 function foo($n, $echo = true) 3 { 4 $i = 1; 5... 阅读全文
posted @ 2012-03-13 10:35 暮夕 阅读(192) 评论(0) 推荐(0) 编辑