Skip to content

Commit

Permalink
add code fprintf('status')
Browse files Browse the repository at this point in the history
  • Loading branch information
FabioBergonti committed Jul 5, 2022
1 parent acef5c9 commit 06015d0
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 0 deletions.
11 changes: 11 additions & 0 deletions scripts/sim1.m
Original file line number Diff line number Diff line change
Expand Up @@ -30,29 +30,37 @@
config.run_only_controller = false;

%% Prepare Morphing Cover Model with Motors and its Initial Configuration
fprintf(' ========= script SIM1 ========= \n')
fprintf('- script SIM1: start\n')

if config.run_only_controller
% load model with motors and morphing cover initial configuration.
fprintf('- script SIM1: loading model\n')
load(fullfile(datasets_full_path,'initSim1.mat'),'model','mBodyPosQuat_0')
stgs.saving.workspace.name = 'initSim1';
else
% 1) create model.
fprintf('- script SIM1: creating model\n')
model = mystica.model.getModelCoverSquareLinks('n',3,'m',3,'restConfiguration','flat','linkDimension',0.0482);
% 2) evaluate morphing cover initial configuration.
% initial configuration is computed running a controlled simulation starting from flat configuration. `mBodyTwist_0` is the control variable.
fprintf('- script SIM1: evaluating initial configuration\n')
stgs = mystica.stgs.getDefaultSettingsSimKinAbs(model,'stgs_integrator_limitMaximumTime',4);
stgs.desiredShape.fun = @(x,y,t) -5*x.^2 -5*y.^2;
[data,stateKin] = mystica.runSimKinAbs('model',model,'mBodyPosQuat_0',model.getMBodyPosQuatRestConfiguration,'stgs',stgs,'nameControllerClass','ControllerKinAbs');
if stgs.visualizer.run
mystica.viz.visualizeKinAbs('model',model,'data',data,'stgs',stgs);
end
% 3) solve the motors placement problem.
fprintf('- script SIM1: solving motors placement problem\n')
[model,sensitivity,genAlgrthm] = selectMotorPositioning('model',model,'state',stateKin,'stgs',stgs);
mBodyPosQuat_0 = data.mBodyPosQuat_0(:,end);
end

%% Simulation

fprintf('- script SIM1: simulating the kinematics\n')

% stgs: get default values
stgs = mystica.stgs.getDefaultSettingsSimKinRel(model,'startFile',stgs.saving.workspace.name,'stgs_integrator_limitMaximumTime',8);
% stgs: controller parameters
Expand Down Expand Up @@ -89,5 +97,8 @@

% visualize simulation
if stgs.visualizer.run
fprintf('- script SIM1: running visualizer\n')
mystica.viz.visualizeKinRel('model',model,'data',data,'stgs',stgs);
end

fprintf(' ========= SIM1 ended ========= \n')
12 changes: 12 additions & 0 deletions scripts/sim2.m
Original file line number Diff line number Diff line change
Expand Up @@ -30,29 +30,38 @@
config.run_only_controller = true;

%% Prepare Morphing Cover Model with Motors and its Initial Configuration
fprintf(' ========= script SIM2 ========= \n')

if config.run_only_controller
fprintf('- script SIM2: start (running time is ~5min with a PC with Intel Xeon Gold 6128 3.40GHz and RAM 128GB)\n')
% load model with motors and morphing cover initial configuration.
fprintf('- script SIM2: loading model\n')
load(fullfile(datasets_full_path,'initSim2.mat'),'model','mBodyPosQuat_0')
stgs.saving.workspace.name = 'initSim2';
else
fprintf('- script SIM2: start (running time is ~10min with a PC with Intel Xeon Gold 6128 3.40GHz and RAM 128GB)\n')
% 1) create model.
fprintf('- script SIM2: creating model\n')
model = mystica.model.getModelCoverSquareLinks('n',8,'m',8,'restConfiguration','flat','linkDimension',0.0482);
% 2) evaluate morphing cover initial configuration.
% initial configuration is computed running a controlled simulation starting from flat configuration. `mBodyTwist_0` is the control variable.
fprintf('- script SIM2: evaluating initial configuration\n')
stgs = mystica.stgs.getDefaultSettingsSimKinAbs(model,'stgs_integrator_limitMaximumTime',4);
stgs.desiredShape.fun = @(x,y,t) -2*x.^2 -2*y.^2;
[data,stateKin] = mystica.runSimKinAbs('model',model,'mBodyPosQuat_0',model.getMBodyPosQuatRestConfiguration,'stgs',stgs,'nameControllerClass','ControllerKinAbs');
if stgs.visualizer.run
mystica.viz.visualizeKinAbs('model',model,'data',data,'stgs',stgs);
end
% 3) solve the motors placement problem.
fprintf('- script SIM2: solving motors placement problem\n')
[model,sensitivity,genAlgrthm] = selectMotorPositioning('model',model,'state',stateKin,'stgs',stgs);
mBodyPosQuat_0 = data.mBodyPosQuat_0(:,end);
end

%% Simulation

fprintf('- script SIM2: simulating the kinematics\n')

% stgs: get default values
stgs = mystica.stgs.getDefaultSettingsSimKinRel(model,'startFile',stgs.saving.workspace.name,'stgs_integrator_limitMaximumTime',40);
% stgs: controller parameters
Expand Down Expand Up @@ -84,5 +93,8 @@

% visualize simulation
if stgs.visualizer.run
fprintf('- script SIM2: running visualizer\n')
mystica.viz.visualizeKinRel('model',model,'data',data,'stgs',stgs);
end

fprintf(' ========= SIM2 ended ========= \n')
12 changes: 12 additions & 0 deletions scripts/sim3.m
Original file line number Diff line number Diff line change
Expand Up @@ -25,29 +25,38 @@
config.run_only_controller = true;

%% Prepare Morphing Cover Model with Motors and its Initial Configuration
fprintf(' ========= script SIM3 ========= \n')

if config.run_only_controller
fprintf('- script SIM3: start (running time is ~2h with a PC with Intel Xeon Gold 6128 3.40GHz and RAM 128GB)\n')
% load model with motors and morphing cover initial configuration.
fprintf('- script SIM3: loading model\n')
load(fullfile(datasets_full_path,'initSim3.mat'),'model','mBodyPosQuat_0')
stgs.saving.workspace.name = 'initSim3';
else
fprintf('- script SIM3: start (running time is ~25h with a PC with Intel Xeon Gold 6128 3.40GHz and RAM 128GB)\n')
% 1) create model.
fprintf('- script SIM3: creating model\n')
model = mystica.model.getModelCoverSquareLinks('n',20,'m',20,'restConfiguration','flat','linkDimension',0.0482);
% 2) evaluate morphing cover initial configuration.
% initial configuration is computed running a controlled simulation starting from flat configuration. `mBodyTwist_0` is the control variable.
fprintf('- script SIM3: evaluating initial configuration\n')
stgs = mystica.stgs.getDefaultSettingsSimKinAbs(model,'stgs_integrator_limitMaximumTime',4);
stgs.desiredShape.fun = @(x,y,t) 2*(x-23/50).^2-529/1250;
[data,stateKin] = mystica.runSimKinAbs('model',model,'mBodyPosQuat_0',model.getMBodyPosQuatRestConfiguration,'stgs',stgs,'nameControllerClass','ControllerKinAbs');
if stgs.visualizer.run
mystica.viz.visualizeKinAbs('model',model,'data',data,'stgs',stgs);
end
% 3) solve the motors placement problem.
fprintf('- script SIM3: solving motors placement problem\n')
[model,sensitivity,genAlgrthm] = selectMotorPositioning('model',model,'state',stateKin,'stgs',stgs,'GA_limitGenerationNumber',1e7);
mBodyPosQuat_0 = data.mBodyPosQuat_0(:,end);
end

%% Simulation

fprintf('- script SIM3: simulating the kinematics\n')

% stgs: get default values
stgs = mystica.stgs.getDefaultSettingsSimKinRel(model,'startFile',stgs.saving.workspace.name,'stgs_integrator_limitMaximumTime',20);
% stgs: controller parameters
Expand Down Expand Up @@ -76,5 +85,8 @@

% visualize simulation
if stgs.visualizer.run
fprintf('- script SIM3: running visualizer\n')
mystica.viz.visualizeKinRel('model',model,'data',data,'stgs',stgs);
end

fprintf(' ========= SIM3 ended ========= \n')
11 changes: 11 additions & 0 deletions scripts/sim4.m
Original file line number Diff line number Diff line change
Expand Up @@ -25,25 +25,33 @@
config.run_only_controller = false;

%% Prepare Morphing Cover Model with Motors and its Initial Configuration
fprintf(' ========= script SIM4 ========= \n')
fprintf('- script SIM4: start\n')

if config.run_only_controller
% load model with motors and morphing cover initial configuration.
fprintf('- script SIM4: loading model\n')
load(fullfile(datasets_full_path,'initSim4.mat'),'model','mBodyPosQuat_0')
stgs.saving.workspace.name = 'initSim4';
else
% 1) create model and state object.
fprintf('- script SIM4: creating model\n')
model = mystica.model.getModelCoverSquareLinks('n',4,'m',8,'restConfiguration','cylinder','linkDimension',0.0460,'baseIndex',5,'fixedLinksIndexes',[5,13,21,29],'tform_0_bBase',mystica.rbm.getTformGivenPosRotm([0 0 0.0555]',mystica.rbm.getRotmGivenEul('rz',pi/2)));
% 2) evaluate morphing cover initial configuration.
fprintf('- script SIM4: evaluating initial configuration\n')
stgs = mystica.stgs.getDefaultSettingsSimKinAbs(model,'stgs_integrator_limitMaximumTime',0.02);
stgs.desiredShape.fun = @(x,y,t) 2*x.^2 + 2*y.^2;
[data,stateKin] = mystica.runSimKinAbs('model',model,'mBodyPosQuat_0',model.getMBodyPosQuatRestConfiguration,'stgs',stgs,'nameControllerClass','ControllerKinAbs');
% 3) solve the motors placement problem.
fprintf('- script SIM4: solving motors placement problem\n')
[model,sensitivity,genAlgrthm] = selectMotorPositioning('model',model,'state',stateKin,'stgs',stgs);
mBodyPosQuat_0 = data.mBodyPosQuat_0(:,end);
end

%% Simulation

fprintf('- script SIM4: simulating the kinematics\n')

% stgs: get default values
stgs = mystica.stgs.getDefaultSettingsSimKinRel(model,'startFile',stgs.saving.workspace.name,'stgs_integrator_limitMaximumTime',35);
% stgs: controller parameters
Expand Down Expand Up @@ -82,5 +90,8 @@

% visualize simulation
if stgs.visualizer.run
fprintf('- script SIM4: running visualizer\n')
mystica.viz.visualizeKinRel('model',model,'data',data,'stgs',stgs);
end

fprintf(' ========= SIM4 ended ========= \n')

0 comments on commit 06015d0

Please sign in to comment.