原理:利用rand随机数,给各个关节设置随机关节变量,通过正运动学得到末端位姿变换矩阵,然后利用变换矩阵2三维坐标标记出末端坐标,迭代多次就可以构成点云。

教程视频:【MATLAB机器人工具箱10.4 机械臂仿真教学(未完结)】 https://www.bilibili.com/video/BV1q44y1x7WC/?p=5&share_source=copy_web&vd_source=2c56c6a2645587b49d62e5b12b253dca

【【Matlab机器人工具箱】+【运动学】+5、蒙特卡洛法的工作域分析】 https://www.bilibili.com/video/BV15V411v72f/?share_source=copy_web&vd_source=2c56c6a2645587b49d62e5b12b253dca

1 设置关节限制

首先要设置关节限制,不是每个关节都是正负180大回旋的。我们修改L(x).qlim来设定关节角度范围,也可以直接在L(x)定义时增加这个参数。

clear;
clc;L(1) = Link('revolute', 'd', 0.216, 'a', 0, 'alpha', pi/2);
L(2) = Link('revolute', 'd', 0, 'a', 0.5, 'alpha', 0, 'offset', pi/2);
L(3) = Link('revolute', 'd', 0, 'a', 0, 'alpha', 0, 'offset', sqrt(0.145^2+0.42746^2), 'alpha', 0, 'offset', atan(427.46/145));
L(4) = Link('revolute', 'd', 0, 'a', 0, 'alpha', pi/2, 'offset', atan(427.46/145));
L(5) = Link('revolute', 'd', 0, 'a', 0.258, 'alpha', 0);Five_dof = SerialLink(L,'name','5-dof');
Five_dof.base = transl(0,0,0.28);L(1).qlim = [-150, 150]/180*pi;
L(2).qlim = [-100, 90]/180*pi;
L(3).qlim = [-90, 90]/180*pi;
L(4).qlim = [-100, 100]/180*pi;
L(5).qlim = [-180, 180]/180*pi;% subplot(1,2,1)
% plot(Five_dof,[0 0 0 0 0],'tilesize',0.1,'workspace',[-1 1 -1 1 -0.2 2])Five_dof.teach

可以用下式获取每个关节的限制范围:

>> L(1).qlimans =-2.6180    2.6180

2 生成随机关节变量

第二步是生成随机数的处理,如下图,在[m,n]生成随机数的方式就是m+rand*(m-n),对应关节变量就是q=q_min+rand*(q_max-q_min)

num = 30000;
P = zeros(num, 3);for i=1:numq1 = L(1).qlim(1) + rand * (L(1).qlim(2) - L(1).qlim(1));q2 = L(2).qlim(1) + rand * (L(2).qlim(2) - L(2).qlim(1));q3 = L(3).qlim(1) + rand * (L(3).qlim(2) - L(3).qlim(1));q4 = L(4).qlim(1) + rand * (L(4).qlim(2) - L(4).qlim(1));q5 = L(5).qlim(1) + rand * (L(5).qlim(2) - L(5).qlim(1));q = [q1 q2 q3 q4 q5];T = Five_dof.fkine(q);P(i, :) = transl(T);
endfigure;
plot3(P(:,1), P(:,2), P(:,3), 'b.', 'markersize', 1);
xlabel('X-axis');
ylabel('Y-axis');
zlabel('Z-axis');
title('Workspace of 5-DOF Robot');
grid on;
axis equal;

设置30000次迭代(30000个散点构成工作空间轮廓)
预设存储点数组,大小为num,存储三维坐标,因此第二参为3.
每次迭代都会随机生成5个关节的关节变量,然后计算T变换矩阵
然后利用transl将变换矩阵变为三维空间的点,存入预定义数组P中(P(i,:) 表示矩阵 P 的第 i 行的所有列。换句话说,P(i,:) 是一个 1x3 的行向量,用于存储第 i 个样本的末端执行器位置。)
最后plot3将P中每一个点的坐标绘制出来,并保持grid on;意思是叠加。(同理,P(:,1) ,P(:,2),P(:,3)表示所有行的第一列、第二列、第三列),把三位坐标分别取出来绘图。

完整代码

% 工作空间范围可视化L(1)=Link('revolute','d',0.216,'a',0,'alpha',pi/2);L(2)=Link('revolute','d',0,'a',0.5,'alpha',0,'offset',pi/2);L(3)=Link('revolute','d',0,'a',sqrt(0.145^2+0.42746^2),'alpha',0,'offset',-atan(427.46/145));L(4)=Link('revolute','d',0,'a',0,'alpha',pi/2,'offset',atan(427.46/145));L(5)=Link('revolute','d',0.258,'a',0,'alpha',0);Five_dof=SerialLink(L,'name','五轴机器人');Five_dof.base=transl(0,0,0.28);%Five_dof.teach;L(1).qlim=[-150,150]/180*pi; %qlim弧度限制   工作空间范围可视化L(2).qlim=[-100,90]/180*pi;L(3).qlim=[-90,90]/180*pi;L(4).qlim=[-100,100]/180*pi;L(5).qlim=[-180,180]/180*pi;num=300; %随机次数300次P=zeros(num,3) %零矩阵(num*3行列)for i=1:num%最小关节角度+rand*(最大关节角度减去最小关节角度)q1=L(1).qlim(1)+rand*(L(1).qlim(2)-L(1).qlim(1)) q2=L(2).qlim(1)+rand*(L(2).qlim(2)-L(2).qlim(1))q3=L(3).qlim(1)+rand*(L(3).qlim(2)-L(3).qlim(1))q4=L(4).qlim(1)+rand*(L(4).qlim(2)-L(4).qlim(1))q5=L(5).qlim(1)+rand*(L(5).qlim(2)-L(5).qlim(1))q=[q1 q2 q3 q4 q5];T=Five_dof.fkine(q);%正向运动学 求得TFive_dof.plot(q);%可显示每次机械臂的实时位置%[x,y,z]=transl(T);%plot3(x,y,z,'B','markersize',1);P(i,:)=transl(T); %transl函数得出三维坐标点endplot3(P(:,1),P(:,2),P(:,3),'b.','markersize',1);%三维空间绘制%axis([-1.5 1.5 -1.5 -0.5 1.5]);hold on %保留机械臂grid ondaspect([1 1 1]);view([45 45]);Five_dof.plot([0 0 0 0 0]);

300次效果展示

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

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

相关文章

【项目】在AUTODL上使用langchain实现《红楼梦》知识图谱和RAG混合检索(三)知识图谱和路由部分

首先在数据集 - 开放知识图谱下载红楼梦的知识图谱,这个网站上有各种各样的知识图谱,可以挑你感兴趣的做( • ̀ω•́ ) 这个知识图谱的作者们已经将三元组抽取出来了,我们可以直接用,如果你对三元组是如何生成的感兴趣&#xf…

pycharm 最新版上一次编辑位置

2025nipycharm方法一:用快捷键(最方便)跳回上一次编辑位置:Windows/Linux: Ctrl Alt ←macOS: ⌘ Option ←跳到前一次位置:Windows/Linux: Ctrl Alt →macOS: ⌘ Option →方法二:显示工具栏按钮在…

前端性能监控与优化:从 Lighthouse 到 APM

在当今竞争激烈的数字环境中,用户对Web应用性能的要求日益提高。一个缓慢或响应迟钝的应用不仅会流失用户,更可能损害品牌形象和商业价值。因此,前端性能的监控与优化已成为前端开发不可或缺的关键环节。本文将深入探讨从基础的性能评估工具L…

TC_Motion多轴运动-电子齿轮

目录 电子齿轮 【基本概念】 【应用示例】 【开发总结】 END 电子齿轮 【基本概念】 定义:通过软件方法实现机械齿轮的速比调节功能(两个轴成线性比例旋转) 优点 免维护,告别机械损耗 易调节,任意修改齿轮比 精度高,无机械背隙 应用场景 多台电机拖动同一负载,要求多台…

CentOS 7 下载教程

访问阿里云镜像站 阿里巴巴开源镜像站 选择centos 点这个 选择7版本 进入isos目录 点这个 选择这个版本 因为这个镜像的日期更新 推荐下载 DVD 版:包含完整系统和常用软件,无需额外联网安装组件Minimal 版:精简版,仅包含基础系…

MAC在home下新建文件夹报错“mkdir: test: Operation not supported”

在Mac电脑中,home文件夹下不能直接mkdir,sudo 也还是不行,提示“mkdir: test: Operation not supported”。网上找的解决方案不好使,因为没有关闭系统完整性保护关闭系统完整性保护查看SIP当前的状态csrutil status如果是开启状态…

交叉导轨从测试仪到工作台的精密运动控制

在精密仪器领域微米级的运动精度与纳米级的稳定性往往是决定设备性能上限的核心指标。而支撑这一技术鸿沟跨越的,往往隐匿于机械结构的“毫厘之间”——交叉导轨。以下是其在不同精密仪器中的具体应用:光学测试仪:光学测试仪主要用于各种高精…

内网穿透的应用-Navidrome与cpolar本地搭建跨网络访问的云音乐服务器

文章目录前言1. 安装Docker2. 创建并启动Navidrome容器3. 公网远程访问本地Navidrome3.1 内网穿透工具安装3.2 创建远程连接公网地址3.3 使用固定公网地址远程访问前言 音乐收藏存在平台版权限制、音质压缩和访问不便等问题。Navidrome 开源音乐服务器与 cpolar 内网穿透服务的…

FastAPI 访问不了API文档或配置不生效的解决方法

FastAPI中文教程 本文背景 FastAPI框架自带交互式api文档,通过路由/docs或者/redoc 访问,但是FastAPI 的文档界面(如 /docs 和 /redoc)依赖于外部的 JavaScript 和 CSS 库,如果项目部署环境网络不佳或者无法访问外网的时候&…

IAR 集成开发环境入门指南:字体设置与调试实战

一、IAR 的基本使用教程1. IAR 颜色字体大小设置打开设置路径:点击顶部菜单栏 Tools → 选择 Options,打开 IDE 配置窗口。进入字体颜色设置界面:在弹出的 “IDE Options” 窗口中,双击展开 Editor 选项,然后点击 Colo…

10:00开始面试,10:06就出来了,问的问题有点变态。。。

从小厂出来,没想到在另一家公司又寄了。到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到8月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40%,这…

Flink 状态管理的核心能力

我们来看一个复杂的实际案例:阿里巴巴菜鸟的实时物流追踪系统。 该系统处理来自多个电商平台(天猫、淘宝、速卖通)的订单包裹,通过一个复杂的处理流程: 合并与去重:通过聚合操作将不同来源的订单合并并去重…

基于go语言的云原生TodoList Demo 项目,验证云原生核心特性

以下是一个基于 Go 语言 的云原生 TodoList Demo 项目,涵盖 容器化、Kubernetes 编排、CI/CD、可观测性、弹性扩缩容 等核心云原生特性,代码简洁且附详细操作指南,适合入门学习。项目概览 目标:实现一个支持增删改查(C…

手机能看、投屏 / 车机不能看与反向链接验证类似吗?

有一定关联,但两者的技术逻辑并非完全等同 ——“手机能看、投屏 / 车机不能看” 的核心原因更复杂,反向链接验证是其中一种可能的限制手段,但不是唯一甚至不是最主要的手段。要理清这个问题,需要先拆解 “投屏 / 车机播放受限” …

25年9月通信基础知识补充1:NTN-TDL信道建模matlab代码(satellite-communications toolbox学习)

看文献过程中不断发现有太多不懂的基础知识,故长期更新这类blog不断补充在这过程中学到的知识。由于这些内容与我的研究方向并不一定强相关,故记录不会很深入请见谅。 【通信基础知识补充10】25年9月通信基础知识补充1:NTN-TDL信道建模matlab…

洛谷P3370 【模板】字符串哈希 (哈希表)详解

题目如下:(注:解此题我只需左手一根指头,哈哈哈哈哈哈哈)注意,哈希表的好处是能大幅度减少寻找遍历的时间可能有人不理解哈希值, 这里哈希的模的值一般得是比较大的质数,如标准的100…

光子芯片驱动的胰腺癌早期检测:基于光学子空间神经网络的高效分割方法(未做完)

光子芯片驱动的胰腺癌早期检测:基于光学子空间神经网络的高效分割方法 1 论文核心概念 本文提出了一种基于集成光子芯片的光学子空间神经网络(Optical Subspace Neural Network, OSNN),用于胰腺癌的早期检测与图像分割。其核心思想是利用光子芯片的高并行性、低延迟和低能…

GraphRAG 工作原理逐步解析:从图创建到搜索的实战示例

本篇文章How GraphRAG Works Step-By-Step: From Graph Creation to Search with Real Examples | Towards AI详细介绍了GraphRAG的工作原理,适合对检索增强生成(RAG)和知识图谱感兴趣的读者。文章的技术亮点在于通过图结构提升信息检索效率&…

LAMPSecurity: CTF8靶场渗透

LAMPSecurity: CTF8 来自 <https://www.vulnhub.com/entry/lampsecurity-ctf8,87/> 1&#xff0c;将两台虚拟机网络连接都改为NAT模式 2&#xff0c;攻击机上做namp局域网扫描发现靶机 nmap -sn 192.168.23.0/24 那么攻击机IP为192.168.23.128&#xff0c;靶场IP192.168…

绿算技术闪耀智博会 赋能乡村振兴与产业升级

9月5日至7日&#xff0c;由宁波市人民政府、浙江省经济和信息化厅、中国信息通信研究院联合主办的第十五届智慧城市与智能经济博览会在宁波国际会展中心圆满落幕。绿算技术受邀参展&#xff0c;并发布与北京东方联鸣科技发展有限公司联合打造的《360数智牧业AI模型支撑底座》&a…