mechatronics / robotics
Blog
  • HOME »
  • Blog »
  • unity

unity

Unity Arm Robot Inverse Kinematics -analytical approach

Explaining analytical approach to inverse kinematics for robot arm. This method is applyed only for robots that have a spherical wrist (axis of joints P4,P5,P6 meets at one point). And robot should not have joint offsets. reference : textbook “Robotics” by Hirose Vector $(a,b)$ represents the direction and rotation of end effector. \begin{align*} (a,b) = R^Y R^P R^R\begin{bmatrix} 1 & 0 \\ 0 & 0 \\ 0 & 1 \end{bmatrix} \end{align*} \begin{align*} \begin{bmatrix} a_{x} & b_{x} \\ a_{y} & b_{y} \\ a_{z} & b_{z} \end{bmatrix} = \begin{bmatrix} C_{Y} C_{P} & C_{Y} S_{P} C_{R} + S_{Y} S_{R} \\ S_{Y} C_{P} & S_{Y} S_{P} C_{R} – C_{Y} S_{R} \\ – S_{P} & …

スマホVR用コントローラを製作

GoogleのCardboardのようなスマートフォンを利用した簡易VR用のコントローラを作りました。筐体を両手で保持しながら指でゲームパッド的にボタンを押せるものです。通信はBluetooth(BLE)を使っています。 ⚫️コントローラ側 ボタン(8個)の押されている状態を8bitで表して、それをBLEでスマートフォン(iPhone)に送信します。 BLEモジュールはRN4020を、CPUはLPC1114を使用しました。下記のサンプルコードはArduino的に書いたものです。 サンプルコード: ⚫️スマホ側 スマホに表示するサンプルアプリはUnityで作ります。空間にCubeがひとつだけあってコントローラのボタンで視点(カメラ位置)を前後左右に移動させることにします。 (1) まずGoogle VR SDKをインポートします。Cubeがひとつあるプロジェクトを開いた状態で、ダウンロードしたGoogleVRForUnity.unitypackageをダブルクリックしてimportします。ProjectビューにGoogleVRがでてくるのでそのなかのPrefabs>GvrViewerMainをHierarchyビューにドラッグ&ドロップします。再生ボタンで実行すると両眼用の画面がでてくると思います。 (2) コントローラからのコマンドをカメラ位置に反映させるためにMainCameraにスクリプトを追加します。コマンドをcmdとして受け取ってその値によってカメラ位置を移動します。OnUpdateBle(string command)がBLEでコマンドを受信した時にiOS側から呼ばれるコールバック関数です。 (3) 次にコントローラとBLE通信するiOSソフト(Native Plugin)の部分です。Objective-cで記述して.mmという拡張子にします。 UnitySendMessage()のところでUnity側にコマンドを送信しています。extern “C”の部分はNative Plugin側の呼び出しインターフェイスで、Unity側のc#インターフェイスから呼ばれます。 (4) 最後にUnity側のc#インターフェイスです。

UnityでアームロボットIK

Explanation of analytical IK in details 前回のアームロボットシミュレーションに逆運動学(Inverse Kinematics)を導入してみました。スライダーでアーム先端の位置と姿勢(6軸)を指定するとロボットがこれを満足するように動きます。 IKの計算は広瀬著「ロボット工学」を参考にしました。あまり広範囲には動かせないようにしていますのでとりあえずうまくいっているようです。

Unityでアームロボットをシミュレーション

安川電機のアームロボットを遠隔操作する案件があり、基本的にはWebカメラで見るのですが、ロボットの現在状況を3Dで表示したいということでUnityを使ってみました。 Unityに関しては、Courseraのゲーム開発のコースを途中まで視聴した程度のレベルです。ですのでシミュレーションといってもアニメーションを表示するだけのものです。 ここではわかりやすくするためにロボットの関節角度をUnityのUIスライダーで与えています。実際にはロボットの関節角度データはロボットのコントローラからもらいます. 台座から手先に向けて順番に入れ子構造にしていくことで、ある関節を回した時にそこから先のアームを一体で動かすことができます。各アームは根元から、S、L、U、R、B、Tと名前がついています。アームにはそれぞれ円柱部材(Axis)があって、それより手先側のアセンブリの回転軸となっています。 Cadのデータを使ってかっこよくしたものがこちらです。 描画フレームごとにスクリプト(RotationScript.cs)で各軸の回転処理を行います。

PAGETOP
Copyright © Meuse Robotics All Rights Reserved.
Powered by WordPress & BizVektor Theme by Vektor,Inc. technology.