UR ドライバ、制御ドキュメント
UR ロボットを低次元から制御するためのマニュアル
Contents:
- 第1章 URロボット制御を始める
- 1.1 Universal Robotsとは
- 1.2 CBシリーズとe-Series
- 1.3 Pythonから制御する方法
- 1.4 公式 RTDE とは
- 1.5 SDU Robotics
ur_rtde - 1.6 Dashboard Server との違い
- 1.7 本ドキュメントで使用する構成
- 次章
- 第2章 インストールと接続設定
- 2.1 システム構成
- 2.2 必要なソフトウェア
- 2.3 OSごとのインストール
- 2.4 ロボットのIPアドレス
- 2.5 通信確認
- 2.6 Remote Controlとは
- 2.7 Remote Controlの有効化
- 2.8 Remote Mode
- 2.9 Pythonから接続
- 2.10 Receive Interface
- 2.11 IO Interface
- 2.12 よくあるエラー
- 2.13 接続確認チェックリスト
- 次章
- 第3章 RTDE と
ur_rtdeのアーキテクチャ - 3.1 Universal Robots 公式 RTDE
- 3.2 SDU Robotics
ur_rtde - 3.3
RTDEControlInterfaceの実体 - 3.4
RTDEReceiveInterface - 3.5
RTDEIOInterface - 3.6 Dashboard Server
- 3.7 Primary / Secondary Interface
- 3.8
URCtrlでの役割分担 - まとめ
- 第4章 RTDEControlInterface
- 4.1 RTDEControlInterface とは
- 4.2 Move命令の分類
- 4.3 moveJ
- 4.4 moveL
- 4.5 moveJとmoveLの違い
- 4.6 moveP
- 4.7 加速度
- 4.8 速度
- 4.9 非同期実行
- 4.10 停止命令
- 4.11 戻り値
- 4.12 推奨パターン
- 4.13 ur_ctrl.pyでの利用
- まとめ
- 第5章 RTDEReceiveInterface
- 5.1 Receive Interfaceとは
- 5.2 インスタンス生成
- 5.3 関節角度取得
- 5.4 関節速度
- 5.5 TCP位置取得
- 5.6 TCP速度
- 5.7 TCP Force
- 5.8 Robot Mode
- 5.9 Safety Mode
- 5.10 Runtime State
- 5.11 Digital Input
- 5.12 Digital Output
- 5.13 Joint Temperature
- 5.14 動作完了判定
- 5.15 停止判定
- 5.16 wait_move() の考え方
- 5.17 監視ループ
- 5.18 RTDEReceive の特徴
- まとめ
- 第6章 RTDEIOInterface
- 6.1 I/Oとは
- 6.2 IOの種類
- 6.3 RTDEIOInterface
- 6.4 Standard Digital Output
- 6.5 Standard Digital Input
- 6.6 Tool Digital Output
- 6.7 Tool Digital Input
- 6.8 Analog Output
- 6.9 Analog Input
- 6.10 グリッパ制御例
- 6.11 トグル動作
- 6.12 MoveとIOを組み合わせる
- 6.13 入力待ち
- 6.14 IO制御の注意点
- 6.15 ur_ctrl.pyでの実装
- まとめ
- 第7章 Dashboard Server
- 7.1 Dashboard Serverとは
- 7.2 接続ポート
- 7.3 コマンド送信
- 7.4 電源投入
- 7.5 Brake Release
- 7.6 Program Load
- 7.7 Program Play
- 7.8 Pause
- 7.9 Stop
- 7.10 Shutdown
- 7.11 Robot Status
- 7.12 Program Status
- 7.13 Safety Status
- 7.14 Protective Stop
- 7.15 Protective Stop解除
- 7.16 Safety Popup
- 7.17 Typical Recovery Sequence
- 7.18 RTDEとの役割分担
- 7.19 ur_ctrl.pyでの利用
- 7.20 自動運転の基本シーケンス
- まとめ
- 第8章 moveJ
- 8.1 moveJ とは
- 8.2 動作イメージ
- 8.3 TCPはどう動くか
- 8.4 利用用途
- 8.5 引数
- 8.6 q
- 8.7 speed
- 8.8 acceleration
- 8.9 asynchronous
- 8.10 戻り値
- 8.11 Blend Radius
- 8.12 到達判定
- 8.13 Joint Limit
- 8.14 衝突判定
- 8.15 moveJの長所
- 8.16 moveJの短所
- 8.17 moveLとの比較
- 8.18 推奨用途
- まとめ
- 第9章 moveL
- 9.1 moveLとは
- 9.2 moveJとの違い
- 9.3 TCPとは
- 9.4 Pose
- 9.5 姿勢
- 9.6 内部処理
- 9.7 Inverse Kinematics
- 9.8 特異点
- 9.9 speed
- 9.10 acceleration
- 9.11 Blend
- 9.12 加工用途
- 9.13 moveLが向かない用途
- 9.14 到達不能
- 9.15 姿勢変化
- 9.16 moveJとの使い分け
- 9.17 よくある失敗
- 9.18 ur_ctrl.pyでの実装
- 9.19 moveJとmoveLの選択指針
- まとめ
- 第10章 speedJ と speedL
- 10.1 Move命令との違い
- 10.2 speedJとは
- 10.3 引数
- 10.4 qd
- 10.5 time
- 10.6 speedL
- 10.7 speedL例
- 10.8 speedStop
- 10.9 速度制御の特徴
- 10.10 利用例
- 10.11 Moveとの比較
- 10.12 よくある失敗
- 10.13 ur_ctrl.pyでの設計
- まとめ
- 第11章 servoJ と servoL
- 11.1 moveJとの違い
- 11.2 servoJ の考え方
- 11.3 基本構文
- 11.4 q
- 11.5 dt
- 11.6 lookahead_time
- 11.7 gain
- 11.8 speed と acceleration
- 11.9 毎周期送る理由
- 11.10 servoStop()
- 11.11 servoL
- 11.12 moveJとの比較
- 11.13 speedJとの違い
- 11.14 ジョイスティック制御
- 11.15 Visual Servo
- 11.16 通信遅延
- 11.17 よくある失敗
- 11.18 ur_ctrl.pyでの設計
- 11.19 servoJを使うべき場面
- まとめ
- 第12章 Force Mode
- 12.1 位置制御と力制御
- 12.2 Force Mode の用途
- 12.3 基本構成
- 12.4 基本API
- 12.5 task_frame
- 12.6 selection_vector
- 12.7 wrench
- 12.8 force_type
- 12.9 limits
- 12.10 Force Mode 中の動作
- 12.11 荷重取得
- 12.12 終了
- 12.13 よくある用途
- 12.14 注意事項
- 12.15 moveJとの違い
- 12.16 ur_ctrl.pyでの設計
- まとめ
- 第13章 Freedrive Mode
- 13.1 Freedriveとは
- 13.2 ティーチングとの関係
- 13.3 Teach PendantでのFreedrive
- 13.4 Pythonから開始
- 13.5 終了
- 13.6 位置取得
- 13.7 教示プログラム例
- 13.8 COBOTTAとの違い
- 13.9 Payload設定
- 13.10 Safety
- 13.11 Remote Controlとの関係
- 13.12 e-Series
- 13.13 CBシリーズ
- 13.14 典型的な利用例
- 13.15 Pythonサンプル
- 13.16 ur_ctrl.pyでの実装
- まとめ
- 第14章 座標系(Base・TCP・Tool・Feature)
- 14.1 なぜ座標系が必要か
- 14.2 Base座標
- 14.3 Tool座標
- 14.4 TCP
- 14.5 TCP設定
- 14.6 Pose
- 14.7 単位
- 14.8 Rotation Vector
- 14.9 なぜEuler角ではないか
- 14.10 Base座標での移動
- 14.11 Tool座標での移動
- 14.12 BaseとToolの違い
- 14.13 Feature座標
- 14.14 ワーク座標
- 14.15 座標変換
- 14.16 poseTrans()
- 14.17 poseInv()
- 14.18 よくある失敗
- 14.19 ur_ctrl.pyでの設計
- 14.20 実運用での考え方
- まとめ
- 第15章 順運動学と逆運動学
- 15.1 関節空間と直交座標空間
- 15.2 順運動学(Forward Kinematics)
- 15.3 逆運動学(Inverse Kinematics)
- 15.4 なぜ複数解があるのか
- 15.5 Wrist Flip
- 15.6 moveL が難しい理由
- 15.7 到達不能
- 15.8 Joint Limit
- 15.9 特異点(Singularity)
- 15.10 手首特異点
- 15.11 肘特異点
- 15.12 moveJ と moveL の違い
- 15.13 getInverseKinematics()
- 15.14 Forward Kinematics
- 15.15 Safety Check
- 15.16 典型的な利用例
- 15.17 ur_ctrl.pyでの実装
- 15.18 よくあるトラブル
- まとめ
- 第16章 Safety・Protective Stop・エラー復旧
- 16.1 URの状態
- 16.2 Robot Mode
- 16.3 Runtime State
- 16.4 Safety Mode
- 16.5 Protective Stop
- 16.6 Emergency Stop
- 16.7 Safeguard Stop
- 16.8 Fault
- 16.9 エラー判定
- 16.10 Dashboardによる復旧
- 16.11 推奨復旧シーケンス
- 16.12 RuntimeError
- 16.13 Moveの戻り値
- 16.14 wait_move()
- 16.15 reset_error()
- 16.16 turn_on_motor()
- 16.17 自動復旧
- 16.18 状態監視スレッド
- 16.19 ur_ctrl.pyでの設計
- 16.20 実運用での推奨フロー
- まとめ
UR基本制御および、 主にトラブル解決やUR自身の基本的な仕組みについての理解を深めるためのマニュアル
作者
Kengo NAKADA