Matlab機器人工具箱使用4 蒙特卡洛法繪制工作區間

原理:利用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…