C#使用SharGL实现PUMA560机械臂

1、四轴机械臂

下载链接:https://download.csdn.net/download/panjinliang066333/89645225

关键代码

public void DrawRobot1(ref OpenGL gl,float[] angle,float[] yLength,bool isPuma560_Six){//坐标系说明://①X轴正向:屏幕朝右//②Y轴正向:屏幕朝上//③Z轴正向:屏幕朝外float xSize = 2.0f, zSize = 2.0f;float xArm1 = 2.5f;//机器人底盘gl.PushMatrix();{gl.Color(1.0f, 1.0f, 0.0f); //黄色gl.Translate(xSize * 2.5 - 0.5f, -yLength[0], zSize * 2);gl.Scale(xSize * 5, 1.0f, zSize * 5);DrawCube(ref gl, 0.0f, 0.0f, 0.0f, false);}gl.PopMatrix();//画第一关节,偏航轴:绕Y轴旋转gl.PushMatrix();{gl.Color(1.0f, 0.0f, 0.0f);     //红颜色//1、绕自身中心轴旋转->绕Y轴旋转gl.Translate(-xSize / 2, -yLength[0] / 2, -zSize / 2);gl.Rotate(angle[0], 0.0f, 1.0f, 0.0f);gl.Translate(xSize / 2, yLength[0] / 2, zSize / 2);//绘制当前轴gl.Scale(xSize, yLength[0], zSize);DrawCube(ref gl, 0.0f, 0.0f, 0.0f, false);}gl.PopMatrix();//画一关节肩膀:绕Y轴旋转gl.PushMatrix();{gl.Color(1.0f, 1.0f, 1.0f);     //白颜色gl.Translate(0.0f, -0.5f, 0.0f);//绕关节1中心轴旋转gl.Translate(-xSize / 2, -yLength[0] / 2, -zSize / 2);gl.Rotate(angle[0], 0.0f, 1.0f, 0.0f);gl.Translate(xSize / 2, yLength[0] / 2, zSize / 2);gl.Translate(xSize + 0.5f, 0.0f, 0.0f);gl.Scale(xArm1, 1.0f, 1.0f);DrawCube(ref gl, 0.0f, 0.0f, 0.0f, false);}gl.PopMatrix();//画第二关节,俯仰轴:自身绕X轴旋转->再绕关节1绕Y轴旋转gl.PushMatrix();{gl.Color(0.0f, 0.0f, 1.0f);     //蓝色gl.Translate(0.0f, yLength[1] - 1.0f, 0.0f);//2、绕关节1轴旋转->绕Y轴旋转-旋转半径xSizegl.Translate(-xSize / 2, -yLength[1] / 2, -zSize / 2);gl.Rotate(angle[0], 0.0f, 1.0f, 0.0f);gl.Translate(xSize + xArm1, 0.0f, 0.0f);    //到关节1中心轴距离gl.Translate(xSize / 2, yLength[1] / 2, zSize / 2);//1、绕自身轴旋转-绕X轴旋转  gl.Translate(-xSize, -yLength[1], -zSize / 2);gl.Rotate(angle[1], 1.0f, 0.0f, 0.0f);gl.Translate(xSize, yLength[1], zSize / 2);//绘制当前轴gl.Scale(xSize, yLength[1], zSize);DrawCube(ref gl, 0.0f, 0.0f, 0.0f, false);}gl.PopMatrix();//画第三关节,俯仰轴:自身绕X轴旋转->然后绕关节2绕X轴旋转->再绕关节1绕Y轴旋转gl.PushMatrix();{gl.Color(0.0f, 1.0f, 0.0f);     //绿色//gl.Translate(0.0f, 0.0f, zSize / 2);//3、绕关节1轴旋转->绕Y轴旋转gl.Translate(-xSize / 2, -yLength[1] / 2, -zSize / 2);gl.Rotate(angle[0], 0.0f, 1.0f, 0.0f);gl.Translate(xSize * 2 + xArm1, 0.0f, 0.0f);gl.Translate(xSize / 2, yLength[1] / 2, zSize / 2);gl.Translate(0.0f, yLength[1] + yLength[2] - 2.0f, -zSize / 2);   //关节3位置//2、绕关节2轴旋转->绕X轴旋转-旋转半径yLength[2]                gl.Translate(-xSize, -(yLength[1] + yLength[2] - 2.0f), zSize / 2);gl.Rotate(angle[1], 1.0f, 0.0f, 0.0f);gl.Translate(xSize, yLength[1] + yLength[2] - 2.0f, zSize / 2);//1、绕自身轴旋转-绕X轴旋转  gl.Translate(-xSize, -yLength[2], -zSize / 2);gl.Rotate(angle[2], 1.0f, 0.0f, 0.0f);gl.Translate(xSize, yLength[2], zSize / 2);//绘制当前轴gl.Scale(xSize, yLength[2], zSize);DrawCube(ref gl, 0.0f, 0.0f, 0.0f, false);}gl.PopMatrix();//画第四关节,翻滚轴:自身绕Z轴旋转->再绕关节3绕X轴旋转->再绕关节2绕X轴旋转->再绕关节1绕Y轴旋转gl.PushMatrix();{float axis4Xsize = xSize * 3.0f, axis4Ysize = yLength[3], axis4Zsize = zSize * 1.5f;gl.Color(1.0f, 0.0f, 1.0f);     //紫颜色gl.Translate(0.0f, yLength[1] + yLength[2], 0.0f);//4、绕关节1轴旋转-绕Y轴旋转                gl.Translate(-xSize / 2, 0.0f, -zSize / 2);gl.Rotate(angle[0], 0.0f, 1.0f, 0.0f);gl.Translate(xSize * 3 + xArm1, 0.0f, axis4Zsize / 2);    //到关节1中心轴距离gl.Translate(xSize / 2, 0.0f, zSize / 2);//3、绕关节2轴旋转-绕X轴旋转gl.Translate(-axis4Xsize/2, -yLength[1] - yLength[2], -axis4Zsize/2);gl.Rotate(angle[1], 1.0f, 0.0f, 0.0f);gl.Translate(axis4Xsize/2, yLength[1] + yLength[2], axis4Zsize/2);//2、绕关节3轴旋转-绕X轴旋转gl.Translate(-axis4Xsize / 2, -yLength[2] - yLength[3], -axis4Zsize / 2);gl.Rotate(angle[2], 1.0f, 0.0f, 0.0f);gl.Translate(axis4Xsize / 2, yLength[2] + yLength[3], axis4Zsize / 2);                               //1、绕自身轴旋转-绕Y轴旋转 gl.Translate(-axis4Xsize / 2, 0.0f, -axis4Zsize / 2);gl.Rotate(angle[3], 0.0f, 1.0f, 0.0f);                gl.Translate(axis4Xsize / 2, 0.0f, axis4Zsize / 2);//绘制当前轴gl.Scale(axis4Xsize, axis4Ysize, axis4Zsize);DrawCube(ref gl, 0.0f, 0.0f, 0.0f, false);}gl.PopMatrix();}

2、六轴机械臂

下载链接:https://download.csdn.net/download/panjinliang066333/89645231

模型示意图

实物示意图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/402529.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue封装axios请求(超详细)

一、简介 Vue封装axios请求是指将axios库集成到Vue项目中,以便更方便地发送HTTP请求。首先,需要安装axios库,然后在Vue项目中创建一个名为request.js的文件,用于封装axios实例。在这个文件中,可以设置默认的配置,如基础URL、超时时间等。接下来,可以定义一些常用的请求方…

魔方远程时时获取短信内容APP 前端Vue 后端Ruoyi框架(含搭建教程)

前端Vue 后端Ruoyi框架 APP原生JAVA 全兼容至Android14(鸿蒙 澎湃等等) 前后端功能: ①后端可查看用户在线状态(归属地IP) ②发送短信(自定义输入收信号码以及短信内容,带发送记录) ③短信内容分类清晰(接收时间、上传时间等等) ④前后端分离以及A…

攸信动态丨CEIA电子智造论坛:聚焦高可靠性与智能制造,攸信技术受邀参展

第120届CEIA电子智造线下活动-导电高可靠性与智能制造&先进封装与系统集成创新发展论坛于8月8号,在厦门磐基希尔顿酒店召开,本次大会聚焦新型显示、EV汽车电子、智能家电等领域,受到了行业人士的重点关注,超300名行业同仁参会…

【网络】高并发场景处理:线程池和IO多路复用

文章目录 短时间内有大量的客户端的解决方案线程池IO 多路复用 短时间内有大量的客户端的解决方案 创建线程是比较经典的一种服务器开发模型,给每个客户端分配一个线程来提供服务 但一旦短时间内有大量的客户端,并且每个客户端请求都是很快的&#xff…

企业为什么需要安装加密软件

1. 数据保护 防止数据泄露:加密软件通过对敏感数据进行加密处理,确保即使数据在传输或存储过程中被截获,也无法被未授权人员读取或利用,从而有效防止数据泄露。 完整性保护:加密不仅保护数据的机密性,还通…

政务网站(.gov)专用SSL/HTTPS证书

政府网站在选择SSL证书时不仅需要遵循网络安全法规以及密评整改,更要提升公众信任度。国产服务商提供的专业版SSL证书,全方位符合政务部门对SSL证书的要求 1 算法要求 政务服务网站需要落实等保制度、密评制度,在密码应用上可选择国密算法S…

ubuntu-linux ifconfig只有回环IP问题解决

问题如下图所示: 解决方案: sudo dhclient

【Python学习-UI界面】PyQt5 小部件14-QDock 子窗口

可停靠窗口是一个子窗口,可以保持浮动状态或附加到主窗口的指定位置。 QMainWindow类的主窗口对象保留了一块区域供可停靠窗口使用。该区域位于中央窗口部件周围。 可停靠窗口可以在主窗口内移动,也可以被取消停靠并由用户移动到新的区域。 样式如下: …

关于鸣潮启动器450张图片杂谈—从代码分析为何使用帧动画

关于鸣潮启动器450张图片杂谈—从代码分析为何使用帧动画 前言 在鸣潮启动器的目录下 Wuthering Waves\kr_game_cache\animate_bg\99de27ae82e3c370286fba14c4fcb699打开该目录发现有450张图片,不难看出启动器的背景动画是由这450张图片不断切换实现的 qt框架 从…

2024千元以下蓝牙耳机有哪些推荐?四款年度性价比蓝牙耳机推荐

2024年,蓝牙耳机市场再次迎来了新的发展机遇与挑战,在众多的蓝牙耳机中,千元以下的产品因其较高的性价比而备受消费者青睐,那么面对琳琅满目的产品,2024千元以下蓝牙耳机有哪些推荐?接下来下面,…

【TM1638不能成功读回按键值】

8led8按键8数码管。主函数调用TM1638_ReadData2,打印了返回值,无论是否按键,都一直打印255,为什么全是1,看来读数据函数有问题啊。 u8 TM1638_ReadData2(void) {uint8_t i;uint8_t temp0x00;TM1638_DIOModeInput();/…

【机器学习西瓜书学习笔记——半监督学习】

机器学习西瓜书学习笔记【第十三章】 第十三章 半监督学习13.1 未标记样本13.2 生成式方法13.3 半监督 S V M SVM SVM基本思想优点和注意事项适用场景 13.4 图半监督标签传播算法多类标签传播算法Label PropagationLabel Spreading 13.5 基于分歧的方法数据视图协同训练 13.6 半…

CI/CD 自动化:最大限度地提高极狐GitLab 群组的“部署冻结”影响

极狐GitLab 是 GitLab 在中国的发行版,专门面向中国程序员和企业提供企业级一体化 DevOps 平台,用来帮助用户实现需求管理、源代码托管、CI/CD、安全合规,而且所有的操作都是在一个平台上进行,省事省心省钱。可以一键安装极狐GitL…

基于LangChain手工测试用例转接口自动化测试生成工具!

接口自动化测试用例是一个老生常谈的问题,在未引入人工智能之前,也有非常多的生成方案,比如如下所示,通过har生成接口自动化测试用例: 但是以上的生成方式依然是有一些弊端,比如 har 本身虽然能表述一定的接…

SqlSugar详解-国产ORM框架

ORM (Object-Relational Mapping) 概念 ORM 是一种程序技术,用于将关系型数据库中的数据映射到对象上。 主要目的是简化数据库操作,使得开发人员可以像操作对象一样来操作数据库。 原理 数据表与类的映射:数据库中的表对应为类。 记录与对象…

C++竞赛初阶L1-11-第五单元-for循环(25~26课)524: T454437 幂的末尾

题目内容 幂 ab 的末 3 位数是多少? 输入格式 两个正整数 a,b。1≤a≤100,1≤b≤10000。 输出格式 从高位到低位输出幂的末三位数字,中间无分隔符。若幂本身不足三位,在前面补零。 样例 1 输入 2 3 样例 2 输入…

django常用的组合搜索组件

文章目录 django常用的组合搜索组件快速使用配置信息1. 视图函数2. 前端模板3. css样式 代码实现 django常用的组合搜索组件 在项目开发中,如果有大量数据就要用到组合搜索,通过组合搜索对大块内容进行分类筛选。 快速使用 三步走:&#xf…

智慧社区新视界:EasyCVR视频汇聚平台下的数字化治理实践

在当今科技飞速发展的时代,“数字城市智慧社区”这个概念正逐渐走进我们的生活。那么,数字城市智慧社区到底是什么样子的呢? 随着城市化的不断推进,数字城市建设已成为提升城市管理效率、改善居民生活质量的重要手段。智慧社区作…

软件工程概述(上)

1、软件的概念、特点和分类 要了解软件工程,首先让我们重新认识一下软件。如今可以说是一个软件定义一切的时代,虽然人工智能发展的如火如荼,但究其本质,核心还是软件。那么,如何给软件下一个定义呢?软件又…

B站搜索建库架构优化实践

前言 搜索是B站的重要基础功能,需要对包括视频、评论、图文等海量的站内优质资源建立索引,处理来自用户每日数亿的检索请求。离线索引数据的正确、高效产出是搜索业务的基础。我们在这里分享搜索离线架构整体的改造实践:从周期长,…