逆運動学 で制御 ーロボットアーム自作への道2ー

Home > Advent Calendar > 逆運動学 で制御 ーロボットアーム自作への道2ー
すき 4
うんこ 1

さて今回は前回作ったロボットアームを本格的に動かしていきたいと思います。

以下の書籍で逆運動学なるものを知りましたので、その逆運動学でロボットアームを制御します。

ROBO-ONEにチャレンジ! 二足歩行ロボット自作ガイド

ROBO-ONEにチャレンジ! 二足歩行ロボット自作ガイド

  • 一般社団法人二足歩行ロボット協会
  • オーム社
  • 価格¥3,080(2025/06/14 11:48時点)
  • 発売日2018/04/21
  • 商品ランキング246,520位

ここではアームにペンをつけて文字を書かせてみます。

 

 

逆運動学とは

前回は各サーボモータの角度を指定して、ロボットアームの姿勢を制御していました。つまり各サーボの角度でアーム先端の座標(x, y, z)が決まります。これを順運動学(Forward Kinematics)といいます。

逆運動学(Inverse Kinematics)とは、まさに逆でロボットアーム先端の座標(x, y, z)を指定して、各サーボの角度を算出する手法です。IKなどと言われているようです。

逆運動学によるサーボ角度算出

前回作ったロボットアームにマジックペンをつけて、ペン先の座標を指定して文字を書くことを目指します。

各アームの長さは以下の通りです。
 L1=92 mm
 L2=137 mm
 L3=165 mm

 
それでは算出していきましょう!
座標は以下のように平面上を(x, y)、高さをzとします。

首振りサーボの角度θ1は平面座標(x, y)ですぐ導出できます。

θ1=tan1(yx)

 

2個目のサーボの角度θ2は余弦定理を用いて導出します。

L32=L22+ld22L2ldcosθ2

θ2=cos1(L22+ld2L322L2ld)

θ2=θ2+φ=cos1(L22+ld2L322L2ld)+φ

φ=tan1(zL1l)

ld=l2+(zL1)2

l=x2+y2

 

3個目のサーボの角度θ3も余弦定理を用いて導出します。

ld2=L22+L322L2L3cos(90°+θ3)=L22+L32+2L2L3sinθ3

θ3=sin1(ld2L22L322L2L3)

 

以上のとおり、所望の座標(x, y, z)とロボットアームの長さL1L2L3からサーボの角度を導出することができました。

参考

 

動作

逆運動学によって座標の指定のみでロボットアームの制御ができるようになったので以下のように線がひけます。

 

 

Arduinoコード

冒頭に紹介した書籍の第5章サンプルコードを参考にプログラミングしました。
以下でArduinoサンプルコードをダウンロードできます。ありがたい!
 https://www.ohmsha.co.jp/book/9784274222115/

求めた逆運動学の式を用いてロボットアーム先端の座標を制御します。
シリアルモニタで打ち込んだ文字によってロボットアームの動作を選択しています。

おわりに

逆運動学によって座標の指定でロボットアームを自由に動かせるようになりました。

 

 

さて、次は現状ちょっと可動範囲が狭いのでアームの構成の調整と
もっと手軽にアームを制御できるように工夫したいと思います。

それではまた

次の記事

Processing で制御 ーロボットアーム自作への道3ー

コメントはこちらから

メールアドレスが公開されることはありません。コメントのみでもOKです。

This site uses Akismet to reduce spam. Learn how your comment data is processed.