移动机器人3D仿真软件的设计与实现精.docx
- 文档编号:12631348
- 上传时间:2023-04-21
- 格式:DOCX
- 页数:12
- 大小:24.50KB
移动机器人3D仿真软件的设计与实现精.docx
《移动机器人3D仿真软件的设计与实现精.docx》由会员分享,可在线阅读,更多相关《移动机器人3D仿真软件的设计与实现精.docx(12页珍藏版)》请在冰豆网上搜索。
移动机器人3D仿真软件的设计与实现精
在研究移动机器人控制算法和多机器人协作控制算法时,常采用仿真软件来提高算法的开发效率并减少实验成本。
仿真软件可直接利用物理引擎对刚体对象的运动进行仿真,物理引擎为刚体赋予真实的物理属性,以此对物体的运动、旋转和碰撞进行仿真计算。
目前主流物理引擎有Havok(HavokGameDynamics、PhysX(PhysicsEngineMiddleware、Bullet(BulletPhysicsEngine和ODE(OpenDynamicsEngine等[1],Havok是业界功能最全面的物理仿真解决方案,主要应用于实时碰撞计算、动力学约束求解和车辆综合解决方案等领域;PhysX的特点是适合计算量比较大的物理模拟计算;Bullet的特点是具有最先进的碰撞检测技术,主要用于柔体动力学和刚体动力学的仿真;ODE的特点是具有高级的关节类型和碰撞检测整合系统,它适合于对机电一体化设备和移动机器人的模拟,并且易于与C/C++API配合使用,具有快速性、强健性和可移植性等特点[2]。
在采用物理引擎生成动力学世界之后,需利用图形绘制程序将场景绘制到显示终端[3]。
常用的图形绘制函数库有OpenGL(OpenGraphicsLibrary、DirectX(DirectEx-tension和Irrlicht(IrrlichtEngine等,OpenGL主要应用于专业高端绘图领域[4],具有使用简便、效率高和可移植等特点;DirectX是微软开发的三维绘图软件包,性能上已经超过OpenGL,但其接口采用COM方式;Irrlicht为高性能实时3D引擎,它可以提供在商业级3D引擎上才具有的艺术特性。
综上所述,在不影响软件性能的前提下,为了缩短仿真软件的开发周期,本文采用ODE物理引擎和OpenGL来开发移动机器人三维仿真软件。
1软件特性
(1采用基于面向对象技术实现,软件操作简单,易于维护和功能扩展;
(2可以导入x格式和3ds格式的三维模型文件;
移动机器人3D仿真软件的设计与实现
刘润丹1,王华1,付根平2
(1.阳江职业技术学院机电系,广东阳江529566;
2.广东工业大学自动化学院,广东广州510090
摘要:
在机器人技术研究中,为了提高机器人控制算法的开发效率,提出移动机器人三维仿真软件的设计方案并加以实现。
该软件采用ODE物理引擎生成动力学世界和实现碰撞检测,提高了仿真速度和精确度,同时采用OpenGL绘制三维图形,改善了图形显示效果。
仿真实例证明,该软件具有一定的实用价值。
关键词:
移动机器人;三维仿真;ODE;OpenGL;控制算法
中图分类号:
TP242文献标识码:
A文章编号:
1674-7720(201104-0004-04
Developmentof3Dsimulationsoftwareformobilerobot
LiuRundan1,WangHua1,FuGenping2
(1.DepartmentofMechanicalandElectrical,YangjiangVocationalandTechnologyCollege,Yangjiang529566,China;
2.CollegeofAutomation,GuangdongUniversityofTechnology,Guangzhou510090,China
Abstract:
Inroboticsresearch,inordertoimprovethedevelopmentefficiencyoftherobotcontrolalgorithm,three-dimensionsimulationsoftwareisdesignedandimplementedformobilerobot.Thesoftwareusesopendynamicsenginetogeneratedynamicworldandrealizecollisiondetection,itishelpfultoimprovethesimulationspeedandaccuracyforusingODE,whilethree-dimen-sionalgraphicsaredrawnonthescreenwithOpenGLforthepurposeofimprovinggraphicdisplay.Thesimulationexampleshowsthatthesoftwarehasacertainpracticalvalue.
Keywords:
mobilerobot;3Dsimulation;ODE;OpenGL;controlalgorithm
图1机器人体坐标系和速度分解示意图
(3允许物体同时实现多个移动操作,在每个运动方
向都有加速度、减速度和最大速度等运动属性;实现碰撞检测、移动机器人和虚拟场景的图形化显示;
(4支持实时调试功能;3D动画和仿真计算结果同步且真实对应;绘制仿真环境的二维地图和物体运动轨迹。
(5提供与外部软件连接的接口,即可以通过ODBC与外部数据库相连,或通过Socket接口与外部设备相
连,实现进程之间的通信;
(6软件接口的多样性和扩展性,即可通过游戏手柄、
键盘来输入控制信息、模型参数和仿真参数等;仿真数据的保存输出。
2仿真软件的关键技术
2.1移动机器人的速度分解公式
对于地面移动机器人平台,可根据车体的运动方式和实验数据求取其速度分解公式。
本文采用由三个全向轮驱动的移动机器人[5],规定机器人体坐标系是以机器人的正前方为x轴正方向,逆时针旋转90°为y轴正方向,并以三个轮系的机械中心为原点,机器人体坐标系和速度分解如图1所示。
图中α=30°,β=60°,R=20cm为驱动轮中心到车体中心的距离。
由图1可得机器人的速度分解公式为:
v1=(Vxsinβ+Vycosβ+VrR×k
v2=(-Vxcosα+Vysinα+VrR×kv3=(-Vxcosπ2-Vysinπ2
+VrR××××××××××××××
k
(1
其中,速度比例系数k=0.035,线速度单位为m/s,角速度单位为rad/s。
2.2三维物体建模
ODE物理引擎提供球体、盒子、胶囊、平面和圆柱等
几何体。
在创建出一个几何体后,其中心一般落在仿真环境坐标系的原点上。
在对移动机器人进行建模时,需要使用盒子和圆柱两种几何体,盒子需要指定3个参数,即长、高、宽;对于圆柱而言,则需指定长度和半径2个参数。
在动力学世界中,以Geom代表物体几何体,以
Body代表虚拟场景中的对象。
软件可以通过调用ODE
内部函数来检测几何体和对象的对应关系,也有函数用于检测对象之间是否存在连接。
下面以创建盒子物体为例,说明单个物体的建模方法。
首先调用dBodyCreate函数创建出给定空间中的刚体对象,再调用dBodySetPosition和dBodySetRotation两个函数,调整该对象在空间中的位姿,接着调用dMassSet-
BoxTotal和dBodySetMass两个函数设定该对象的质量属性,最后调用dCreateBox函数创建相应尺寸的盒子几何
体,并调用dGeomSetBody函数将该几何体与对象关联起来。
在创建出单个对象后,往往需要利用各种关节将不同对象连接起来。
ODE物理引擎提供5种类型的关节,分别为铰链型、球-球窝型、滑竿柱型、固定型和铰链2型等。
其中铰链型为合页关节,滑竿柱型为插销关节,铰链2型则是带有轴的关节,这些关节都有内置的马达。
本文选用铰链关节来连接驱动轮和机器人车体,采用固定关节构建机器人车体结构。
下面以使用铰链关节连接两个对象为例,说明创建关节的方法。
在调用dJointCreateHinge函数创建铰链关节对象后,再调用dJointAttach函数指定用该关节连接的两个物体对象,然后调用dJointSetHingeAnchor函数设定旋转轴的中心点坐标,并调用dJointSetHingeAxis设定旋转轴的方向。
为了让刚体对象能够在仿真环境中运动起来,ODE提供了3种方法:
(1调用dBodyAddForce、dBodyAddTorque等函数给刚体施加力的作用;(2调用dJointSetHingeParam函数来改变内置马达的转速,同时需指定该函数的第二个输入参数为dParamVel;(3调用dBodySetLinearVel和d
BodySetAngularVel两个函数直接给物体设定线速度和角
速度。
此外,在ODE仿真环境中,可通过两种方式来模拟弹簧-阻尼系统:
(1通过设置ERP(ErrorReductionPa-
rameter和CFM(ConstraintForceMixing两个参数来实
现,ERP为每一仿真循环中的修正误差,取值范围为0~0.8,默认取值为0.2;CFM代表物理引擎的全局混合约
束力,它反映物体表面的柔软程度,其取值范围为10e-9~
1;(2利用动力学方程来求解,即胡克定律:
F=-kx
(2
其中k为物体的劲度系数,x为物体形变量。
考虑阻尼
系数时,动力学方程为:
md2xdt2
=-kx-γdxdt
(3其中γ为阻尼系数,它与物体的形状以和周围性质有关。
综上所述,典型ODE仿真过程为[6]:
(1生成一个动力学世界,并在该世界中创建物体;(2设置物体状态(如质量、质心位置和姿态等,并
在动力学世界中创建关节;
(3将关节与物体绑定起来,为所有的关节设置参数;(4生成碰撞检测空间,并为需要作碰撞检测的物体
生成碰撞几何体;创建一个容纳关节的关节组;
(5循环处理过程:
①在物体上施加力;
图2软件框架和处理流程
图3仿真循环的处理流程
②根据需要调整关节参数;
③调用碰撞检测,得到碰撞点和碰撞的物体;④为每个碰撞点的碰撞创建一个接触关节,并将其
放入关节组;
⑤执行一个仿真步骤;
⑥清空接触关节组中的关节;(6销毁动力学世界和碰撞世界。
2.3三维图形的绘制
OpenGL绘制图形的基本操作步骤[4]:
(1设置像素格式:
设定OpenGL绘制风格、颜色模式
和颜色位数等重要信息。
(2建立模型:
根据基本图元建立景物的三维模型,
并对模型进行数学描述。
(3舞台布置:
把景物放置在三维空间的适当位置,
设置视点、视角和投影模型等。
(4效果处理:
设置物体的材质,加入光照和光照条
件。
(5光栅化:
把景物和其颜色信息转化为可在计算机
屏幕上显示的像素信息。
在绘制图形时,需注意坐标系的变换,否则很容易导致绘制失败。
OpenGL定义了两个坐标系:
世界坐标系和当前绘图坐标系。
世界坐标系是固定不变的,规定以屏幕中心为原点,面对显示终端,向右为x正轴,向上为
y正轴,向终端外面为z正轴。
当前绘图坐标系是绘制
物体时的参考坐标系。
仿真软件完成初始化后,世界坐标系与当前绘图坐标系是重合的。
在调用glTranslatef、
glRotate等变换函数对绘图坐标系进行平移和旋转后,
绘图坐标系会在原来的基础上做出相应改变。
此时,若调用gluSphere、glVertex3f等绘图函数,绘图函数是在改变之后的绘图坐标系上进行绘制。
如若要让绘图坐标系与世界坐标系再次重合,可以调用glLoadIdentity函数。
此外,可以调用glColor3f(r,g,b函数设置绘图函数所使用的颜色,如果没有再次调用该函数,则绘制出的图形颜色将保持原先颜色不变,rgb三个颜色分量的取值范围为0.0~1.0。
3软件框架
软件框架和其处理流程如图2所示,软件仿真循环的处理流程如图3所示,下面简述主要处理过程的实现思路和方法:
(1软件的初始化
软件的初始化工作主要包括:
从配置文件读入移动机器人的数量、软件运行时所需文件的路径和绘制窗口大小等参数;导入虚拟场景所需的素材,如声音、纹理和
3ds模型等,本文采用lib3ds库来读取3ds文件[6];初始化ODBC接口,获取ODBC环境句柄,实现进程与数据
库的数据交互;初始化游戏手柄和UDP通信网络;初始化ODE环境,创建动力学环境和碰撞检测空间,创建移
动机器人和仿真场景。
(2物体运动参数的接收
在仿真循环中,利用UDP协议实现本地进程与其他进程之间的通信,该软件也可以从键盘、游戏手柄和网络数据库读入机器人的动作指令。
(3物体碰撞检测
本文将与物理引擎有关的操作函数封装成动态链接库,通过使用动态链接库技术,软件可以实现模块化,即由相对独立的组件来组成整个软件。
这简化了软件项目的管理,而且能够节省内存,也有助于资源共享和代码更新移植。
ODE的碰撞检测引擎需要给定两个物体的形状信息。
在每一仿真循环中,调用dSpaceCollide函数获取可
能发生接触的物体,再由该函数指定的碰撞回调函数
nearCallback将接触点信息传给用户。
由此,用户可根据
自身需要建立物体间的碰撞连接点,每个连接点都有相
图4在仿真平台上检验避障算法
起始位置
障碍物
终点位置
机器人运动轨迹
图5采用不同控制算法的机器人位姿变化轨迹
机器人位姿的归一化f(x、f(y、f(h
纵坐标轨迹f(y横坐标轨迹f(x朝向解轨迹f(h
仿真步骤
仿真步骤
纵坐标轨迹f(y横坐标轨迹f(x朝向解轨迹f(h
机器人位姿的归一化f(x、f(y、f(h
(a采用比例控制的输出结果
(b采用比例-微分控制的输出结果
应的dContactGeom结构,该结构保存着碰撞点的位置和两个物体互相进入对方的深度。
为了提高仿真速度,软件使用较少的关节和较少的接触面,如果条件允许,也可以使用无摩擦或者粘性接触面。
下面给出碰撞回调函数中关于接触面的参数设置:
surface.mu=3.0;//库仑摩擦力系数surface.mu2=0.0;//库仑摩擦力系数2
surface.slip1=0.05;//摩擦力1方向的滑动摩擦力surface.slip2=0.05;//摩擦力2方向的滑动摩擦力
surface.bounce=0.9;//反弹系数
surface.bounce_vel=1.0;//反弹所需要的最小碰撞速度
surface.soft_erp=0.2;//接触点法线方向“柔软”参数surface.soft_cfm=1e-4;
//接触点法线方向"柔软"参数
(4三维图形绘制
在仿真软件中,与绘制图形有关的操作函数都被封装成动态链接库,该动态链接库只向仿真软件提供若干个接口,如在绘制机器人时,只需根据机器人的不同部位,设定相应的绘制参数,然后轮流调用dsDrawCylinder、
dsDrawBox两个函数即可实现,dsDrawCylinder函数的输
入参数分别为物体位置、朝向、长度和半径,而dsDraw-Box函数的输入参数为位置、朝向和尺寸;在绘制从x文件和3ds文件导入的三维模型时,只需调用dsDraw-TriangleD函数即可。
4仿真实例
本文在VS2008平台上开发仿真软件,ODE版本为
0.9,OpenGL版本为1.0,软件为控制台程序。
在检验路径规划算法或避障算法时,可先创建一个虚拟足球场,再设定机器人初始位置的绝对坐标为(-9.0,
-5.0,目的地绝对坐标为(5.5,5.0,并在路径的中间布
置8个或更多的障碍物,障碍物直径为50cm,其位置参数可以人为指定,也可以随机产生,然后在虚拟场景的二维地图上,以宏观鸟瞰的远程视野,对避障算法的仿
真结果进行观察、比较和分析,仿真效果如图4所示。
若需了解算法运行的细节,可以直接观察3D环境的仿真过程,或通过分析记录下的仿真数据来比较算法的优劣。
而在检验多机器人协作算法时,可同时利用三维环境和二维全局地图来对算法性能进行比较,以由多个移
动机器人组成的足球队为例,移动机器人需按照协作算法来实现站位[7]。
此外,在采用PID控制算法对机器人位置进行控制时,有比例增益、微分增益和积分增益三个参数需要整定测试[8],此时,可以利用仿真软件对参数进行步估计。
实验方法是:
先设定初始位置和目的地位置,然后让机器人以最快速度向目的地移动,当到达目的地后,就停止不动。
在机器人移动过程中,记录下机器人在每一仿真步骤中的位姿(x,y,θT,并将位姿数据归一化,以便能够将三维的向量绘制在同一坐标系下,同时记录机器人走完设定路径所需的时间。
图5(a为采用比例控制算法的机器人位姿变化轨迹,机器人走完该路径所需时间为16.239s,图5(b为采用比例-微分控制算法的变化轨迹,所需时
(下转第10页
图2连接数据库运行结果图
TextBoxotb=(TextBoxgvr.FindControl("txtNum";intcount=Int32.Parse(otb.Text;stringBookID=gvr.Cells[1].Text;hashCar[BookID]=count;}
Session["ShopCart"]=hashCar;bind(;}
3.2利用ADO.NET访问数据库
这里以ADO.NET访问SQLSERVER数据库(wzf为例,说明ADO.NET访问数据库的具体步骤。
在Default.aspx页添加一个Button控件和一个GridView控件,分别
用于执行连接数据库和显示数据。
具体代码如下:
publicpartialclass_Default:
System.Web.UI.Page{
protectedvoidljbutton_Click(objectsender,EventArgse{
stringConStr="server=(local;userid=sa;pwd=123;
database=wzf";//设置连接字符串SqlConnectioncon=newSqlConnection(ConStr;con.Open(;//打开数据库连接stringSqlstr="select*fromMember";
//执行SQL命令
SqlDataAdapterada=newSqlDataAdapter(Sqlstr,con;DataSetca=newDataSet(;ada.Fill(ca;
//用DataAdapter对象的执行结果填充DataSet对象的
数据表,命名为ca;
GridView1.DataSource=ca;GridView1.DataBind(;//数据绑定
con.Close(;//关闭数据库连接
}
}
结果如图2所示。
农产品网上交易成功案例很多,例如:
中国粮油食品信息网2003年网上采购成交470次,交易额达到
5900万人民币和6000万美元。
其中PP袋网上采购38
次,占交易总比例的30%[2];农产品交易系统的建立为广大用户提供了和时、准确的供求信息,有利于更好的服务于“三农”。
参考文献
[1]孙华平.SkyMouse天文服务搜索整合系统的设计与实
现[D].北京:
中国科学学院,2007.
[2]冯稚进.云南农产品电子商务发展研究[D].昆明:
昆明理
工大学,2007.
(收稿日期:
2010-10-31
作者简介:
王钟斐,女,1983年生,助教,硕士研究生,主要研究方向:
网络安全。
(上接第7页
间为14.026s。
从图5的结果可看出,采用比例控制算法的系统输出无超调,而采用比例-微分控制算法的系统,其控制目标会出现微小超调,但机器人的响应速度明显提高,尤其是机器人朝向角的控制,能够更加快速准确地跟随给定值。
在移动机器人控制技术和多机器人协作技术的研究中,为了能够对算法参数进行有效检验和测试,本文利用ODE、OpengGL和VS2008开发出移动机器人仿真软件。
该软件采用ODE生成动力学世界和模拟物体碰撞,充分利用了ODE的快速性和精确性,仿真软件还采用高效的图形接口OpenGL来绘制图形,提高软件的图形处理能力,改善图形显示效果。
仿真实例证明,该软件具有较好的扩展性和实用性。
参考文献
[1]胡宇慧.3D游戏引擎中若干关键技术和算法的研究与
分析[D].上海:
上海师范大学,2006.
[2]高嵩.基于OGRE和ODE的驾驶模拟系统的设计与实
现[D].武汉:
武汉理工大学,2006.
[3]欧阳慧琴,陈福民.物理引擎与图形渲染引擎绑定的研
究与实现[J].计算机工程与设计,2008,29(21:
5580-
5620.
[4]蒋东翔.基于OpenGL的3D网络游戏开发中关键技术
的研究[D].哈尔滨:
哈尔滨工程大学,2008.
[5]TAKEMURAY.Developmentof“Hibikino-Musashi”omni-directionalmobilerobot[J/OL]..
[6]DEMURAK.3DSLoaderforopendynamicsengine-0.0
[CP/OL]..
[7]邢关生,张建勋.移动机器人网络运动协调的控制与仿
真[J].系统仿真学报,2010,22(03.
[8]杨智,朱海锋,黄以华.PID控制器设计与参数整定方
法综述[J].化工自动化和仪表,2005,32(05:
1-7.
(收稿日期:
2010-12-31
作者简介:
刘润丹,男,1981年生,助教,硕士,主要研究方向:
智能控制技术、机器人技术和图像处理。
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 移动 机器人 仿真 软件 设计 实现