ロボットモデリング 正誤表(2010.05.13)
修正が多くて申し訳ありません.ソースファイルは,動作確認済みです.
http://www.ikko.k.hosei.ac.jp/~matlab/robotmodeling/RobotModeling.zip
もし動かない場合には,そちらでの確認をお願いいたします.
-------------------------------------------------------------------------------
GUIDEからAppDesignerへの移行のための対応(2021年5月06日)
GUIDEの使用が非推奨になったため、uicontrol関数を使わないバージョンに変更しました。
変更したファイルは、下記の通りです。
uisliderのサイズが、従来のuicontrolによるスライダーと較べて大きく
なってしまったため、スライダ用ウィンドウを出すようにしました。
動作は、MATLAB 2020bにより確認しました。
追加変更したファイルは、下記の通りです。
ch4\p50_2021.m
ch4\p51_2021.m
ch4\p52_2021.m
ch5\mobile2demo2021.m
ch5\mobile1mapsim2021.m
ch5\mobile2sub2021.m
ch5\vehi0demo2021.m
ch5\vehi0sub2021.m
ch5\vehi1demo2021.m
ch5\vehi1sub2021.m
ch6\vectest4demo2021.m
ch6\vectest4sub2021.m
ch7\uiradiodemo2021.m
ch7\vectest1demo2021.m
ch7\vectest2demo2021.m
ch7\vectest5demo2021.m
ch7\vectest6demo2021.m
ch7\vectest6invdemo2021.m
ch7\vectest7demo2021.m
ch7\vectest9demo2021.m
ch7\vectest9plot_2021.m
ch7\vectest9plot2_2021.m
ch7\vectest9sub2021.m
ch7\vectest9makeui2021.m
ch7\vectest10demo2021.m
ch7\vectest11demo2021.m
ch7\vectest11ademo2021.m
-------------------------------------------------------------------------------
SimScapeの仕様変更による対応(2020年6月28日)
Simscapeの部分は、MATLAB 2020aにより確認しました。
追加変更したファイルは、下記の通りです。
ch7\armtest3sim2020.slx
ch7\vectest9asim2020.slx
ch7\vectest9asim2020demo.m
ch7\vectest9ademo2.m dtを0.01から0.001に変更しました。
ch7\vectest9mat2020.mat
既知の問題
Symbolic math toolboxの仕様変更により、simple関数が無くなりました。
simple関数を使っているところは、simplify関数に置き換えてください。
--------------------------------------------------------------------------------
正誤表(追加 2010年05月13日)
p.36 plot関数内に無駄な引数が入っていました。これにより,最後に引かれる線の色が変わります。p.37のスクリプトの表示と一致するようにするためには,以下のように修正する必要があります。
誤
>> plot([0,1],[0,0],[1,1],[0,1],[1,0],[1,1],[0,0],[1,1],[0,0],[1,0],'linewidth',5);
正
>> plot([0,1],[0,0],[1,1],[0,1],[1,0],[1,1],[0,0],[1,0],'linewidth',5);
--------------------------------------------------------------------------------
正誤表(追加 2009年11月26日)
p.153 正確には誤りではありませんが、MATLABのバージョンが異なると見た目の計算結果が異なるようです。(シンボリック演算ではよくあることです。)
これは、simple関数を使うと同じ表記に変換することができます。
誤
>> expm(wedge(a(1),a(2),a(3))*theta)
正
>> simple(expm(wedge(a(1),a(2),a(3))*theta))
--------------------------------------------------------------------------------
正誤表(追加 2009年11月12日)
p.128 図6・5のキャプション
誤
f_1とθ_1,θ_2との関係;
正
f_3xとθ_1,θ_2との関係;
p.128 図6・6のキャプション
誤
f_2とθ_1,θ_2との関係;
正
f_3yとθ_1,θ_2との関係;
p.142 図7・1 左上の座標
誤
(0,1,0)
正
(0,0,1)
--------------------------------------------------------------------------------
正誤表(追加 2009年7月3日)
p.81のプログラムリスト
誤
close all
gmap=makemapsim';
正
close all;
gmap=mobile1mapsim';
--------------------------------------------------------------------------------
正誤表(追加 2009年6月18日)
p.75のプログラムリスト
誤
makemapsim関数で作成したマップ行列の全景を表示するには、plot関数により、
gmap=mobile1mapsim;gap=gmap';
正
makemapsim関数で作成したマップ行列の全景を表示するには、plot関数により、
gmap=mobile1mapsim;gmap=gmap';
p.80 mobile2demo.m下から2行目
誤
set(hspeed,'callback','flag=2;mobile2sub;');
正
set(hv,'callback','flag=2;mobile2sub;');
--------------------------------------------------------------------------------
正誤表(追加 2009年6月12日)
p.66の文中の式が間違えていました。
誤
まず,sin(theta(k+1))^2+sin(theta(k+1))^2=1の関係を使うと,
正
まず,sin^2(theta(k+1))+cos^2(theta(k+1))=1の関係を使うと,
--------------------------------------------------------------------------------
正誤表(追加 2008年1月11日)
p.17の式(2.2)でA行列が抜けていました。
誤
A^(-1)*b=A^(-1)*x , A^(-1)*A=I より
正
A^(-1)*b=A^(-1)*A*x , A^(-1)*A=I より
--------------------------------------------------------------------------------
正誤表(追加 2007年11月7日)
p.124 の式(6.19)にマイナスが抜けていました。
誤
f_1=\frac{l_2}{l_1}f_2
正
f_1=-\frac{l_2}{l_1}f_2
p.124の式(6.21)のqはq_3の誤りです。
誤
q
正
q_3
--------------------------------------------------------------------------------
正誤表(追加 2007年10月1日)
p.114の図6.2のx軸、y軸の表記が逆になっていました。
正しくは、上向きがy軸、横向きがx軸となります。
--------------------------------------------------------------------------------
正誤表(追加 2007年7月25日)
p.120 式(6.12)の2行目の式 イコールが抜けていました。
誤
[0p2;1]=[[0x2;0y2];1][cos(theta_1),-sin(theta_1),l_1;sin(theta_1),cos(theta_1),0;0,0,1]・・・
正
[0p2;1]=[[0x2;0y2];1]=[cos(theta_1),-sin(theta_1),l_1;sin(theta_1),cos(theta_1),0;0,0,1]・・・
p.165 スクリプトr2ath.mのバグについて
通常のスクリプトでの実行のときは問題ありませんが、コマンドウィンドウ上で実行した場合のみ結果が変わってしまいます。
バグの例
>> r2ath(ath2r([0;0;1],3))
ans =
0
0
1.0000
この場合、[0;0;3]と出力しなければならないはずが、単位ベクトルの値しか出力されません。
ちなみに、
>> ath = r2ath(ath2r([0;0;1],3))
とすれば、正常な計算ができます。ほとんど問題はないと思いますが、一応バグですので、これを修正するには、r2ath.mの最後の行のところを下のように修正すれば正常な計算結果を得ることができるようになります。
誤
if(nargout == 1) a = a * th;end
正
if(nargout <= 1) a = a * th;end
として変更してください。
--------------------------------------------------------------------------------
正誤表(2007年7月15日)
http://www.ikko.k.hosei.ac.jp/~matlab/robotmodeling/robotmodelingseigo.pdf