基于Open Inventor的座椅压力图形化显示
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Software Application •
软件应用
Electronic Technology & Software Engineering 电子技术与软件工程• 77
【关键词】座椅 Open Inventor 图形化显示 VC++
1 引言
座椅在人们的生活中十分普遍,办公室工作的人大部分工作时间是在座椅上度过的。
长时间的坐姿容易使人产生疲劳。
大量研究表明,一个设计良好的座椅,可以有效地缓解长时间工作带来的疲劳。
以往在设计座椅的时候,设计师们往往采用传统的人机工程学理论和方法来评价座椅是否舒适,这种评价方式的客观性很容易受到测试者自身的影响,很少考虑到座椅和人体之间的压力分布情况。
通过压力传感器获得人体与座椅之间的压力分布数据,并通过上位机直观的展现出来,设计人员就能够了解人体各部位所承受的压力,进而改善座椅的结构。
如何有效地表达和显示人体对座椅压力的分布情况将是设计人员面临的一大问题。
因此,对于基于Open Inventor 的座椅压力图
基于Open Inventor 的座椅压力图形化显示
文/周浩杰 高峰 石金继
形化显示上位机软件的研究就很有必要了。
通过该上位机软件设计人员可以直观地观察人体和座椅接触面之间的压力分布情况,从而设计出更加人性化、更加舒适的座椅,减轻座椅给人体带来的不舒适感。
2 Open Inventor简介
Open Inventor 是一个面向对象的、广泛应用于三维场景的图形软件开发包。
它作为一组组件库,能够以最少的代码编写出强大的图形硬件功能的程序。
Open Inventor 构建复杂三维场景一般比OpenGL 方便得多。
这是因为Open Inventor 构建三维场景的方式完全不同于OpenGL ,这种构建方式类似于“搭积木”的方式。
通过对象与对象之间的直接拼接、组合来构造复杂、优美的三维场景是十分方便、快捷、直观的。
3 软件的功能分析及流程设计
3.1 软件功能分析
上位机软件的主要任务是将一系列抽象而杂乱的数据通过一定的处理转化为可视的、直观的三维图像,从而实现对座椅压力分布情况的监测,通过对座椅压力分布情况的进一步分析,从而能够了解座椅的舒适性。
因此,上位机软件需具备以下几项主要功能:
(1)样本数据的显示。
设计人员可以清楚的观察到人体和座椅之间指定位置处的压力数据。
(2)实时数据三维图形化显示。
设计人员可以实时且直观地观察人体与座椅之间的压力分布情况。
3.2 软件开发流程
根据实际功能的需要,对座椅压力图形化显示上位机软件的开发流程进行设计,从而实现采集数据在下位机与上位机之间的数据传输与处理。
接收到的数据显示方式有两种:一种是样本数据在ListCtrl 控件上直接显示,另一种是先在样本数据的基础上利用MATLAB 三次贝塞尔插值函数获得新数据,再将这些新数据经过Open Inventor 的处理,从而实现数据图形化显示。
开发流程如图1所示。
该流程分为三个步骤。
第一步,STM32通过压力传感器获取人体对座椅的压力数据并传入到串口内存中。
第二步,通过通信协议将上位机和下位机连接在一起,并将测得的数据实时地传送给上位机软件。
第三步,上位机软件完成数据的接收、数据的显示和数据三维图形的绘制。
4 上位机程序设计
4.1 窗口视图静态分割程序设计
在MFC 的SDI 视图中,默认情况下一个
文档只能对应于一个视图,这样不能很好的完
成数据的显示功能。
为了更好的显示样本数据和座椅压力图形化的分布视图,这就需要有两个视图类,可以利用CSplitterWnd::CreateStatic 对视图进行静态分割,同时使用CreateView 函数添加新视图。
将原始视图分割为两个视图,CFormView 视图类用来显示样本数据,CView 视图类用来绘制数据压力分布的三维图形。
4.2 MATLAB插值程序设计
基于样本数据不足以绘制出平滑、精致
图1:软件系统开发流程图
图2:上位机软件人机界面
<<下转78页
78 •电子技术与软件工程 Electronic Technology & Software Engineering
图像与多媒体技术
• Image & Multimedia Technology
的三维曲面,因此,需要利用某种插值函数对
样本数据进行处理。
Visual C++ 2008本身并没有直接用来进行插值的函数,而MATLAB 是一个强大的数学和图像处理工具。
为了使Visual C++ 2008能使用MATLAB 中的功能函数,需要对其进行一定的处理。
它的基本思想是:把MATLAB 中的功能模块作为一个函数,再通过MATLAB 的某些指令,将函数转化成动态链接库(.dll )文件,Visual C++ 2008便可直接调用特定的接口函数,从而实现调用MATLAB 中的功能函数的目的。
4.3 样本数据显示程序设计
在类向导中添加CSplitterWndView 类,基类选择为CFormView ,该视图显示样本数据。
为了更直观、条理的显示样本数据,这里使用ListCtrl 控件。
4.4 座椅图形化显示程序设计
在类向导中添加CPaintOIV 类,基类选择为CView ,该视图显示样本数据。
文档视图框架将数据处理和视图显示联系在一起,当文档数据改变时,在视图类中调用文档UpdataAllViews 成员函数即可以更新视图。
5 运行效果
上位机软件运行界面如图2所示。
该上位机软件可以实现如下功能:
(1)通信端口可选:可以从COM1、COM2、COM3、COM4、COM5、COM6、COM7中选择合适的通信端口。
默认端口为COM1;
(2)实时、准确地将下位机上传的数据显示出来;
(3)将接收到的实时数据进行三维图形绘制,显示数据的大小和分布。
6 结论
通过获取人体对座椅的压力数据,并以直观的三维图像显示,座椅设计人员可以很好地了解座椅设计的是否合理,从而对座椅进一步改良,设计出更加舒适的座椅。
本文对座椅压力分布的图形化显示展开了研究,取得如下成果:
(1)使用C++语言和Visual C++ 2008开发平台开发软件,并进一步完成和Open Inventor 的混合编程。
(2)使用Visual C++ 2008的可视化界面,根据功能需求设计出座椅压力图形化显示上位
<<上接77页
机软件,实现了对座椅压力数据的直观、形象的三维图形实时显示等功能。
(3)对上位机软件进行实时测试,运行状态良好。
参考文献
[1]叶佳桐,谭研.汽车驾驶员座椅舒
适性仿真方法[J].中国农业大学学报,2016,8(04):35-37.
[2]王琨.基于CAN 总线老人服务机器
人通信方法的实现[J].现在制造工程,2016,23(02):45-48.
[3]蔡磊.基于Open Inventor 产品三维可视
化系统研究[D].重庆:重庆大学,2012.[4]张立科.Window API 函数参考手册[M].
北京:人民邮电出版社,2002.
作者简介
周浩杰(1995-),男,大学本科学历。
现供职于雅砻江流域水电开发有限公司。
研究方向为水电厂监控系统。
作者单位
雅砻江流域水电开发有限公司 四川省成都市 610051
【关键词】校园视频监控 高空抛物 灰度图 双椭圆模型
我国对于学校安全的保障建设日趋重视,对于校园内部诸如人员踩踏、高空抛物等安全问题的发现、响应与存证都有着很高的需求。
使用前端监控设备,结合后端实施软件分析,可以对高空抛物现象进行有效的发现、响应与
基于双椭圆空间模型的校园视频监控高空抛物分析的应用
文/宁家锋1,2
存证。
1 高空抛物监测的需求
高空坠物按照掉落原因,可以分为坠落、碰落和抛落三种情形。
其中存在主观恶意的往往是抛落现象。
校园高空抛物现象,主要指的是校园楼层高处扔出来的各种生活垃圾、废弃物。
针对这种现象,学校管理人员需要能够通过监控点位的安装,明确知晓物品是从哪件宿舍、窗口抛出,以便进行证据保存以及责任人的确认。
常规立杆办法是从地面向上仰角监视
和从天面层向下俯角监视。
另一方面,对学生宿舍窗口的监控势必涉及到宿舍内部环境及人员形象的入镜。
处于对学生隐私的保护,要求监控布点既要达到高
空抛物的来源辨识,又要避免对房间内部(包含晾台)的直接拍摄。
为了解决上述矛盾,需要对监控点位的合理布置,对宿舍楼进行高空抛物检测,做到实时预警、实时抓拍、支持多个目标并发监测、
高空抛物事后取证等功能,便于校方对校园环境、学生、安全事故高效管理,避免发生安全事故和群体性事件。
2 高空抛物监测的信息化环境
2.1 前端摄像头
高空抛物模块视频数据来源是校园建筑周边安装的摄像头,需要根据实地情况进行安装。
可以采用的前端安装点位可以采用分段式监控摄像机部署模式或平行楼宇辅助监控摄像机部署模式。
通过前端采集设备,可实现对特定监控区域的视频监控,实现视频采集功能。
支持多图像源采集,包括IP 摄像头、USB 摄像头、CCTV 摄像头、视频文件等多种采集方式。
采集到的视频可用于高空抛物检测,或者通过视频压缩,进行保存。
可以结合时间、空间、目标特征等信息,把区域内所有的摄像头都关联起来,对特定目标进行跨摄像头跟踪。