为啥用matlab robotic toolbox验证的机器人运动学正逆解与公式计算的不同

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥用matlab robotic toolbox验证的机器人运动学正逆解与公式计算的不同相关的知识,希望对你有一定的参考价值。

参考技术A 1,rand 生成均匀分布的伪随机数。分布在(0~1)之间 2,randn 生成标准正态分布的伪随机数(均值为0,方差为1) 3, randi 生成均匀分布的伪随机整数

markdown matlab_robotics_system_toolbox

# ROSをmatlab・Simulinkにて使用する

## matlab操作
+ ```rosinit``` : ROSマスターとグローバルノードを初期化する

## simulink操作
### Robotics System Toolbox(RST)/ROS内にて
**Publisher関連**

+ ```Blank Message``` : メッセージを作成する
 - ```Message type``` : Selectからメッセージの型を選択できる
 - ```サンプル時間``` : 設定時間の周期でMessageを更新する=>Publishする(infにすると更新時のみ配信)
+ ```Bus Assignment```  
: 基本的に上記の```Blank Message```とならべて使用する  BusにつなげたBlankMessageに値を入れるもの
 - バス内信号を割り当てられる信号に選択し、それ以外を削除するのが基本の流れ
+ ```Publish``` : Publisherの作成
 - ```Topic source```  
    + ```Select from ROS network``` : すでに存在するtopicに配信する
    + ```Specify your own``` : 新しいTopicを作成する
 - ```Topic``` : Topicの名前を指定する (ex /data_hogehoge )
 - ```Message type```  
   : 配信するメッセージの型を選択 =>**ここがつながっているBlank Messageと違う型だとエラーになるので注意**

**Subscriber関連**

+ ```Subscribe``` : Subscriberの作成
 - ```Topic source``` : 使用方法としてはPublishと同じで自分で新しいものを作るかどうか  
 - ```Topic``` : 購読するTopicの指定(ex /data_hogehoge)
 - ```Message type``` : 購読するTopicのメッセージの型を指定
 - ```Sample time``` : -1でシュミレータ内と同じ周期で更新の確認
+ ```Terminator``` : 出力信号で接続されていないものに関する警告を防ぐ
+ ```Enabled Subsystem```   
 : SubscribeのIsNewとEnableの部分を接続することでそのSubsystem内はIsNewがTrueの時のみ出力する
 : IsNewがTrueの時のみ動作させたい部分からサブシステムを作成し、Enableブロックをサブシステムに追加することでも作成可能
+ IsNew => 前のタイムステップ中に新しいメッセージを受信した場合にTrue
+ ```BusSelector``` : ```Bus Assignment```の逆版でメッセージ内のデータを取り出す

### 内部ネットワークと外部ネットワークのROSMaster
+ 内部ネットワーク(matlab内のローカルネットワーク)  
 : 初期設定のままでOK rosinitをすれば準備完了
+ 外部ネットワーク(windows内のバーチャルPCなどローカルでないもの)  
 : 外部でROS coreを起動している場合でそのROSを中心として使用したい時は下記の作業をする

**外部のROS Masterに接続**

1. ROS coreを起動しているPCにて ```ROS_MASTER_URI``` を確認する
2. ```http://IP:ポート/``` となっている部分を確認するIPの部分が名前の場合はそのPCのIPアドレスを```ifconfig```などで調べる
3. Simulinkにて [ツール] => [Robot Operating System] => [Configure ROS Network Addresses] の順で選択
4. ```Network Address```を ```Custom``` に
5. ```Hostname/IP Address```に 2で調べたIPアドレスを入れる
6. ```Port```に 2で調べたポート番号を入れる 
7. matlabにて```rosshutdown```をし起動中のglobal ROS node を閉じる
8. matlabにて```rosinit```をし上記で設定したネットワークに接続する  
上記の内容で外部のROS Masterに接続できる
# マニピュレータアルゴリズム
多関節ロボットに関するワークフローをサポート  
urdfを使用して逆運動などを解くことができる

## urdfのimport
```
robot = importrobot('URDFファイル名')
```
urdfファイルは拡張子まで全て入力する  
char型なのでダブルクオーテーションで囲むとエラーをだす  
上記のコードの場合,```robot```が今後```RigidBodyTree```として使用可能となる

## 逆運動学
大きく分けて二通りの方法がある
+ robotics.InverseKinematics : pose(位置と姿勢)を指定して角度を求める場合
+ robotics.GeneralizedInverseKinematics : 様々な指定をして角度を求めることができる  
~~上記のInverseKinematicsを使用するならmoveitで十分な気が...~~

## GeneralizedInverseKinematicsの使用方法
### 各制約について
RigidBodyには逆運動計算において様々な条件(制約)を指定することが可能
+ AimingConstraint(aiming) : 照準制約 
+ CartesianBounds(cartesian) : 直交座標の範囲
+ JointPositionBounds(joint) : ジョイント位置の範囲
+ OrientationTarget(orientation) : 方向ターゲット
+ PoseTarget
+ PositionTarget(position) : 位置ターゲット

### 制約オブジェクトの作成

### 軌道の作成方法
+ RigidBodyが生成する情報を行形式にする : 通常は各joint名と角度の構造体を返す
    => DataFormatをrowにすると角度データのみの配列となる
```
RigidBody.DataFormat = "row";
```

+ コンフィギュレーションの設定
 - homeConfiguration(RigidBodyTree) 
    : 指定したRigidBodyTreeのjointの初期角度を返す
 - repmat(行列, 数値1, 数値2) 
    : 行列をコピーして大きな行列を作成する行に対するコピー数(数値1),列に対するコピー数(数値2)
```
numWaypoints = 5;
q0 = homeConfiguration(RigidBodyTree);
qWaypoints = repmat(q0, numWaypoints,1 );
```

以上是关于为啥用matlab robotic toolbox验证的机器人运动学正逆解与公式计算的不同的主要内容,如果未能解决你的问题,请参考以下文章

Matlab Robotics Toolbox 仿真计算:Kinematics, Dynamics, Trajectory Generation

使用matlab的robotics toolbox进行建模出错

工业机器人(10)-Matlab Robot Toolbox机械臂工作空间

工业机器人(10)-Matlab Robot Toolbox机械臂工作空间

MATLAB的toolbox怎么用啊

Robotics System Toolbox