在MATLAB 2019 或者 2020 等高版本里,使用機器人工具箱(robotics toolbox/RTB)對機器人進行可視化時(比如robot.teach,robot.plot)會報錯:
Index exceeds the number of array elements (4). Error in SerialLink/plot>create_robot (line 473) d = norm( d(4:6)-d(1:3) ) / 72; Error in SerialLink/plot (line 256) handle = create_robot(robot, opt); Error in SerialLink/teach (line 102) robot.plot(q, args{:});
而在MATLAB 2018b及更早版本中不會報錯。此時只需在可視化語句之前加上
view(3)
即可解決。
然而每次都要寫這個太麻煩了,有一個一勞永逸的辦法。首先在命令窗口里鍵入
edit SerialLink.plot
之后應該彈出
然后在函數的第一行開始加入
[myModifyForViewErrorA,myModifyForViewErrorB]=view(gca); if isequal([myModifyForViewErrorA,myModifyForViewErrorB],[0,90]) view(3) end
如圖:
之后就不需要每次都寫view(3)了,和舊版本的用法一致。
注意以上代碼不能簡單用view(3)代替,如果只寫view(3)的話會在程序運行時不能拖動視角。按照當前解決方案,每次調用SerialLink.plot都會判斷一下當前視角,造成執行效率變低一點點點點點,而且當你拖動到正俯視圖視角時會自動變成view(3)視角。如果你有更好的解決方案,歡迎留言交流。