ゼロからのロボットアーム入門

~ ロボットの基本操作 ~

大阪大学 小野研究室 中島優作


← シリーズ一覧に戻る

このスライドの担当範囲

    • ロボットアームの動作生成でよく使われる仕組みを学んでいきます。
    • コードなどはUniversalRobotの例を扱います(他のメーカーでも概ね同じ機能があるはずです)。

オススメ参考資料

このスライドと教科書の併用をおススメします

    産業用ロボットtheビギニング - 産業用ロボットの基礎的な情報を網羅

    イラストで学ぶロボット工学 - 学部生向けの教科書, 本格的な制御の本だが読みやすい

ロボット動作の方法

ティーチングペンダント

  • ロボット用の端末
  • 最近はLANを介してソフトウェアで行うものも多い

プログラミング

  • Python等で動作コードを作成
  • TPでは対応していない機能が使える

動作作成の手順

  1. TCPの設定
  2. 座標系の指定
  3. モーション種類の決定
  4. 実行・テスト

アプリを開いてください

全画面表示

この後の説明はアプリを見ながら行います

ステップ①TCPと重心

  • ロボットの手先に着けるツールをエンドエフェクタという
  • エンドエフェクタの中で実際に動かす座標系のことをTCPという
  • 例)エンドエフェクタは乳棒とヘラ

    TCPは乳棒とヘラのそれぞれの先端

複数のTCP

  • それぞれのツールに対してTCPを登録しておくと便利
  • 例)TCPを乳棒とヘラの先端に設定

    場面によってTCPを切り替えることで最小限のプログラムの変更で複数のツールが使える

エンドエフェクタの重心設定

エンドエフェクタの重心設定は以下で役に立つ

  • フリードライブでの重力補償
  • 手先のフォーストルクセンサ値の重力補償
  • 加減速の調整

ステップ②ロボットの座標系

関節座標系

関節それぞれの角度を指定

ベース座標系

ロボットの根本を基準にTCPの座標を指定

ツール座標系

現在のTCPの座標系を基準に次のTCPの座標系を指定

座標系による動きの違いを確認↓

ジョグ動作

  • 関節や手先を少しずつ動かす動作をジョグ動作という
  • アプリのジョグ機能を使うと、関節座標系、ベース座標系、ツール座標系での動きの違いが確認できる

座標系の表現↓

TCPの姿勢表現

姿勢(pose) = 位置 + 向きで表すことが多い

基本はXYZの座標系に対する位置と向きを考える

全画面表示

ステップ③ロボットモーションは3種類

  • PTP:最短, 高速
  • LIN:直線, 動作制限
  • CIRC:円弧, 障害物回避
  • 詳細は以下↓

    PTPの詳細

    • 関節空間での最短経路
    • 各関節が最も速く目標に到達するように動く(グラフ)
    • 手先の軌道は予測できない
    • 障害物がない環境で使用する動作モード

    LINの詳細

    • 直線動作
    • 手先が直線的に移動
    • 関節の可動範囲や特異点により動きに制限
    • 部品挿入や溶接で使用
    • PTPよりも時間がかかる

    CIRCの詳細

    • 円弧動作
    • 中間点を指定して円弧を描く
    • 障害物回避や滑らかな動作で使用
    • 角を持つ物体の加工などに有効
    • 3点(始点・中間点・終点)が必要

    連続的なロボットモーション

    • 複数の姿勢(waypoints)を指定して動かしたときに動きがガタつく

    ガタツキの少ないモーションを作るには↓

    滑らかなモーションの作り方

    • waypointsをショートカットし滑らかな動作を実現
    • メーカーごとにこの機能の呼び方は異なりますが、ここではURに合わせてブレンド半径と呼びます

    ブレンド半径の良し悪し↓

    ブレンド半径の良し悪し

    • 二等分線を中心とした円が新しい経路です
    • 点を正確に通過しないので細かい動きはできません
    • 動作精度と動きの滑らかさのトレードオフで調整が必要です

    プログラムから動かす(URの例)

    • PTP = moveJ
    • LIN = moveL
    • CIRC = moveC

    ロボットアームの精度について

    • 仕様書は絶対位置決め精度ではない!
    • ISO9283は同じ動作の繰り返し精度を測定する
    • 例えば、電源を入れなおすと絶対位置は前回とずれる

    位置制御だけでは難しいタスク

    • 狭い場所に部品を入れる(例:Peg-in-holeタスク)などは位置制御だけだと難しい

    どういった工夫があるのか↓

    RCC(Remote Center Compliance)

    • 部品を嵌め合わせるなどの作業のずれを機械的に補償するツール
    • RCC自体はコンプライアンス制御に置き換わっている印象だが、柔らかい部品で緩衝する考えは治具づくりで有用

    コンプライアンス制御

    • ばねのような制御をセンサでソフトウェア的に実現
    • 手先のフォーストルクセンサを使う場合と使わない場合があります

    フォース制御

    • 任意の軸だけ一定の力をかける制御
    • 手先にフォーストルクセンサが必要です

    フォース制御とコンプライアンス制御の違い

    • フォース制御 → 一定の力をかける
    • コンプライアンス制御 → ばねのように柔らか

    オフラインシミュレーション

    • オフライン(実機なし)のシミュレーション
    • 動作前の事前検討

    シミュレーションはなぜ重要か↓

    ありがちなトラブル

    • 1. ロボットの手先が届かない
      実際に設置するとロボットの可動範囲が思ったより狭く手先が届かなかった→配置の再検討
    • 2. 思ったより遅い
      スループットの向上を期待したが実際に動かすと思ったより遅かった

    シミュレーションで未然に防げる

    シミュレーションの現状

    産業用ロボット

    • 自社で提供
    • 動作プログラムの作成・検証が可能

    協働ロボット

    • 直接ティーチング
    • 動かすまで分からない

    ※Universal RobotはUR Studioが利用可能

    協働ロボシミュレータの選択肢

    • 個人的にはRoboDKがおススメ
    • 色々なロボットに使える、直観的なGUI操作
    • CADのエッジからウェイポイント自動作成など便利機能あり

    ※RoboDKは位置制御にしか使えない点に注意

    ROSを使う?使わない?

    ROSによる動作生成

    • 複雑な動きを滑らかに
    • 様々なロボットやセンサを統合したい

    メーカー提供 or RoboDK

    • 直線などの組合せ
    • 周辺部品はメーカー品

    具体例↓

    ROSを動作生成で使う利点

    ROS生成モーション

    • PC上で完全に動作を計算してロボットに送る
    • 複雑な動作軌道を精密に制御したい場合

    メーカー提供モーション

    • ロボットコントローラでモーションを計算する
    • 動作軌道がシンプルor軌道が厳密でなくてよい場合

    ROSをシステム設計で使う利点

    ROSのシステム

    • 分散・モジュール型なので並列で開発を進めやすい
    • 複雑なシステムを他社ロボットに移植しやすい
    • 対応センサやアクチュエータは何でも接続できるが、どう使うのかは自分次第

    メーカー提供

    • 並列での開発は難しい場合が多い
    • 他社ロボットに移植不可だが、簡単な動作は問題にならない
    • メーカー提供品しか使えないが、GUIなどが整備されててすぐ使える

    付録:ロボットアーム選定

    ロボットアームの選び方

    ここでは協働ロボットを対象にしています

    ロボットアームの軸の数

    位置(3次元) + 向き(3次元) → 姿勢(6次元) = 6軸

    4軸ロボットの例
    常に下向きという制限

    ピックアンドプレースならこれでok

    6軸ロボットの例
    位置も向き自由

    色々な作業に

    6軸はざっくり4種類

    産業用ロボット

    高精度・高信頼性
    400万円〜

    大手協働ロボット

    人との協働・安全
    300万円〜

    格安協働ロボット

    コスト重視
    50万円〜

    教育用ロボット

    学習・原理理解
    10万円〜

    産業用ロボット

    特徴

    • FANUC、Yaskawa、Kawasaki、Denso
    • 柵が必要
    • 高精度・高速・高信頼性
    • 製造業での実績豊富
    • メンテナンス体制や機能が充実

    大手協働ロボット

    特徴

    • UR、Franka Emika、DOBOT
    • 人との協働作業が可能
    • 安全機能内蔵
    • 直感的なプログラミング
    • 柔軟な外部制御(メーカーによる)

    格安協働ロボット

    特徴

    • DOBOT、xArm、FairInovation
    • コストパフォーマンス重視
    • 位置制御くらいなら基本機能は十分
    • Python制御対応が多い
    • メーカーによっては故障リスクもある印象

    教育用ロボット

    特徴

    • 勉強用途
    • 組み立てから学習可能なものもある
    • 低コストに始められる
    • 原理理解に適している

    付録:UR Tips

    • Universal robotユーザが多いので
    • Universal robotを使う上での便利機能の紹介
    • 主にシミュレータとモーションの話

    シミュレータ UR Studio

    • オンライン、無料で使える
    • 25年8月時点では動作が遅いが後々改善されるはず
    • 機能はRoboDKの方が上だが、これで十分な場合も多いのでは

    モーション ver2

    • Polyscope ver5.22から使えるように(今後はこれが標準)
    • MoveJ(PTP),MoveL(LIN)ので振動が少なくなる
    • ブレンド半径が大きすぎる場合は自動調整
    • 調整すればROSレベルで滑らかに動ける

    フォースモード

    • URのフォース制御
    • 位置&向きの6軸について位置/力の制御を選択可能
    • 一定の力で押し付ける作業が得意

    URの回転表現について

    • デフォルトの回転表現は回転ベクトル
    • RPY(ロール、ピッチ、ヨー)で使うには変換が必要
    • Pythonの場合scipy.spatial.transformのRotationが便利

    servoJ/Lの注意点

    • servoJ/Lは最短&最速で移動するため危険!
    • ①事前にmoveJ/Lでゆっくり動かして軌道を確認
    • ②途中で意図しない姿勢を取っていないか必ず確認
  • ※servoJ/Lは目で追えないくらい早いです、十分理解してから使ってください
  • ありがとうございました

    ← シリーズ一覧に戻る