为啥用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