当前位置:文档之家› Opengl实验报告及源代码实验三 着色器编程

Opengl实验报告及源代码实验三 着色器编程

Opengl实验报告及源代码实验三  着色器编程
Opengl实验报告及源代码实验三  着色器编程

实验报告

学生姓名:学号:专业班级:

实验类型:□验证□综合□设计□创新实验日期:2018.11 实验成绩:

一、实验名称

实验三着色器编程

二、实验内容

1.利用OpenGL的顶点数组对象、顶点缓冲对象和索引缓冲对象组织图元数据,设

置图元属性,进行核心模式的图元渲染。

2.编写顶点着色器、片段着色器代码,进行代码的编译和链接形成着色器程序,采

用核心模式绘制OpenGL几何图元。

3.采用文件形式保存着色器代码,编写着色器类,在着色器类中实现着色器代码的

加载、编译和链接。

三、实验目的

1.掌握顶点数组对象、顶点缓冲对象和索引缓冲对象的创建、数据缓存、属性设置

和绑定方法。

2.掌握顶点着色器和片段着色器的定义、代码加载、程序编译方法,着色器程序的

定义、链接和使用方法。

3.掌握如何采用面向对象方法封装着色器的代码加载、程序编译方法和链接方法。

四、实验步骤

1.新建项目OPengl02,在项目下添加opengl0

2.cpp文件和glad.c文件;

2.在opengl02.cpp文件中,添加代码:

(1)定义几何图元的顶点数据和索引数据

GLfloat vertices[] = {

0.5f, 0.5f, 0.0f, // Top Right

0.5f, -0.5f, 0.0f, // Bottom Right

-0.5f, -0.5f, 0.0f, // Bottom Left

-0.5f, 0.5f, 0.0f // Top Left

};

GLuint indices[] = { // Note that we start from 0!

0, 1, 3, // First Triangle

1, 2, 3 // Second Triangle

};

(2)创建顶点数组对象、顶点缓冲对象和索引缓冲对象,绑定相关对象,缓存数据、设置顶点属性。

GLuint VBO, VAO, EBO;

glGenVertexArrays(1, &VAO);

glGenBuffers(1, &VBO);

glGenBuffers(1, &EBO);

// Bind the Vertex Array Object first, then bind and set vertex buffer(s) and attribute pointer(s).

glBindVertexArray(VAO);

glBindBuffer(GL_ARRAY_BUFFER, VBO);

glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);

glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO);

glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW);

glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(GLfloat), (GLvoid*)0);

glEnableVertexAttribArray(0);

glBindBuffer(GL_ARRAY_BUFFER, 0);

// Note that this is allowed, the call to glVertexAttribPointer registered VBO as the

currently bound vertex buffer object so afterwards we can safely unbind

glBindVertexArray(0);

// Unbind VAO (it's always a good thing to unbind any buffer/array to prevent strange bugs), remember: do NOT unbind the EBO, keep it bound to this VAO

(3)编写顶点着色器、片段着色器代码。

const GLchar* vertexShaderSource = "#version 330 core\n"

"layout (location = 0) in vec3 position;\n"

"void main()\n"

"{\n"

"gl_Position = vec4(position.x, position.y, position.z, 1.0);\n"

"}\0";

const GLchar* fragmentShaderSource = "#version 330 core\n"

"out vec4 color;\n"

"void main()\n"

"{\n"

"color = vec4(1.0f, 0.5f, 0.2f, 1.0f);\n"

"}\n\0";

(4)加载着色器代码,进行代码的编译和链接形成着色器程序

// Build and compile our shader program

// Vertex shader

GLuint vertexShader = glCreateShader(GL_VERTEX_SHADER);

glShaderSource(vertexShader, 1, &vertexShaderSource, NULL);

glCompileShader(vertexShader);

// Check for compile time errors

GLint success;

GLchar infoLog[512];

glGetShaderiv(vertexShader, GL_COMPILE_STATUS, &success);

if (!success)

{

glGetShaderInfoLog(vertexShader, 512, NULL, infoLog);

std::cout << "ERROR::SHADER::VERTEX::COMPILATION_FAILED\n" << infoLog << std::endl;

}

// Fragment shader

GLuint fragmentShader = glCreateShader(GL_FRAGMENT_SHADER);

glShaderSource(fragmentShader, 1, &fragmentShaderSource, NULL);

glCompileShader(fragmentShader);

// Check for compile time errors

glGetShaderiv(fragmentShader, GL_COMPILE_STATUS, &success);

if (!success)

{

glGetShaderInfoLog(fragmentShader, 512, NULL, infoLog);

std::cout << "ERROR::SHADER::FRAGMENT::COMPILATION_FAILED\n" << infoLog << std::endl;

}

// Link shaders

GLuint shaderProgram = glCreateProgram();

glAttachShader(shaderProgram, vertexShader);

glAttachShader(shaderProgram, fragmentShader);

glLinkProgram(shaderProgram);

// Check for linking errors

glGetProgramiv(shaderProgram, GL_LINK_STATUS, &success);

if (!success) {

glGetProgramInfoLog(shaderProgram, 512, NULL, infoLog);

std::cout << "ERROR::SHADER::PROGRAM::LINKING_FAILED\n" << infoLog << std::endl;

}

glDeleteShader(vertexShader);

glDeleteShader(fragmentShader);

(5)采用核心模式绘制 OpenGL 几何图元

loadShader();

setupRC();

while (!glfwWindowShouldClose(window)) {

processInput(window);

glClearColor(0.2f, 0.3f, 0.3f, 1.0f);

glClear(GL_COLOR_BUFFER_BIT);

glUseProgram(shaderProgram);

glBindVertexArray(VAO);

//glDrawArrays(GL_TRIANGLES, 0, 6);

glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0);

glfwSwapBuffers(window);

glfwPollEvents();

}

(6)定义着色器类。

#ifndef SHADER_H

#define SHADER_H

#include

class Shader

{

public:

Shader(const GLchar* vertexPath, const GLchar* fragmentPath);

void use();

GLuint program;

};

#endif

3.编译运行

五、实验结果

(1)目录结构

(2)实验结果

六、实验体会

1.本次实验是学习OPenGL的着色器编程,通过实验我对VAO、VBO、EBO这些看上去

相近的东西有了更深的了解,熟悉了他们的用途,并且知道它们的作用和绑定方法。也深刻体会到了核心模式和立即模式的区别。

2.在实验过程中,比较难理解的是VAO,VBO的绑定顺序,而且要特别心细。前两次没有成功就是因为把VAO和VBO的顺序写反了。

传感器实验报告.doc

实验一金属箔式应变片性能—单臂电桥 1、实验目的了解金属箔式应变片,单臂单桥的工作原理和工作情况。 2、实验方法在CSY-998传感器实验仪上验证应变片单臂单桥的工作原理 3、实验仪器CSY-998传感器实验仪 4、实验操作方法 所需单元及部件:直流稳压电源、电桥、差动放大器、双孔悬臂梁称重传感器、砝码、一片应变片、F/V表、主、副电源。 旋钮初始位置:直流稳压电源打倒±2V档,F/V表打到2V档,差动放大增益最大。 实验步骤: (1)了解所需单元、部件在实验仪上的所在位置,观察梁上的应变片,应变片为棕色衬底箔式结构小方薄片。上下二片梁的外表面各贴二片受力应变片。 (2)将差动放大器调零:用连线将差动放大器的正(+)、负(-)、地短接。将差动放大器的输出端与F/V表的输入插口Vi 相连;开启主、副电源;调节差动放大器的增益到最大位置,然后调整差动放大器的调零旋钮使F/V表显示为零,关闭主、副电源。 (3)根据图1接线R1、R2、R3为电桥单元的固定电阻。R4为应变片;将稳压电源的切换开关置±4V 档,F/V表置20V档。开启主、副电源,调节电桥平衡网络中的W1,使F/V表显示为零,等待数分钟后将F/V表置2V档,再调电桥W1(慢慢地调),使F/V表显示为零。 (4) 将测微头转动到10㎜刻度附近,安装到双平行梁的右端即自由端(与自由端磁钢吸合),调节测微头支柱的高度(梁的自由端跟随变化)使V/F表显示值最小,再旋动测微头,使V/F表显示为零(细调零),这时的测微头刻度为零位的相应刻度。 (5) 往下或往上旋动测微头,使梁的自由端产生位移记下V/F表显示的值,每旋动测微头一周即 压值的相应变化。

最新西华大学机器人创新设计实验报告(工业机械手模拟仿真)

实验报告 (理工类) 课程名称: 机器人创新实验 课程代码: 6003199 学院(直属系): 机械学院机械设计制造系 年级/专业/班: 2010级机制3班 学生姓名: 学号: 实验总成绩: 任课教师: 李炜 开课学院: 机械工程与自动化学院 实验中心名称: 机械工程基础实验中心

一、设计题目 工业机器人设计及仿真分析 二、成员分工:(5分) 三、设计方案:(整个系统工作原理和设计)(20分) 1、功能分析 工业机器人由操作机(机械本体)、控制器、伺服驱动系统和检测传感装置构成,是一种仿人操作、自动控制、可重复编程、能在三维空间完成各种作业的机电一体化自动化生产设备。特别适合于多品种、变批量的柔性生产。它对稳定、提高产品质量,提高生产效率,改善劳动条件和产品的快速更新换代起着十分重要的作用。机器人技术是综合了计算机、控制论、机构学、信息和传感技术、人工智能、仿生学等多学科而形成的高新技术,是当代研究十分活跃,应用日益广泛的领域。机器人应用情况,是一个国家工业自动化水平的重要标志。机器人并不是在简单意义上代替人工的劳动,而是综合了人的特长和机器特长的一种拟人的电子机械装置,既有人对环境状态的快速反应和分析判断能力,又有机器可长时间持续工作、精确度高、抗恶劣环境的能力,从某种意义上说它也是机器的进化过程产物,它是工业以及非产业界的重要生产和服务性设备,也是先进制造技术领域不可缺少的自动化设备。 本次我们小组所设计的工业机器人主要用来完成以下任务: (1)、完成工业生产上主要焊接任务; (2)、能够在上产中完成油漆、染料等喷涂工作; (3)、完成加工工件的夹持、送料与转位任务; (5)、对复杂的曲线曲面类零件加工;(机械手式数控加工机床,如英国DELCAM公司所提供的风力发电机叶片加工方案,起辅助软体为powermill,本身为DELCAM公司出品)

传感器实验报告1

机 械 工 程 测 试 实 验 报 告 学 院: 机电工程学院 系 专业班级: 机制122 学生姓名: 黄余林 龙杰 李刚 孙龙宇 朱国帅 实验日期: 备,

目录 实验一箔式应变片性能—单臂电桥??????????????????????????????????????????????????????????????????????1 1 .1 实验目的????????????????????????????????????????????????????????????????????????????????????????????????????????1 1. 2 实验原理????????????????????????????????????????????????????????????????????????????????????????????????????????1 1. 3 实验原理????????????????????????????????????????????????????????????????????????????????????????????????????????1 1. 4 实验步骤????????????????????????????????????????????????????????????????????????????????????????????????????????1 1. 5 注意事项????????????????????????????????????????????????????????????????????????????????????????????????????????3 1. 6试验数据?????????????????????????????????????????????????????????????????????????????????????????????????????????3

计 算 机 图 形 学 实 验 报 告

实验一:基本图形生成算法演示 一、实验目的与要求 了解OpenGL图形软件包绘制图形的基本过程及其程序框架,并在已有的程序框架中添加代码实现直线和圆的生成算法,演示直线和圆的生成过程,从而加深对直线和圆等基本图形生成算法的理解。 二、实验内容 实验要求:(1)理解glut程序框架 (2)理解窗口到视区的变换 (3)理解OpenGL实现动画的原理 (4)添加代码实现中点Bresenham算法画直线 (5)添加代码实现改进Bresenham算法画直线 (6)添加代码实现圆的绘制(可以适当对框架坐标系进行修改) 实验操作和步骤:本次实验主要的目的是为了掌握基本画线和画圆算法,对于书上给出的代码,要求通过本次试验来具体的实现。由于实验已经给出大体的框架,所以只需要按照书上的算法思想来设计具体实现代码,对于直线DDA算法,中点Bresenham算法及其改进算法,以及Bresenham画圆算法都有进一步的体会。DDA算法是对每一步都要进行增量处理,然后取整,绘制,而Bresenham通过判断误差函数和求取递推公式来实现。特别是对于整数的选择取舍,以及代码的流程和循环的控制有一个深入的了解。同时也熟练运用OpenGL基本的绘图函数。 三、实验结果 1-1. DDA算法画直线。 图1-1-1 ,显示每次DDA算法画线的坐标结果(如上)。

图1-1-2.显示DDA算法画圆过程及截图 1-2. 中点Bresenham算法画直线 1-2-1利用中点Bresenham算法画直线的各点坐标如上: 1-2-2.中点Bresenham画线算法画线过程截图

1-3. 利用改进的Bresenham画线算法来画图 1-3-1.利用改进的Bresenham算法来画图各点坐标如上: 1-3-2.利用改进的Bresenham算法画直线图形如上 1-4.利用Bresenham画圆算法来作图

霍尔传感器制作实训报告

佛山职业技术学院 实训报告 课程名称传感器及应用 报告内容霍尔传感器制作与调试 专业电气自动化技术 班级08152 姓名陈红杰‘’‘’‘’‘’‘’‘’‘’‘ 学号31 二0一0年六月 佛山职业技术学院

《传感器及应用》 霍尔传感器制作实训报告 班级08152学号31 姓名陈红杰时间2009-2010第二学期项目名称霍尔传感器电路制作与 指导老师张教雄谢应然调试 一、实验目的与要求: 1.对霍尔传感器的实物(电路部分)进行一个基本的了解。 2.了解双层PCB板以及一定(霍尔传感器)的焊接排版的技术和工艺。 二、实验仪器、设备与材料: 1.认识霍尔传感器(电路部分)的元件(附图如下): 2.焊接电路PCB板(双层)和对电路设计的排版工艺的了解。 3.对霍尔传感器的电路原理图进行基本的分析(附图如下):

实验开始,每组会得到分发的元件,我先由霍尔传感器的电路原理图开始分析,将每个元件插放好位置,这点很重要,如果出了问题那么会使电路不能正常工作,严重的还有可能导致电路元件受损而无法恢复。所以我先由霍尔传感器的电路原理图开始着手,分析清楚每个元件的指定位置,插放好了之后再由焊接,最后要把多余的脚剪掉。 整个电路的元件除了THS119是长脚直插式元件之外,其余的元件均为低位直插或者贴板直插。 焊接的过程中,所需要注意的事情就是不能出现虚焊脱焊或者更严重的烙铁烫坏元件的表壳封装损坏印制电路板等。这些都是在焊接的整个过程中要注意的事情。 比如,焊接三端稳压管7812时,要考虑到电路板的外壳封装和三端稳压管7812的散热问题,如果直插焊接的话那么就会放不进塑料外壳里,还有直插没有折引脚的话对三端稳压管7812的散热影响很大。综合这些因素再去插放焊接元件,效果会好很多。 又比如,焊接THS119的时,原本PCB板在设计的时已经排好版了,就是在TL082的背面插放THS119。这样的设计很巧妙,能够保证每一个THS119插进去焊接完了之后都能很好地与塑料外壳严密配合安放进去。因为这是利用了IC引脚与PCB板的间距来实现定距离的,绝不会给焊接带来任何麻烦。 最后,顺便提及一下,在保证能将每一个元件正确地焊接在印制电路板上的前提条件下要尽量将元件插放焊接得美观。 五、实验心得体会 (1)首先,从整个霍尔传感器来看,设计的电路的合理性,元件的选用,还有焊接的制作工艺是保证整个电路能正常工作前提。 (2)在学习电子电路的过程中,急需有一个过度期,焊接霍尔传感器电路的过程当中就会得到一个这样的练习。 (3)简单的说就是,拿到一张电路原理图未必做得出一个比较好的产品,这里需要对整个电路设计的元件参数的考虑和排版,元件插放等等。只有将这些问题逐一解决了,才能做好一个电路,也只有这样才能做好一个产品。 (4)霍尔电压随磁场强度的变化而变化,磁场越强,电压越高,磁场越弱,电压越低。霍尔电压值很小,通常只有几个毫伏,但经集成电路中的放大器放大,就能使该电压放大到足以输出较强的信号。若使霍尔集成电路起传感作用,需要用机械的方法来改变磁场强度。 六、实验收获 从拿到第一个元件开始,我仍然没有太多的收获,直到开始分析整个电路原理图的时候才慢慢开始了解到一些确实精巧的设计,可以说是独具匠心,到整个霍尔传感器电路完成之后才算是明白了一二。 在此,我具体地说说。首先,为什么不用一个普通的稳压管替代Z2这个精密稳压集成电路TL431呢?我查阅相关资料知道它的温度范围宽能在 区间工作。将其的R、C脚并焊再串上一个电阻来等效代替电

传感器实训心得体会.doc

传感器实训心得体会 篇一:传感器实训心得 实训报告 学了一学期的传感器实训心得体会)传感器,在最后期末的时候我们也参加了传感器这一学科的实训,收获还是颇多。 在做测试技术的实验前,我以为不会难做,就像以前做物理实验一样,做完实验,然后两下子就将实验报告做完.直到做完测试实验后,才知道其实并不容易做,但学到的知识与难度成正比,使我们受益匪浅.做实验时,最重要的是一定要亲力亲为,务必要将每个步骤,每个细节弄清楚,弄明白,这样,也会有事半功倍的效果。 实验就是使我们加深理解所学基础知识,掌握各类典型传感器、记录仪器的基本原理和适用范围;具有测试系统的选择及应用能力;具有实验数据处理和误差分析能力;得到基本实验技能的训练与分析能力的训练,使我们初步掌握测试技术的基本方法,具有初步独立进行机械工程测试的能力,对各门知识得到融会贯通的认识和掌握,加深对理论知识的理解。更重要的是能够提高我们的动手能力。 这次实习的却让我加深了对各种传感器的了解和它们各自的原理,而且还培养我们分析和解决实际问题的能力。 在做实验的时候,连接电路是必须有的程序,也是最重要的,而连接电路时最重要的就是细心。我们俩最开始做实验的时候,并没有多注意,还是比较细心,但当我们把电路连接好通电后发现我们并不能得到数据,不管怎么调节都不对,后来才知道是我们电路连接错了,然

后我们心里也难免有点失落,因为毕竟是辛辛苦苦连了这么久的电路居然是错了,最后我们就只有在认真检查一次,看错啊你处在哪里。有了这次的经验下次就更加细心了。以上就是我们组两人对这次实训最大的感触,下次实训虽然不是一样的学科,但实验中的经验和感受或许会有相似的,我们会将这次的经验用到下次,经验不断积累就是我们实训最大的收获。 篇二:传感器实训报告 上海第二工业大学 传感器与测试技术技能实习 专业:机械电子工程 班级:10机工A2 姓名: 学号: 指导老师:杨淑珍 日期:2013年6月24日~7月7日 项目五:转子台转速测量及振动监控系统。 (一)内容 设计一个转子台的振动检测系统,能实时测量转子台工作时的振动信号(振幅)并实时显示转速,当振幅超过规定值时,报警。具体要求: 1.能测量振动信号并显示波形,若振动超过限值,报警(软硬件报警); 2.能测量并显示转子的转速; 3.限值均由用户可设定(最好以对话框方式设置,软件重新打开后,能记住上次的设置结果);

研究生计算机图形学课程室内场景OpenGL--实验报告Word版

《高级计算机图形学》实验报告 姓名:学号:班级: 【实验报告要求】 实验名称:高级计算机图形学室内场景 实验目的:掌握使用OpenGL生成真实感复杂对象的方法,进一步熟练掌握构造实体几何表示法、扫描表示法、八叉树法、BSP树法等建模方法。 实验要求:要求利用OpenGL生成一个真实感的复杂对象及其周围场景,并显示观测点变化时的几何变换,要具备在一个纹理复杂的场景中漫游功能。要求使用到光线跟踪算法、 纹理映射技术以及实时绘制技术。 一、实验效果图 图1:正面效果图

图2:背面效果图 图4:背面效果图

图4:室内场景细节效果图 图5:场景角度转换效果图

二、源文件数据代码: 共6个文件,其实现代码如下: 1、DlgAbout.cpp #include "StdAfx.h" #include "DlgAbout.h" CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) END_MESSAGE_MAP() 2、FormCommandView.cpp #include "stdafx.h" #include "Tool.h" #include "MainFrm.h" #include "FormCommandView.h" #include "ToolDoc.h" #include "RenderView.h" // Download by https://www.doczj.com/doc/156222348.html, #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif // CFormCommandView IMPLEMENT_DYNCREATE(CFormCommandView, CFormView) CFormCommandView::CFormCommandView() : CFormView(CFormCommandView::IDD) { //{{AFX_DATA_INIT(CFormCommandView)

机器人实验报告

智能机器人实验报告1 学院:化学与材料科学学院 学号: 2015100749 姓名:朱巧妤 评阅人:评阅时间:

实验1 电驱动与控制实验 (一)实验目的 熟悉和掌握机器人开发环境使用,超声传感器、碰撞传感器、温度传感器、颜色传感器等常见机器人传感器工作原理与使用方法,熟悉机器人平台使用与搭建;设计一个简单的机器人,并采用多种程序设计方法使它能动起来。 (二)仪器工具及材料 计算机、机器人实验系统、机器人软件开发平台、编程下载器等设备。 (三)内容及程序 实验内容: (1)碰撞传感器原理与应用; (2)颜色传感器原理与应用; (3)测距传感器原理与应用; (4)温度传感器原理与应用; (5)熟悉开发环境使用与操作;设计一个简单轮式移动机器人,并使用图形化编程方式实现对机器人的控制,通过该设计掌握机器人开发平台的结构设计、程序设计等基本方法。 实验步骤: 1)首先确定本次要做的机器人为货架物品颜色辨别的机器人。 2)根据模型将梁、轴、插销、螺丝等零件拼装成一个货架台 3)将货架台安装上可识别颜色的摄像头,并装在控制器上方,将两个摄像头的连接线分 别插入控制器的传感器接口,将显示器连接线插入传感器接口。 4)拼装完成后将控制器连接电脑,在电脑上运用Innobot软件对机器人进行颜色识别动 作的编程,拖动颜色传感器模块,对应选择数码管接口以及两个摄像头的接口,使机器人能将货架台上物品的颜色反应到数码管上。 5)将所编程序进行上传。测试看机器人是否能将颜色反映到显示器上完成所编动作。

(四)结果及分析 使用梁和轴以及螺钉拼装出货架台。 将拼装好的货架台装到传感器上。

传感器实验报告

传感器实验报告(二) 自动化1204班蔡华轩 U2 吴昊 U5 实验七: 一、实验目的:了解电容式传感器结构及其特点。 二、基本原理:利用平板电容C=εA/d 和其它结构的关系式通过相应的结 构和测量电路可以选择ε、A、d 中三个参数中,保持二个参数不变,而只改变其中一个参数,则可以有测谷物干燥度(ε变)测微小位移(变d)和测量液位(变A)等多种电容传感器。 三、需用器件与单元:电容传感器、电容传感器实验模板、测微头、相敏 检波、滤波模板、数显单元、直流稳压源。 四、实验步骤: 1、按图6-4 安装示意图将电容传感器装于电容传感器实验模板上。 2、将电容传感器连线插入电容传感器实验模板,实验线路见图7-1。图 7-1 电容传感器位移实验接线图 3、将电容传感器实验模板的输出端V01 与数显表单元Vi 相接(插入主控 箱Vi 孔),Rw 调节到中间位置。 4、接入±15V 电源,旋动测微头推进电容传感器动极板位置,每间隔 记下位移X 与输出电压值,填入表7-1。

5、根据表7-1 数据计算电容传感器的系统灵敏度S 和非线性误差δf。 图(7-1) 五、思考题: 试设计利用ε的变化测谷物湿度的传感器原理及结构,并叙述一 下在此设计中应考虑哪些因素 答:原理:通过湿度对介电常数的影响从而影响电容的大小通过电压表现出来,建立起电压变化与湿度的关系从而起到湿度传感器的作用;结构:与电容传感器的结构答大体相同不同之处在于电容面板的面积应适当增大使测量灵敏度更好;设计时应考虑的因素还应包括测量误差,温度对测量的影响等

六:实验数据处理 由excle处理后得图线可知:系统灵敏度S= 非线性误差δf=353=% 实验八直流激励时霍尔式传感器位移特性实验 一、实验目的:了解霍尔式传感器原理与应用。 二、基本原理:霍尔式传感器是一种磁敏传感器,基于霍尔效应原理工作。 它将被测量的磁场变化(或以磁场为媒体)转换成电动势输出。 根据霍尔效应,霍尔电势UH=KHIB,当霍尔元件处在梯度磁场中 运动时,它就可以进行位移测量。图8-1 霍尔效应原理

机器人实验报告

一、机器人的定义 美国机器人协会(RIA)的定义: 机器人是一种用于移动各种材料、零件、工具或专用的装置,通过可编程序动作来执行种种任务的、并具有编程能力的多功能机械手。 日本工业机器人协会(JIRA—Japanese Industrial Robot Association):一种带有存储器件和末端执行器的通用机械,它能够通过自动化的动作替代人类劳动。(An all—purpose machine equipped with a memory device and an end—effector,and capable of rotation and of replacing human labor by automatic performance of movements.) 世界标准化组织(ISO):机器人是一种能够通过编程和自动控制来执行诸如作业或移动等任务的机器。(A robot is a machine which can be programmed to perform some tasks which involve manipulative or locomotive actions under automatic control.) 中国(原机械工业部):工业机器人是一种能自动定位控制、可重复编程、多功能多自由度的操作机,它能搬运材料、零件或夹持工具,用以完成各种作业。 二、机器人定义的本质: 首先,机器人是机器而不是人,它是人类制造的替代人类从事某种作业的工具,它能是人的某些功能的延伸。在某些方面,机器人可具有超越人类的能力,但从本质上说机器人永远不可能全面超越人类。

传感器综合的实验报告

传感器综合实验报告( 2012-2013年度第二学期) 名称:传感器综合实验报告 题目: 利用传感器测量重物质量院系:自动化系 班级:测控1201 班 小组成员:加桑扎西,黄承德 学生:加桑扎西 指导教师:仝卫国 实验周数:1周 成绩:

日期:2015 年7 月12日

传感器综合实验报告 一、实验目的 1、了解各种传感器的工作原理与工作特性。 2、掌握多种传感器应用于电子称的原理。 3、根据不同传感器的特性,选择不同的传感器测给定物体的重量。 4、能根据原理特性分析结果,加深对传感器的认识与应用。 5、测量精度要求达到1%。 二、实验设备、器材 1、金属箔式应变片传感器用到的设备: 直流稳压电源、双平行梁、测微器、金属箔式应变片、标准电阻、差动放大器、直流数字电压表。 2、电容式传感器用到的设备: 电容传感器、电容变换器、差动放大器、低通滤波器、电压表、示波器。 3、电涡流式传感器用到的设备: 电涡流式传感器、测微器、铝测片、铁测片、铜测片、电压表、示波器。 三、传感器工作原理 1、电容式传感器的工作原理: 电容器的电容量C是的函数,当被测量变化使S、d或 任意一个参数发生变化时,电容量也随之而变,从而可实现由被测量到电容量的转换。电容式传感器的工作原理就是建立在上述关系上的,若保持两个参数不变,仅改变另一参数,

就可以把该参数的变化转换为电容量的变化,通过测量电路再转换为电量输出。 差动平行变面积式传感器是由两组定片和一组动片组成。当安装于振动台上的动片上、下改变位置,与两组静片之间的相对面积发生变化,极间电容也发生相应变化,成为差动电容。如将上层定片与动片形成的电容定为C X1,下层定片与动片形成的电容定为C X2,当将C X1和C X2接入双T型桥路作为相邻两臂时,桥路的输出电压与电容量的变化有关,即与振动台的位移有关。依据该原理,在振动台上加上砝码可测定重量与桥路输出电压的对应关系,称未知重量物体时只要测得桥路的输出电压即可得出该重物的重量。 2、电涡流式传感器的工作原理: 电涡流式传感器由平面线圈和金属涡流片组成,当线圈中通以高频交变电流后,与其平行的金属片上感应产生电涡流,电涡流的大小影响线圈的阻抗Z,而涡流的大小与金属涡流片的电阻率、导磁率、厚度、温度以及与线圈的距离X有关。当平面线圈、被测体(涡流片)、激励源已确定,并保持环境温度不变,阻抗Z只与X距离有关。将阻抗变化经涡流变换器变换成电压V输出,则输出电压是距离X的单值函数。依据该原理可制成电涡流式传感器电子称。3、金属箔式应变片传感器工作原理: 应变片应用于测试时,应变片要牢固地粘贴在测试体表面,当测件受力发生形变,应变片的敏感栅随同变形,其电阻值也随之发生相应的变化。通过测量电路,转换成电信号输出显示。 实验中,通过旋转测微器可使双平梁的自由端上、下移动,从而使应变片的受力情况不同,将应变片接于电桥中即可使双平衡的位移转换为电压输出。电桥的四个桥臂电阻R1、R2、R3、R4,电阻的相对变化率分别为△R1/R1、△

Opengl实验报告及源代码实验七 模型加载

实验报告 学生姓名:学号:专业班级: 实验类型:□验证□综合□设计□创新实验日期:2018.11 实验成绩:一、实验名称 实验七模型加载 二、实验内容 1.设计并实现Mesh类,利用该类实现模型网格的解析、加载、管理与渲染。 2.设计并实现Model类,利用该类实现几何模型的解析、加载、管理与渲染。 3.基于Mesh类和Model类,利用Assimp模型加载库,加载并渲染三维几何模型。 三、实验目的 1.掌握3D模型网格数据的组织与渲染方法。 2.掌握3D模型数据的结构与组织,以及模型数据的解析与渲染方法。 3.了解Assimp库中管理3D模型的数据结构,掌握Assimp库的使用方法。 四、实验步骤 1.定义网格类结构,并初始化 class Mesh { Public: vector vertices; vector indices; vector textures; Mesh(vector vertices, vector indices, vector texture); Void Draw(Shader shader); private: GLuint VAO, VBO, EBO; void setupMesh(); } void setupMesh() { glGenVertexArrays(1, &this->VAO); glGenBuffers(1, &this->VBO); glGenBuffers(1, &this->EBO); glBindVertexArray(this->VAO); glBindBuffer(GL_ARRAY_BUFFER, this->VBO);

电子秤课程设计实验报告

电 子 设 计 实 验 报 告 电子科技大学 设计题目:电子称姓名:

学生姓名 任务与要求 一、任务 使用电阻应变片称重传感器,实现电子秤。用砝码作称重比对。 二、要求 准确、稳定称重; 称重传感器的非线性校正,提高称重精度; 实现“去皮”、计价功能; 具备“休眠”与“唤醒”功能,以降低功耗。

电子秤 第一节绪论 摘要:随着科技的进步,在日常生活以及工业运用上,对电子秤的要求越来越高。常规的测试仪器仪表和控制装置被更先进的智能仪器所取代,使得传统的电子测量仪器在远离、功能、精度及自动化水平定方面发生了巨大变化,并相应的出现了各种各样的智能仪器控制系统,使得科学实验和应用工程的自动化程度得以显著提高。影响其精度的因素主要有:机械结构、传感器和数显仪表。在机械结构方面,因材料结构强度和刚度的限制,会使力的传递出现误差,而传感器输出特性存在非线性,加上信号放大、模数转换等环节存在的非线性,使得整个系统的非线性误差变得不容忽视。因此,在高精度的称重场合,迫切需要电子秤能自动校正系统的非线性。此外,为了保证准确、稳定地显示,要求所采用的ADC具有足够的转换位数,而采用高精度的ADC,自然增加了系统的成本。基于电子秤的现状,本文提出了一种简单实用并且精度高的智能电子秤设计方案。通过运用很好的集成电路,使测量精度得到了大大提高,由于采用数字滤波技术,使稳态测量的稳定性和动态测量的跟随性都相当好。并取得了令人满意的效果。 关键词:压力传感器,AD620N放大电路,ADC模数转换,STM32单片机,OLED 显示屏,矩阵键盘,电子秤。 1.1引言 本课程设计的电子秤以单片机为主要部件,利用全桥测量原理,通过对电路输出电压和标准重量的线性关系,建立具体的数学模型,将电压量纲(V)改为重量纲(g)即成为一台原始电子秤。其中测量电路中最主要的元器件就是电阻应变式传感器。电阻应变式传感器是传感器中应用最多的一种,本设计采用全桥测量电路,是系统产生的误差更小。输出的数据更精确。而AD620N放大电路的作用就是把传感器输出的微弱的模拟信号进行一定倍数的放大,以满足A/D 转换器对输入信号电平的要求。A/D转换的作用是把模拟信号转变成数字信号,进行模拟量转数字量转换,然后把数字信号输送到显示电路中去,最后由OLED

六轴工业机器人实验报告

六轴工业机器人模块 实验报告 姓名:张兆伟 班级:13 班 学号:30 日期:2016年8月25日

六轴工业机器人模块实验报告 一、实验背景 六自由度工业机器人具有高度的灵活性和通用性,用途十分广泛。本实验是在开放的六自由度机器人系统上,采用嵌入式多轴运动控制器作为控制系统平台,实现机器人的运动控制。通过示教程序完成机器人的系统标定。学习采用C++编程设计语言编写机器人的基本控制程序,学习实现六自由度机器人的运动控制的基本方法。了解六自由度机器人在机械制造自动化系统中的应用。 在当今高度竞争的全球市场,工业实体必须快速增长才能满足其市场需求。这意味着,制造企业所承受的压力日益增大,既要应付低成本国家的对手,还要面临发达国家的劲敌,二后者为增强竞争力,往往不惜重金改良制造技术,扩大生产能力。 机器人是开源节流的得利助手,能有效降低单位制造成本。只要给定输入成值,机器人就可确保生产工艺和产品质量的恒定一致,显著提高产量。自动化将人类从枯燥繁重的重复性劳动中解放出来,让人类的聪明才智和应变能力得以释放,从而生产更大的经济回报。 二、实验过程 1、程序点0——开始位置 把机器人移动到完全离开周边物体的位置,输入程序点 0。按下手持操作示教器上的【命令一览】键,这时在右侧弹出指令列表菜单如图:按手持操作示教器【下移】键,使{移动 1}变蓝后,按【右移】键,打开{移动 1}子列表,MOVJ 变蓝后,按下【选择】键,指令出现在命令编辑区。修改指令参数为需要的参数,设置速度,使用默认位置点 ID 为 1。(P1 必须提前示教好)。按下手持操作示教器上的【插入】键,这时插入绿色灯亮起。然后再按下【确认】键,指令插入程序文件记录列表中。此时列表内容显示为: MOVJ P=1 V=25 BL=0 (工作原点) 2、程序点1——抓取位置附近(抓取前) 位置点1必须选取机器人接近工件时不与工件发生干涉的方向、位置。(通常在抓取位置的正上方)按下手持操作示教器上的【命令一览】键按手持操作示教器【下移】键,使{移动 1}变蓝后,按【右移】键,打开{移动 1}子列表,MOVJ

传感器与检测技术实验报告

“传感器与检测技术”实验报告 学号: 913110200229 姓名:杨薛磊 序号: 83

实验一电阻应变式传感器实验 (一)应变片单臂电桥性能实验 一、实验目的:了解电阻应变片的工作原理与应用并掌握应变片测量电路。 二、基本原理:电阻应变式传感器是在弹性元件上通过特定工艺粘贴电阻应变片来组成。一种利用电阻材料的应变效应将工程结构件的内部变形转换为电阻变化的传感器。此类传感器主要是通过一定的机械装置将被测量转化成弹性元件的变形,然后由电阻应变片将弹性元件的变形转换成电阻的变化,再通过测量电路将电阻的变化转换成电压或电流变化信号输出。它可用于能转化成变形的各种非电物理量的检测,如力、压力、加速度、力矩、重量等,在机械加工、计量、建筑测量等行业应用十分广泛。 三、需用器件与单元:主机箱中的±2V~±10V(步进可调)直流稳压电源、±15V直流 1位数显万用表(自备)。 稳压电源、电压表;应变式传感器实验模板、托盘、砝码; 4 2 四、实验步骤: 应变传感器实验模板说明:应变传感器实验模板由应变式双孔悬臂梁载荷传感器(称重传感器)、加热器+5V电源输入口、多芯插头、应变片测量电路、差动放大器组成。实验模板中的R1(传感器的左下)、R2(传感器的右下)、R3(传感器的右上)、R4(传感器的左上)为称重传感器上的应变片输出口;没有文字标记的5个电阻符号是空的无实体,其中4个电阻符号组成电桥模型是为电路初学者组成电桥接线方便而设;R5、R6、R7是350Ω固定电阻,是为应变片组成单臂电桥、双臂电桥(半桥)而设的其它桥臂电阻。加热器+5V是传感器上的加热器的电源输入口,做应变片温度影响实验时用。多芯插头是振动源的振动梁上的应变片输入口,做应变片测量振动实验时用。

《工业机器人》实验报告

北京理工大学珠海学院实验报告 实验课程:工业机器人实验名称:实验一:工业机器人认识 教师:时间:班级:姓名:学号: 一、实验目的与任务 了解6自由度工业机器人的机械结构,工作原理,性能指标、控制系统,并初步掌握操作。了解6自由度工业机器人在柔性制造系统中的作用。 二、实验设备 FMS系统(含6-DOF工业机器人) 三、实验内容与步骤 1、描述工业机器人的机械结构、工作原理及性能指标。 2、描述控制系统的组成及各部分的作用。

3、描述机器人的软件平台及记录自己在进行实际操作时的步骤及遇到的问题以及自己的想法。教师批阅:

北京理工大学珠海学院实验报告 实验课程:工业机器人实验名称:实验二:机器人坐标系的建立 教师:时间:班级:姓名:学号: 一、实验目的与任务 了解机器人建立坐标系的意义;了解机器人坐标系的类型;掌握用D-H方法建立机器人坐标系的方法与步骤。 二、实验设备 FMS系统(含6-DOF工业机器人) 三、实验内容与步骤 1、描述机器人建立坐标系的意义以及机器人坐标系的类型。 2、深入研究机器人机械结构,建立6自由度关节型机器人杆件坐标系,绘制机器人杆件坐标系图。

教师批阅:

实验课程:工业机器人实验名称:实验三:机器人示教编程与再现控制 教师:时间:班级:姓名:学号: 一、实验目的与任务 了解机器人示教编程的工作原理,掌握6自由度工业机器人的示教编程与再现控制。 二、实验设备 FMS系统(含6-DOF工业机器人) 三、实验内容与步骤 1、描述机器人示教编程的原理。 2、详细叙述示教编程与再现的操作步骤,记录每一个程序点,并谈谈实验心得体会。教师批阅:

无线传感器网络实验报告

无线传感器网络实验报告 Contiki mac协议与xmac协议的比较 1.简介 无线传感器网络(wireless sensor networks, WSN)节点由电池供电,其能力非常有限,同时由于工作环境恶劣以及其他各种因素,节点能源一般不可补充。因而降低能耗、延长节点使用寿命是所有无线传感器网络研究的重点。 WSN中的能量能耗主要包括通信能耗、感知能耗和计算能耗,其中通信能耗所占的比重最大,因此,减少通信能耗是延长网络生存时间的有效手段。同时,研究表明节点通信时Radio 模块在数据收发和空闲侦听时的能耗几乎相同,所以要想节能就需要最大限度地减少Radio 模块的侦听时间(收发时间不能减少),及减小占空比。 传统的无线网络中,主要考虑到问题是高吞吐量、低延时等,不需要考虑能量消耗,Radio 模块不需要关闭,所以传统无线网络MAC协议无法直接应用于WSN,各种针对传感器网络特点的MAC协议相继提出。现有的WSN MAC协议按照不同的分类方式可以 分成许多类型,其中根据信道访问策略的不同可以分为: X-MAC协议 X-MAC协议也基于B-MAC协议的改进,改进了其前导序列过长的问题,将前导序列分割成许多频闪前导(strobed preamble),在每个频闪前导中嵌入目的地址信息,非接收节点尽早丢弃分组并睡眠。 X-MAC在发送两个相邻的频闪序列之间插入一个侦听信道间隔,用以侦听接收节点的唤醒标识。接收节点利用频闪前导之间的时间间隔,向发送节点发送早期确认,发送节点收到早

期确认后立即发送数据分组,避免发送节点过度前导和接收节点过度侦听。 X-MAC还设计了一种自适应算法,根据网络流量变化动态调整节点的占空比,以减少单跳延时。 优点: X-MAC最大的优点是不再需要发送一个完整长度的前导序列来唤醒接收节点,因而发送延时和收发能耗都比较小;节点只需监听一个频闪前导就能转入睡眠。 缺点: 节点每次醒来探测信道的时间有所增加,这使得协议在低负载网络中能耗性比较差。而且分组长度、数据发送速率等协议参数还需进一步确定 X-MAC原理图如图3所示: ContikiMAC协议 一.ContikiMAC协议中使用的主要机制: 1.时间划分

工业机器人实验分析报告-机械-示教-离线编程

工业机器人实验报告-机械-示教-离线编程

————————————————————————————————作者:————————————————————————————————日期:

工业机器人实验报告 ——机器人示教与离线编程实验 班级:机械41 组别:第一组 组员:陈豪 2140101003 尹鑫鑫 2140101023 武文家 2140101020 指导老师:桂亮 西安交通大学 2017年 5 月 3 日

西安交通大学实验报告 第页(共页)课程:工业机器人实验日期:2017年 5月 3 日 专业班号机械41组别第一组交报告日期:年月日 姓名陈豪学号2140101003 报告退发:(订正、重做) 姓名尹鑫鑫学号2140101023 教师审批签字: 姓名武文家学号2140101020 实验一机器人示教实验 一、实验目的 1.了解机器人示教与再现的原理; 2.掌握机器人示教和再现过程的操作方法。 二、实验设备 1.模块化机器人一台; 2.模块化机器人控制柜一台。 三、实验原理 机器人的示教-再现过程是分为四个步骤:示教、记忆、再现、操作。 示教,就是操作者把规定的目标动作(包括每个运动部件,每个运动轴的动作)一步一步 的教给机器人。 记忆,即是机器人将操作者所示教的各个点的动作顺序信息、动作速度信息、位姿信息 等记录在存储器中。 再现,便是将示教信息再次浮现,即根据需要,将存储器所存储的信息读出,向执行机 构发出具体的指令。 操作,指机器人以再现信号作为输入指令,使执行机构重复示教过程规定的各种动作。 示教的方法有很多种,有主从式,编程式,示教盒式等多种。 四、实验步骤 1.接通控制柜电源,按下“启动”按钮; 2.启动计算机,运行机器人软件; 3.点击主界面“模块组合方式”按钮,按照实际情况选择已组合的模块设备,并点 击“确定”按钮; 4.点击主界面“机器人复位”按钮,机器人进行回零运动。观察机器人的运动,所 有模块全部运动完成后,机器人处于零点位置; 5.点击“示教”按钮,出现界面;

传感器综合实验仿真报告

综合实验报告 ( 2015 -- 2016年度第一学期) 名称:传感器原理与应用题目:综合实验—仿真部分院系:控制与计算机工程班级:测控1303 学号:1131160318 学生姓名:魏更 指导教师: 设计周数:一周 成绩: 日期:2016 年1月15日

一、课程设计(综合实验)的目的与要求 1、本实验的目的是配合《传感器原理与应用》课程的传感器静态特性与动态特性相关部分的内容,利用Matlab/Simulink 进行仿真验证。培养学生利用计算机进行数据处理和模型仿真的能力,为今后从事相关领域的工作打下基础。 2、要求学生了解传感器静态和动态特性的基础知识,掌握Matlab/Simulink 进行数据分析和仿真的基本方法。具体要求为:掌握基于最小二乘法的数据处理方法,能够进行简单的数据处理;掌握传感器动态特性的分析手段,了解不同阶次特性的基本性质,并能够进行相应的仿真实验,对传感器动态特性有感性认识。 二、实验正文 1、学习使用Matlab 进行最小二乘法数据处理,分别通过自己编写函数和使用Matlab 提供的函数实现相同功能。 ①按照最小二乘法原理编写Matlab 程序。 程序如下: x=(-200:100:1300); y=[-5.8914,-3.5536,0,4.0962,8.1385,12.2086,16.3971,20.6443,24.9055,29.129,33.2754,37.3259,41.2756,45. 1187,48.8382,52.4103]; z1=sum(x); z2=z1^2; z3=sum(power(x,2)); z4=sum(x.*y); z5=sum(y); n=length(x); k=(n*z4-z1*z5)/(n*z3-z2); a0=(z3*z5-z1*z4)/(n*z3-z2); fprintf('k=%f\n',k); fprintf('a0=%f',a0); y1=k*x+a0; plot(x,y1,'-b',x,y,'*r'); 输出结果: k=0.040274 a0=0.619114 拟合直线和各点的分布图见下图:

opengl立方体的简单三维交互式几何变换实验报告+代码

立方体的简单三维交互式几何变换 这个学期对opengl的学习,使我对计算机图形学的一些算法过程有了更多的了解。因为对三维图形的显示比较感兴趣,就做了立方体的简单三维交互式几何变换。 功能:键盘的方向键实现立方体的上下左右平移;A键,S键分别实现向前,向后旋转;J键,K键分别实现放大,缩小;C键退出。 程序模块: 1.该模块为绘制一个立方体。 void DrawBox() { glBegin(GL_QUADS); //前面 glColor3f(1,0,0); glVertex3f(-1.0f, -1.0f, 1.0f); // 四边形的左下 glVertex3f( 1.0f, -1.0f, 1.0f); // 四边形的右下 glVertex3f( 1.0f, 1.0f, 1.0f); // 四边形的右上 glVertex3f(-1.0f, 1.0f, 1.0f); // 四边形的左上 // 后面 glColor3f(0,1,0); glVertex3f(-1.0f, -1.0f, -1.0f); // 四边形的右下 glVertex3f(-1.0f, 1.0f, -1.0f); // 四边形的右上

glVertex3f( 1.0f, -1.0f, -1.0f); // 四边形的左下 // 顶面 glColor3f(0,0,1); glVertex3f(-1.0f, 1.0f, -1.0f); // 四边形的左上glVertex3f(-1.0f, 1.0f, 1.0f); // 四边形的左下glVertex3f( 1.0f, 1.0f, 1.0f); // 四边形的右下glVertex3f( 1.0f, 1.0f, -1.0f); // 四边形的右上// 底面 glColor3f(1,1,0); glVertex3f(-1.0f, -1.0f, -1.0f); // 四边形的右上glVertex3f( 1.0f, -1.0f, -1.0f); // 四边形的左上glVertex3f( 1.0f, -1.0f, 1.0f); // 四边形的左下glVertex3f(-1.0f, -1.0f, 1.0f); // 四边形的右下// 右面 glColor3f(0,1,1); glVertex3f( 1.0f, -1.0f, -1.0f); // 四边形的右下glVertex3f( 1.0f, 1.0f, -1.0f); // 四边形的右上glVertex3f( 1.0f, 1.0f, 1.0f); // 四边形的左上glVertex3f( 1.0f, -1.0f, 1.0f); // 四边形的左下// 左面 glColor3f(1,0,1);

相关主题
文本预览
相关文档 最新文档