詳解確率ロボティクスの訂正・コードのアップデート
Sun May 23 09:15:20 JST 2021 (modified: Sun Apr 30 17:43:22 JST 2023)
views: 2063, keywords: 詳解確率ロボティクス
コードのアップデート
こちらはGitHubのコードに随時反映しています。本の内容については、もし第2版が出たらそのときにアップデートします。アップデート前のコードについては、横にコメントアウトして残してあるので、もし動かないときは、そちらのコードを試してみてください。
section_sensor/lidar_200.ipynbセル[9]
Pandas 2.x系で、前のセルのvalue_count
が集計した列にcount
と名前をつけるようになったことに対するコードの修正。
"probs"] = freqs["count"]/len(freqs["count"]) # 古いバージョン: freqs["probs"] = freqs["lidar"]/len(data["lidar"]) ###addprobs###
freqs[ freqs.transpose()
情報提供
lidar_200.ipynbの9のfreq[“lidar”]で失敗します。
— 女児 (@YuK_Ota) April 30, 2023
8のDataframeを作る際にvalue_countからの返り値を渡してますが、これにcountという名前がつくようになったためっぽいです。
ありがとうございます。
section_sensor/lidar_600.ipynbセル[8]
seaborn(0.12以降?)のjointplot
の引数が変わったことへの対応。このコードで動かない場合は、matplotlib
もアップデートが必要。
="hour", y="lidar", kind="kde") #古いバージョン: sns.jointplot(data["hour"], data["lidar"], data, kind="kde")
sns.jointplot(data, x plt.show()
section_sensor/lidar_600.ipynbセル[11]
pandas(2.x)でデータが自動でソートされなくなったことへの対応。sort_values
をくっつけました。
= pd.DataFrame(probs.transpose().sum()).sort_values("lidar") #行と列を転置して各列を合計 #旧バージョン: p_z = pd.DataFrame(probs.transpose().sum())
p_z
p_z.plot() p_z.transpose()
section_sensor/lidar_600.ipynbセル[13]
上の訂正と同じ理由。
= (probs/p_t[0]).sort_values("lidar") #列(時間)ごとにP(t)で割るとP(x|t)となる ###lidar600cond #旧バージョン: cond_z_t = probs/p_t[0]
cond_z_t cond_z_t
section_sensor/multi_gauss1.ipynbセル[1]最後から2行目
seaborn(0.12以降?)のjointplot
の引数が変わったことへの対応。このコードで動かない場合は、matplotlib
もアップデートが必要。
(略)="ir", y="lidar", kind="kde") #旧バージョン: sns.jointplot(d["ir"], d["lidar"], d, kind="kde")
sns.jointplot(d, x plt.show()
section_sensor/multi_gauss2.ipynbセル[2]
seaborn(0.12以降?)のjointplot
の引数が変わったことへの対応。このコードで動かない場合は、matplotlib
もアップデートが必要。
="ir", y="lidar", kind="kde") #度数分布を描画 #旧バージョン: sns.jointplot(d["ir"], d["lidar"], d, kind="kde")
sns.jointplot(d, x d.cov()
訂正事項
場所 | 訂正事項 | 発見者 | 一言 |
---|---|---|---|
p.143 式(6.15)の真ん中の行列の2行目 | \( \omega \Longrightarrow \omega_t \) |
|
見落としてました・・・ |
p.247 本文10行目 | 消費電力量を0からマイナスしたものに-1をかけたものを \( \Longrightarrow \)消費電力量に-1をかけたものを |
|
いとこのいとこは自分だみたいな文になってますね・・・ |
第5刷で訂正済み
場所 | 訂正事項 | 発見者 | 一言 |
---|---|---|---|
p.8 14行目 | 一般的 \( \Longrightarrow \) 一般化 |
|
変換ミスです・・・ |
p.20 下から2行目 | 頻度が大きい \( \Longrightarrow \) 頻度が高い | 上田 | 頻度は「高い」「低い」です。 |
p.91 1、3行目 | 角度、角速度\( \Longrightarrow \)速度、角速度 |
|
1箇所ならともかくコピペで2箇所間違えました。 |
p.96 noise_simulation7 .ipynb [3] 19行目、p.97 noise_simulation8 .ipynb [3] 26行目、p.98 noise_simulation9 .ipynb [3] 31、38行目、p.99 noise_simulation10 .ipynb [3] 47行目、p.127 mcl11.ipynb [2] 19行目 |
relative_polar_pos $$\longrightarrow$$ observation_function |
|
コードの差し替えミスでした。 |
p.173 式(7.33)、式(7.35) | \( (1-\tilde{N})/N \) \( \Longrightarrow \) \( (N-\tilde{N})/N \) |
|
算数は苦手です。 |
第4刷で訂正済み
場所 | 訂正事項 | 発見者 | 一言 |
---|---|---|---|
p.56 式(2.94) | 積分は不要 | 上田 | \( \boldsymbol{x}\)で積分したら\(p_3\)が\( \boldsymbol{x} \)の関数にならないじゃないか・・・ |
p.62 | section_sentor \( \Longrightarrow \) section_sensor |
|
sentorとは。 |
p.80 ideal_robot10.ipynb [7] 21行目 |
relative_polar_pos $$\longrightarrow$$ observation_function |
@maskot1977さん | コードの差し替えミスでした。 |
p.186 ページ上にある式番号を振っていない3行の式 | 1行目から2行目のイコールまでが不要。2行目の「右の分布から不要な・・・」という補足も不要。つまり、2行目と3行目をイコールでつないだ式が書いてあれば十分。 | 上田 | 式(8.10)と比べると余計な記述をしていると思いました。 |
p.191 式(8.33)の最後の行列 | 右上の要素の\( \ell^2_{\hat{\boldsymbol{m}}_{t-1}} \)と左下の要素の\( \ell_{\hat{\boldsymbol{m}}_{t-1}} \)を入れ替え |
|
コピペミスです・・・。 |
p.196 式(8.54) | \( \lt N(m) \gt_m \) \( \Longrightarrow \) \( [[ N(m) ]]_m \) | 上田 | 凡ミスです。 |
p.233 式(9.65) | \( \Omega_{j,t} = R_{j,t}Q_{j,t}R_{j,t}^\top \) \( \Longrightarrow \) \( \Omega_{j,t} = (R_{j,t}Q_{j,t}R_{j,t}^\top)^{-1} \) | hotsuyukiさん | 気を抜いておりました・・・ |
p.233 式(9.65)の下の行 | 写像した共分散行列です。\( \Longrightarrow \)写像して得られる精度行列です。 | hotsuyukiさん | 上の訂正に伴う訂正です |
p.233 セルの24行目、p.237 セルの16行目 | 右辺の行列をnp.linalg.inv( R.dot(Q1).dot(R.T)) と逆行列に訂正 |
hotsuyukiさん | 上の訂正に伴う訂正です |
p.234 図9.12(c) | この図に差し替え | hotsuyukiさん | 上の訂正に伴う訂正です |
p.234 最終行 | 方向に星印が移動\( \Longrightarrow \)方向に、わずかに星印が移動 | hotsuyukiさん | 上の訂正に伴う訂正です |
p.364 脚注2 | 共分散行列 \( \Longrightarrow \) 半正定値対称行列 |
|
もう少し補足すると共分散行列ではなくて精度行列です。 |
第3刷で訂正済み
場所 | 訂正事項 | 発見者 | 一言 |
---|---|---|---|
p.16 本文下から2行目 | とうてい受け入れにくい$$\longrightarrow$$とうてい受け入れがたい | 上田 | 「難い」をひらがなに直すときに手違いがありました。 |
p.8 「冷戦期」の下の文 | Roudolf$$\longrightarrow$$Rudolf | 大変失礼いたしました。 | |
p.8 下から10行目 | ネリ・ゴードン(Neli ...$$\longrightarrow$$ニール・ゴードン(Neil ... | ずーっと間違えて覚えてました。名前間違えるのは最悪です。すんません・・・ | |
p.19 本文9行目 | こと分かります。$$\longrightarrow$$ことが分かります。 | ||
p.56 数式も含めて10行目 | 足し合わせもの$$\longrightarrow$$足し合わせたもの | ||
p.121 5.3.4の表題の下の行 | $$\delta_{\omega\omega} = 0.2 \delta_{\nu\omega} = 0$$$$\longrightarrow$$$$\delta_{\omega\omega} = 0.2, \delta_{\nu\omega} = 0$$ | ||
p.125 式も含めて下から10行目 | は,はそれぞれ$$\longrightarrow$$はそれぞれ | ||
p.147 式(6.26) | $$\hat{\mu}_x - m_y$$ $$\longrightarrow$$ $$\hat{\mu}_y - m_y$$ |
|
校正から漏れました |
p.156 式も含めて6行目 | N個ぶ$$\longrightarrow$$N個選ぶ | ||
p.239 6行目 | graphbased_slam..._sensor2$$\longrightarrow$$graphbased_slam...sensor2.ipynb | ||
p.259 本文6行目 | 区関数$$\longrightarrow$$区間数 | ||
p.285 下から3行目 | ようにをつけて$$\longrightarrow$$ように値をつけて | ||
p.313 12.4.1の表題の2行上 | この方法には$$\longrightarrow$$この方法は | ||
p.315 1行目 | 越えることに$$\longrightarrow$$越えるごとに | ||
p.327 下から4行目 | 作ること相当し$$\longrightarrow$$作ることに相当し | ||
p.345 中央 | 負担率(responsibilty)$$\longrightarrow$$負担率(responsibility) | 愛が足りない。 | |
p.375 本文下から2行目 | リポリトリ$$\longrightarrow$$リポジトリ | ||
p.379 [Gordon 1993] | Neli$$\longrightarrow$$Neil | 上に同じ。大変すみません。 | |
p.380 [Igl 2018] | Leanring$$\longrightarrow$$Learning | 勢いでタイプしてそのままになってました。 | |
p.380 [Kalman 1960] | Roudolf$$\longrightarrow$$Rudolf | すみません! | |
p.382 [Sutton 1996] | Advannces$$\longrightarrow$$Advances | Macのキーボードが・・・ |
第2刷で訂正済み
場所 | 訂正事項 | 発見者 | 一言 |
---|---|---|---|
p.75 ideal_robot7.ipynb [6]の6行目 | landmark_id = len(self.landmarks) + 1 $$\longrightarrow$$ landmark_id = len(self.landmarks) |
|
リポジトリのコードも直しておきました。 |
p.94 4.3節の5行目 | 次の4種類 $$\longrightarrow$$ 次の5種類 |
|
修正漏れです |
p.99 下から2,3行目、p.100のコードと1行目 | occulusion $$\longrightarrow$$ occlusion |
|
よくやるタイプミス&修正漏れですすみません・・・ |
p.364 式(B.20)の右辺 | $$-\frac{1}{2}\boldsymbol{x}^\top (G^\top \Sigma_2^{-1} G - \Sigma_1^{-1})\boldsymbol{x}$$ $$\longrightarrow$$ $$-\frac{1}{2}\boldsymbol{x}^\top (G^\top \Sigma_2^{-1} G + \Sigma_1^{-1})\boldsymbol{x}$$ |
|
すみません・・・ |