メインコンテンツまでスキップ

ITに数学は必要?? ロボット制御のための三角関数活用法!

内田
開発一部第5課

こんにちは。開発一部の内田です。

はじめに

ITの業界では結構学生時代に勉強した内容が利用されています。その一例を紹介します。

みなさんは、学校で習ったことが将来どう役に立つのかな?と疑問を持ちながら勉強していた方が多いのではないでしょうか?
今回は三角関数の「サイン、コサイン、タンジェント」を例に世の中で実際にどのように使われているのか?
学校で学んだことがIT技術にどう必要なのか?について紹介していきます。

世間一般の三角関数の使われ方

三角関数は意外と皆さんが知らないところで様々な分野で活用されています。

身近なものだとGPSが有名ですね。
ぼくは方向音痴なので待ち合わせ場所にたどり着くまでよくお世話になっています。
GPSは位置を計測するために三角関数が使われていたりします。

他で使用されている身近な例をあげると音などが該当するのはあまり知られていないかもしれません。
実は、音というのは電波の波が規則正しい波で出来ており
三角関数は、その波を表現するのにも使われていたり...

少し例に上げただけでも身近に実は三角関数が使用されており
今の生活にはなくてはならない重要そうなことがわかりますね!

まだまだ他にも活用されている事例があるため、少しでも興味が湧いてきた方はご自分で調べてみてください。

ただ、いろいろ調べてみても何かに使われているかはわかるけど、具体的にどのように利用されているのか?
そこがわからないと実際に勉強したことが役にってる実感が湧かないですよね...

少しでもわかるように具体例を交えて紹介していきたいと思います!

三角関数とロボットアームの関係

近年、ロボットアームも産業用だったり医療用だったり様々な分野で活躍しています。
ニュースとかドラマとかでも見たことありますよね?
そのアームの動きをコントロール(制御)するために三角関数が必要になってきます。

アームの動きって?イメージがつかみにくい感じだと思うので、
自分の体を使ってイメージするところからはじめましょう!

それでは、肘を固定して肘の曲げ伸ばしをしてみてください。
当然の話ですが肘を曲げたり伸ばしたりすると手先の位置が変わりますよね?
つまり、肘関節の角度が変われば手先位置がその分だけ移動していることがわかると思います。

illust_1

角度と位置...三角関数を使えば式で表せそうな気がしてきませんか?

三角関数を応用した数学の話

角度と位置といえば...

点Aが直交座標(x,y),極座標(r,θ)で表されるとき、

x = r * cosθ
y = r * sinθ

が成立しますよみたいな話、高校で勉強したかと思いますが覚えてますかね?

coordinates_3

もし基礎的な部分を忘れてしまってたらググってみてください!
難しい内容ではないので簡単に思い出せると思います。

例えば、原点Oを肘、点Aを手先位置、rを肘から手先までの長さ、θを肘の角度とします。
腕の長さが伸びたり縮んだりはしないのでrの値は固定値とします。

illust_2

これは手先位置が決まれば肘の角度はわかるし、肘の角度が決まれば手先位置はわかるという関係が成り立っています。

ここまでで三角関数を使えばアームの動きを式で表すことができる!
ってところまでは理解できたかと思います。
これだけではまだ役立ってる感がピンときてないのではないでしょうか?

次は動きを式で表すと何がうれしいのかを説明していきます!

関係式の活用方法

人間とロボット、それぞれの動力源について考えてみましょう!

先ほど自分の体を使って肘の曲げ伸ばしをしてもらいましたが、
人間の場合は筋肉の収縮と弛緩によって各関節の曲げ伸ばしを実現しています。
ロボットの場合は、筋肉の代わりにモーターの回転によって各関節の曲げ伸ばしを実現しています。

⇒人間とロボットの稼働する仕組みの違い

  • 人間:筋肉の収縮と弛緩
  • ロボット:モーターの回転

すなわちロボットで各関節の動きを実現するには、
筋肉の代わりとなるモーターの回転角度を制御する必要があるということです。

ロボットアームの手先をこの位置に動かしたい!という目標位置がある場合、
関係式にあてはめれば目標角度も計算できますね。
あとはその目標角度になるようにモーターを回転させてあげればよいということです。

プログラムに関係式を組み込めば目標位置が変動した場合でも
リアルタイムで目標角度を算出でき自動でアームの動きを制御することができるわけです!

三角関数は回転運動をリアルタイムで自動制御する際に役立つという話でした!!!

さいごに

今回の話はあくまで簡単な例になります。
実際にロボットアームを制御する場合は重力など様々な力のつり合いを考慮したり、
二次元ではなく三次元での動きを考慮したりなどややこしい話が多々あります。

またこれらにも三角関数は使われています...
あとはフィードバック制御には欠かせないセンサーの話も割愛していますので
機会があれば今後もこのへんの紹介もできればなと思います。

今回は、学校で学んだ数学(基礎の重要な部分)が使われていますという紹介でした。