34
ヒューマノイドロボットHYDRA開発におけるMATLABの活用 東京大学 神永

matlab expo pub - MathWorks · MATLAB EXPO 2016 8 Joint Range of Motion [deg] Max. Torque [Nm] Hip Yaw ‐60 ~ 60 60 Hip Roll ‐22.5 ~ 22.5 144 Hip Pitch ‐105 ~ 13 85.5 Knee ‐10

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Page 1: matlab expo pub - MathWorks · MATLAB EXPO 2016 8 Joint Range of Motion [deg] Max. Torque [Nm] Hip Yaw ‐60 ~ 60 60 Hip Roll ‐22.5 ~ 22.5 144 Hip Pitch ‐105 ~ 13 85.5 Knee ‐10

ヒューマノイドロボットHYDRAの開発におけるMATLABの活用

東京大学 神永 拓

Page 2: matlab expo pub - MathWorks · MATLAB EXPO 2016 8 Joint Range of Motion [deg] Max. Torque [Nm] Hip Yaw ‐60 ~ 60 60 Hip Roll ‐22.5 ~ 22.5 144 Hip Pitch ‐105 ~ 13 85.5 Knee ‐10

開発の動機

フィールドで実用的に使用できるロボットをどうやったら作れるのか?

パワー

耐久性

操作性制御性

22016/10/19 MATLAB EXPO 2016

Page 3: matlab expo pub - MathWorks · MATLAB EXPO 2016 8 Joint Range of Motion [deg] Max. Torque [Nm] Hip Yaw ‐60 ~ 60 60 Hip Roll ‐22.5 ~ 22.5 144 Hip Pitch ‐105 ~ 13 85.5 Knee ‐10

なにをしなければならないか

(直感的)操作性・制御性

頑健性 自律性

駆動系

制御システム動作計画

センサ

人型構造 アクチュエータ

柔軟性の実現 機構の改善

多数のセンサ

高速制御

32016/10/19 MATLAB EXPO 2016

Page 4: matlab expo pub - MathWorks · MATLAB EXPO 2016 8 Joint Range of Motion [deg] Max. Torque [Nm] Hip Yaw ‐60 ~ 60 60 Hip Roll ‐22.5 ~ 22.5 144 Hip Pitch ‐105 ~ 13 85.5 Knee ‐10

力制御系に影響を与える要因

2016/10/19 MATLAB EXPO 2016 4

PlantController

SensorObserver

Reference OutputPlant

Sensor

Backdrivability

Force Measurement

Controller

Observer

Page 5: matlab expo pub - MathWorks · MATLAB EXPO 2016 8 Joint Range of Motion [deg] Max. Torque [Nm] Hip Yaw ‐60 ~ 60 60 Hip Roll ‐22.5 ~ 22.5 144 Hip Pitch ‐105 ~ 13 85.5 Knee ‐10

バルブを用いない油圧駆動系

MATLAB EXPO 2016 5

Humanoid robots withvalve controlled hydraulics[Cheng2006, Nelson2012, Hyon2015]

Humanoid robot withEHA [Alfayad2011]

2016/10/19

Torque Sensing

Strength

Page 6: matlab expo pub - MathWorks · MATLAB EXPO 2016 8 Joint Range of Motion [deg] Max. Torque [Nm] Hip Yaw ‐60 ~ 60 60 Hip Roll ‐22.5 ~ 22.5 144 Hip Pitch ‐105 ~ 13 85.5 Knee ‐10

バルブを用いない油圧駆動系

MATLAB EXPO 2016 6

Humanoid robots withvalve controlled hydraulics[Cheng2006, Nelson2012, Hyon2015]

Humanoid robot withEHA [Alfayad2011]

2016/10/19

Torque Sensing

Strength

Torque Sensing

Modularity

Page 7: matlab expo pub - MathWorks · MATLAB EXPO 2016 8 Joint Range of Motion [deg] Max. Torque [Nm] Hip Yaw ‐60 ~ 60 60 Hip Roll ‐22.5 ~ 22.5 144 Hip Pitch ‐105 ~ 13 85.5 Knee ‐10

電気静油圧アクチュエータ (EHA)

MATLAB EXPO 2016 7

Torque Sensing

Strength

Backdrivability

Built‐In Torque Limiter

Modularity

2016/10/19

Page 8: matlab expo pub - MathWorks · MATLAB EXPO 2016 8 Joint Range of Motion [deg] Max. Torque [Nm] Hip Yaw ‐60 ~ 60 60 Hip Roll ‐22.5 ~ 22.5 144 Hip Pitch ‐105 ~ 13 85.5 Knee ‐10

Conceptual Structure of the Robot

MATLAB EXPO 2016 8

Joint Range of Motion [deg] Max. Torque [Nm]

Hip Yaw ‐60 ~ 60 60

Hip Roll ‐22.5 ~ 22.5  144

Hip Pitch ‐105 ~ 13  85.5

Knee ‐10 ~ 120  120

Ankle Roll ‐24.2 ~ 24.2 117

Ankle Pitch ‐44 ~ 34 117

Waist Roll ‐22.5 ~ 22.5 147

Waist Pitch 0 ~ 50 94

Clavicle ‐30 ~ 90 60

Shoulder Roll ‐17.5 ~ 117.5 80

Shoulder Pitch ‐27.3 ~ 27.3 105

Shoulder Yaw ‐30 ~ 90 40

Elbow ‐117 ~ 9 82.5

Wrist Yaw ‐10 ~ 110 40

Wrist Roll ‐29.1 ~ 29.1 142.5

Wrist Pitch ‐66 ~ 85 77.2

2016/10/19

Page 9: matlab expo pub - MathWorks · MATLAB EXPO 2016 8 Joint Range of Motion [deg] Max. Torque [Nm] Hip Yaw ‐60 ~ 60 60 Hip Roll ‐22.5 ~ 22.5 144 Hip Pitch ‐105 ~ 13 85.5 Knee ‐10

EHAのモジュール化

MATLAB EXPO 2016 9

Max. Pressure~7MPa

2016/10/19

Page 10: matlab expo pub - MathWorks · MATLAB EXPO 2016 8 Joint Range of Motion [deg] Max. Torque [Nm] Hip Yaw ‐60 ~ 60 60 Hip Roll ‐22.5 ~ 22.5 144 Hip Pitch ‐105 ~ 13 85.5 Knee ‐10

閉リンクを用いた関節駆動

1自由度 2自由度

102016/10/19 MATLAB EXPO 2016

Page 11: matlab expo pub - MathWorks · MATLAB EXPO 2016 8 Joint Range of Motion [deg] Max. Torque [Nm] Hip Yaw ‐60 ~ 60 60 Hip Roll ‐22.5 ~ 22.5 144 Hip Pitch ‐105 ~ 13 85.5 Knee ‐10

ロボットの構造設計

MATLAB EXPO 2016 11

Modular Design

Parallel‐Serial Hybrid Kinematics

2016/10/19

Page 12: matlab expo pub - MathWorks · MATLAB EXPO 2016 8 Joint Range of Motion [deg] Max. Torque [Nm] Hip Yaw ‐60 ~ 60 60 Hip Roll ‐22.5 ~ 22.5 144 Hip Pitch ‐105 ~ 13 85.5 Knee ‐10

分散制御系の開発

Friction Compensation, DOB

Status Management

Protocol Stack Handling

Current Control

Serial Comm. Processing

RealtimeRequirement

Amount of Computation

Operational Space Control

Whole‐BodyCoordination

FPGA

MCU (CPU, no OS)

PC (CPU, RTOS)

122016/10/19 MATLAB EXPO 2016

Page 13: matlab expo pub - MathWorks · MATLAB EXPO 2016 8 Joint Range of Motion [deg] Max. Torque [Nm] Hip Yaw ‐60 ~ 60 60 Hip Roll ‐22.5 ~ 22.5 144 Hip Pitch ‐105 ~ 13 85.5 Knee ‐10

体内LANの種類

Speed ProtocolStack

Realtime

I2C 5Mbps N Y

CAN 1Mbps Y N(Y for siglemaster case)

FlexRay 10Mbps Y Y

CU‐Net 12Mbps Y Y

RS‐485 20Mbps N Y

SPI ~20Mbps N Y

SERCOS‐II 10Mbps Y Y

SERCOS‐III 100Mbps Y Y

Ethernet 1000Mbps Y N

EtherCAT 100Mbps Y Y

清水ら2001

Kaneko et al. 2011

Sugihara et al. 2005

Lohmeier et al. 2009

Englsberger et al. 2014

2016/10/19 MATLAB EXPO 2016 13

Page 14: matlab expo pub - MathWorks · MATLAB EXPO 2016 8 Joint Range of Motion [deg] Max. Torque [Nm] Hip Yaw ‐60 ~ 60 60 Hip Roll ‐22.5 ~ 22.5 144 Hip Pitch ‐105 ~ 13 85.5 Knee ‐10

制御ハードウェアのブロック図

2016/10/19 MATLAB EXPO 2016 14

MCU Board Driver Board Joint Actuation

Sensor Interface Board

F/T Sensor

Accelerometer

FOG

Sensor Interface Board

Page 15: matlab expo pub - MathWorks · MATLAB EXPO 2016 8 Joint Range of Motion [deg] Max. Torque [Nm] Hip Yaw ‐60 ~ 60 60 Hip Roll ‐22.5 ~ 22.5 144 Hip Pitch ‐105 ~ 13 85.5 Knee ‐10

駆動系制御ハードウェアMCU + FPGA

FPGA+SiC

LVDS

15

MD

MD

Master(RT PC)

EtherCAT

1 1..5

2016/10/19 MATLAB EXPO 2016

Page 16: matlab expo pub - MathWorks · MATLAB EXPO 2016 8 Joint Range of Motion [deg] Max. Torque [Nm] Hip Yaw ‐60 ~ 60 60 Hip Roll ‐22.5 ~ 22.5 144 Hip Pitch ‐105 ~ 13 85.5 Knee ‐10

計算の階層構造

FOC Current Control

FOC Current Control

FOC Current Control

EHA Position / Pressure Control

FOC Current Control

EHA Position / Pressure Control

Parallel – Serial Linkage Conversion

Whole Body Motion Generation Robot Status Management

Congnitive Systems

FPGA

MCU

RT‐PC

PC

High

Low

Real Tim

e Re

quire

men

t

16

ROS

EtherCAT

LVDS

1 kHz

5kHz

1 kHz

20kHz

shm + sem

2016/10/19 MATLAB EXPO 2016

Page 17: matlab expo pub - MathWorks · MATLAB EXPO 2016 8 Joint Range of Motion [deg] Max. Torque [Nm] Hip Yaw ‐60 ~ 60 60 Hip Roll ‐22.5 ~ 22.5 144 Hip Pitch ‐105 ~ 13 85.5 Knee ‐10

パラレルリンクの等価開リンク系への変換

MATLAB EXPO 2016 172016/10/19

Page 18: matlab expo pub - MathWorks · MATLAB EXPO 2016 8 Joint Range of Motion [deg] Max. Torque [Nm] Hip Yaw ‐60 ~ 60 60 Hip Roll ‐22.5 ~ 22.5 144 Hip Pitch ‐105 ~ 13 85.5 Knee ‐10

閉リンクのシンボリックな計算

2016/10/19 MATLAB EXPO 2016 18

Rp = [cos(q_1),0,sin(q_1);0,1,0;‐sin(q_1),0,cos(q_1)];Rr = [1,0,0;0,cos(q_2),‐sin(q_2);0,sin(q_2),cos(q_2)];pend_1 = [xend;yend;zend];pend_2 = [‐xend;yend;zend];pcyl_01 = [xcyl;ycyl;z_1+zcyl];pcyl_02 = [‐xcyl;ycyl;z_2+zcyl];pend_01 = Rp*Rr*pend_1;pend_02 = Rp*Rr*pend_2;d1 = pend_01‐pcyl_01;d2 = pend_02‐pcyl_02;l1sq = norm(d1)^2;l2sq = norm(d2)^2;z_1_sol = solve(l1sq==lc^2,z_1);z_2_sol = solve(l2sq==lc^2,z_2);

z_1_sol =(lc^2 ‐ abs(ycyl ‐ yend*cos(q_2) + zend*sin(q_2))^2 ‐abs(xend*cos(q_1) ‐ xcyl + zend*cos(q_2)*sin(q_1) + yend*sin(q_1)*sin(q_2))^2)^(1/2) ‐ zcyl ‐ xend*sin(q_1) + zend*cos(q_1)*cos(q_2) + yend*cos(q_1)*sin(q_2)zend*cos(q_1)*cos(q_2) ‐ (lc^2 ‐abs(ycyl ‐ yend*cos(q_2) + zend*sin(q_2))^2 ‐abs(xend*cos(q_1) ‐ xcyl + zend*cos(q_2)*sin(q_1) + yend*sin(q_1)*sin(q_2))^2)^(1/2) ‐ xend*sin(q_1) ‐ zcyl + yend*cos(q_1)*sin(q_2)

Symbolic MathToolboxによる求解

さらにシンボリックな微分によりヤコビ行列を計算

Page 19: matlab expo pub - MathWorks · MATLAB EXPO 2016 8 Joint Range of Motion [deg] Max. Torque [Nm] Hip Yaw ‐60 ~ 60 60 Hip Roll ‐22.5 ~ 22.5 144 Hip Pitch ‐105 ~ 13 85.5 Knee ‐10

FPGA(Verilog HDL)

複雑なマルチプロセッサシステムの組み込み開発

2016/10/19 MATLAB EXPO 2016 19

Control Objectives

MCU(C/C++)

Working with multiple language Difficulty of simulation

Page 20: matlab expo pub - MathWorks · MATLAB EXPO 2016 8 Joint Range of Motion [deg] Max. Torque [Nm] Hip Yaw ‐60 ~ 60 60 Hip Roll ‐22.5 ~ 22.5 144 Hip Pitch ‐105 ~ 13 85.5 Knee ‐10

Simulinkによる電流ベクトル制御系の統合シミュレーションと自動コード生成

2016/10/19 MATLAB EXPO 2016 20

FPGA2MCU FPGA1

Page 21: matlab expo pub - MathWorks · MATLAB EXPO 2016 8 Joint Range of Motion [deg] Max. Torque [Nm] Hip Yaw ‐60 ~ 60 60 Hip Roll ‐22.5 ~ 22.5 144 Hip Pitch ‐105 ~ 13 85.5 Knee ‐10

電流ループシミュレーション結果

2016/10/19 MATLAB EXPO 2016 21

Page 22: matlab expo pub - MathWorks · MATLAB EXPO 2016 8 Joint Range of Motion [deg] Max. Torque [Nm] Hip Yaw ‐60 ~ 60 60 Hip Roll ‐22.5 ~ 22.5 144 Hip Pitch ‐105 ~ 13 85.5 Knee ‐10

Simulinkによるモジュール化設計

2016/10/19 MATLAB EXPO 2016 22

Fixed Logic

Logic under work

Page 23: matlab expo pub - MathWorks · MATLAB EXPO 2016 8 Joint Range of Motion [deg] Max. Torque [Nm] Hip Yaw ‐60 ~ 60 60 Hip Roll ‐22.5 ~ 22.5 144 Hip Pitch ‐105 ~ 13 85.5 Knee ‐10

PWM波形生成

2016/10/19 MATLAB EXPO 2016 23

ton

tofftd

有効なhigh時間

有効なlow時間

短絡防止時間

上アーム

下アーム

キャリア波形

Page 24: matlab expo pub - MathWorks · MATLAB EXPO 2016 8 Joint Range of Motion [deg] Max. Torque [Nm] Hip Yaw ‐60 ~ 60 60 Hip Roll ‐22.5 ~ 22.5 144 Hip Pitch ‐105 ~ 13 85.5 Knee ‐10

State Flowによる実装

2016/10/19 MATLAB EXPO 2016 24

Page 25: matlab expo pub - MathWorks · MATLAB EXPO 2016 8 Joint Range of Motion [deg] Max. Torque [Nm] Hip Yaw ‐60 ~ 60 60 Hip Roll ‐22.5 ~ 22.5 144 Hip Pitch ‐105 ~ 13 85.5 Knee ‐10

MATLAB/Simulinkを使うメリット

• 複雑なロジックを検証しつつ実装できる

• 複数のプラットフォームに渡る開発を統合的に行うことができる

• 可視化が容易

2016/10/19 MATLAB EXPO 2016 25

開発の高速化

バグの最小化

Page 26: matlab expo pub - MathWorks · MATLAB EXPO 2016 8 Joint Range of Motion [deg] Max. Torque [Nm] Hip Yaw ‐60 ~ 60 60 Hip Roll ‐22.5 ~ 22.5 144 Hip Pitch ‐105 ~ 13 85.5 Knee ‐10

MATLAB/Simulinkを組み込みに使う上での難しさ

• 極めてリソースが限られている場合の難しさ– リソースの再利用

– データ幅の自由度

• FPGAならではの難しさ– 純粋なクロックのみを使ったマルチレート制御

– 各社提供IPの利用の難しさ

• マイコンならではの難しさ– 自分で書いたCの関数を使いにくい

• あまりスケールが大きくなるとシミュレーションが遅くなる

2016/10/19 MATLAB EXPO 2016 26

Page 27: matlab expo pub - MathWorks · MATLAB EXPO 2016 8 Joint Range of Motion [deg] Max. Torque [Nm] Hip Yaw ‐60 ~ 60 60 Hip Roll ‐22.5 ~ 22.5 144 Hip Pitch ‐105 ~ 13 85.5 Knee ‐10

reg [3:0] clk2_cnt;reg clk2;

always @(posedge clk) beginclk2_cnt <= clk2_cnt + 4b’1;if(clk2_cnt==4’b0) beginclk2 <= 1’b1;

end else beginclk2 <= 1’b0;

endend

always @(posedge clk) beginif(clk2 ==1’b1) begin

/* slow process */end

end

生成しにくいロジックの例

2016/10/19 MATLAB EXPO 2016 27

reg [3:0] clk2_cnt;reg clk2;

always @(posedge clk) beginclk2_cnt <= clk2_cnt + 4b’1;if(clk2_cnt==4’b0) beginclk2 <= 1’b1;

end else beginclk2 <= 1’b0;

endend

always @(posedge clk2) begin/* slow process */

end

内部でのイベント発生

外部クロック同期でのイベント実行

これはやりたくない

Page 28: matlab expo pub - MathWorks · MATLAB EXPO 2016 8 Joint Range of Motion [deg] Max. Torque [Nm] Hip Yaw ‐60 ~ 60 60 Hip Roll ‐22.5 ~ 22.5 144 Hip Pitch ‐105 ~ 13 85.5 Knee ‐10

MATLAB/Simulinkを組み込みに使う上での難しさ

• 極めてリソースが限られている場合の難しさ– リソースの再利用

– データ幅の自由度

• FPGAならではの難しさ– 純粋なクロックのみを使ったマルチレート制御

– 各社提供IPの利用の難しさ

• マイコンならではの難しさ– 自分で書いたCの関数を使いにくい

• あまりスケールが大きくなるとシミュレーションが遅くなる

2016/10/19 MATLAB EXPO 2016 28

Page 29: matlab expo pub - MathWorks · MATLAB EXPO 2016 8 Joint Range of Motion [deg] Max. Torque [Nm] Hip Yaw ‐60 ~ 60 60 Hip Roll ‐22.5 ~ 22.5 144 Hip Pitch ‐105 ~ 13 85.5 Knee ‐10

最適化を用いた可動域の計算

2016/10/19 MATLAB EXPO 2016 29

Page 30: matlab expo pub - MathWorks · MATLAB EXPO 2016 8 Joint Range of Motion [deg] Max. Torque [Nm] Hip Yaw ‐60 ~ 60 60 Hip Roll ‐22.5 ~ 22.5 144 Hip Pitch ‐105 ~ 13 85.5 Knee ‐10

CADとのインテグレーション

SolidWorks

MATLAB

OptimizationToolbox

MacroInterface

2016/10/19 MATLAB EXPO 2016 30

Page 31: matlab expo pub - MathWorks · MATLAB EXPO 2016 8 Joint Range of Motion [deg] Max. Torque [Nm] Hip Yaw ‐60 ~ 60 60 Hip Roll ‐22.5 ~ 22.5 144 Hip Pitch ‐105 ~ 13 85.5 Knee ‐10

開発した制限装置

2016/10/19 MATLAB EXPO 2016 31

Page 32: matlab expo pub - MathWorks · MATLAB EXPO 2016 8 Joint Range of Motion [deg] Max. Torque [Nm] Hip Yaw ‐60 ~ 60 60 Hip Roll ‐22.5 ~ 22.5 144 Hip Pitch ‐105 ~ 13 85.5 Knee ‐10

ヒューマノイドロボットHYDRA

MATLAB EXPO 2016 32

Height 1800mmWeight 130kg

2016/10/19

Page 33: matlab expo pub - MathWorks · MATLAB EXPO 2016 8 Joint Range of Motion [deg] Max. Torque [Nm] Hip Yaw ‐60 ~ 60 60 Hip Roll ‐22.5 ~ 22.5 144 Hip Pitch ‐105 ~ 13 85.5 Knee ‐10

まとめ

FOC Current Control

FOC Current Control

FOC Current Control

EHA Position / Pressure Control

FOC Current Control

EHA Position / Pressure Control

Parallel – Serial Linkage Conversion

Whole Body Motion Control Robot Status Management

Congnitive Systems

FPGA

MCU

RT‐PC

PC

332016/10/19 MATLAB EXPO 2016

HDL Coder

E Coder

Sym Math

SimulinkReal‐Time

E Coder

Rob.System

Page 34: matlab expo pub - MathWorks · MATLAB EXPO 2016 8 Joint Range of Motion [deg] Max. Torque [Nm] Hip Yaw ‐60 ~ 60 60 Hip Roll ‐22.5 ~ 22.5 144 Hip Pitch ‐105 ~ 13 85.5 Knee ‐10

結論

1. ヒューマノイドロボットHydraの設計を紹介した

2. Hydraのメカトロニクスを例にとり,MATLAB/ Simulinkがどのように開発に用いられたのか紹介した– C/HDLの統合的な開発

– シミュレーションのメリット

– 独自コードを組み込んだ開発の難しさ

3. SolidWorksとの統合によるOptimization Toolboxを用いた最適化設計を紹介した

4. 開発したロボットの動作を紹介した

2016/10/19 MATLAB EXPO 2016 34