matlab rtb10.1,rtbdemo.m · octopus/robotics-toolbox-matlab - Gitee.com

%RTBDEMO Robot toolbox demonstrations

%

% rtbdemo displays a menu of toolbox demonstration scripts that illustrate:

% - fundamental datatypes

% - rotation and homogeneous transformation matrices

% - quaternions

% - trajectories

% - serial link manipulator arms

% - forward and inverse kinematics

% - robot animation

% - forward and inverse dynamics

% - mobile robots

% - kinematic models and control

% - path planning (D*, PRM, Lattice, RRT)

% - localization (EKF, particle filter)

% - SLAM (EKF, pose graph)

% - quadrotor control

%

% rtbdemo(T) as above but waits for T seconds after every statement, no

% need to push the enter key periodically.

%

% Notes::

% - By default the scripts require the user to periodically hit in

% order to move through the explanation.

% - Some demos require Simulink

% - To quit, close the rtbdemo window

% TODO: triple angle, pose graph slam example, lattice planner

% Copyright (C) 1993-2017, by Peter I. Corke

%

% This file is part of The Robotics Toolbox for MATLAB (RTB).

%

% RTB is free software: you can redistribute it and/or modify

% it under the terms of the GNU Lesser General Public License as published by

% the Free Software Foundation, either version 3 of the License, or

% (at your option) any later version.

%

% RTB is distributed in the hope that it will be useful,

% but WITHOUT ANY WARRANTY; without even the implied warranty of

% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

% GNU Lesser General Public License for more details.

%

% You should have received a copy of the GNU Leser General Public License

% along with RTB. If not, see .

%

% http://www.petercorke.com

function rtbdemo(timeout)

echo off

close all

% find the path to the demos

if exist('rtbdemo', 'file') == 2

tbpath = fileparts(which('rtbdemo'));

demopath = fullfile(tbpath, 'demos');

end

% create the options to pass through to runscript

opts = {'begin', 'path', demopath};

% display a help message in the consolde

msg = {

'------------------------------------------------------------'

'Many of these demos print tutorial text and MATLAB commmands'

'in the console window. Read the text and press to move'

'on to the next command. At the end of the tutorial you can'

'choose the next one from the graphical menu, or close the menu'

'window.'

'------------------------------------------------------------'

};

for i=1:numel(msg)

fprintf('%s\n', msg{i});

end

% Map the button names (must be exact match) to the scripts to invoke

demos = {

'Rotations', 'rotation';

'Transformations', 'trans';

'Joystick demo', 'joytest';

'Trajectory', 'traj';

'V-REP simulator', 'vrepdemo';

'Create a model', 'robot';

'Animation', 'graphics';

'Rendered animation', 'puma_path';

'3-point turn', 'car_anim_rs';

'Forward kinematics', 'fkine';

'Inverse kinematics', 'ikine';

'Jacobians', 'jacob';

'Inverse dynamics', 'idyn';

'Forward dynamics', 'fdyn';

'Symbolic', 'symbolic';

'Driving to a pose', 'drivepose';

'Quadrotor flying', 'quadrotor';

'Braitenberg vehicle', 'braitnav';

'Bug navigation', 'bugnav';

'D* navigation', 'dstarnav';

'PRM navigation', 'prmnav';

'SLAM demo', 'slam';

'Particle filter localization', 'particlefilt';

'Pose graph SLAM', 'pgslam';

};

% display the GUI panel

% some of this taken from the GUIDE generated file

gui_Singleton = 1;

gui_State = struct('gui_Name', 'rtbdemo_gui', ...

'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @rtbdemo_gui_OpeningFcn, ...

'gui_OutputFcn', @rtbdemo_gui_OutputFcn, ...

'gui_LayoutFcn', [] , ...

'gui_Callback', []);

h = gui_mainfcn(gui_State);

% now set the callback for every button, can't seem to make this work using

% GUIDE.

cb = findobj(h, 'Tag', 'checkbox1');

for hh=h.Children'

switch hh.Type

case 'uicontrol'

if strcmp( hh.Style, 'pushbutton')

set(hh, 'Callback', @demo_pushbutton_callback);

end

case 'uipanel'

for hhh=hh.Children'

if strcmp( hhh.Style, 'pushbutton')

set(hhh, 'Callback', @demo_pushbutton_callback);

end

continue;

end

end

end

% TODO:

% build the buttons dynamically, eliminate the need for GUIDE

set(h, 'Name', 'rtbdemo');

while true

set(h, 'Visible', 'on');

% wait for a button press

% buttons set the UserData property of the GUI to the button string name

waitfor(h, 'UserData');

% check if the GUI window has been dismissed

if ~ishandle(h)

break

end

% get the user's selection, it was stashed in GUI UserData

selection = get(h, 'UserData');

set(h, 'UserData', []); % reset user data so we notice next change

% now look for it in the list of demos

for i=1:size(demos, 1)

if strcmp(selection, demos{i,1})

% then run the appropriate script

script = demos{i,2};

set(h, 'Visible', 'off');

if cb.Value > 0

% pause after each command

opts1 = opts;

else

% no pause

delay = 0;

% if delay given on command use that

if nargin > 0

delay = timeout;

end

opts1 = [opts, 'delay', delay];

end

try

runscript(script, opts1{:})

catch me

disp('error in executing demo script');

me.getReport()

end

end

end

end

end

% --- Executes just before rtbdemo_gui is made visible.

function rtbdemo_gui_OpeningFcn(hObject, eventdata, handles, varargin)

% This function has no output args, see OutputFcn.

% hObject handle to figure

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% varargin command line arguments to rtbdemo_gui (see VARARGIN)

% Choose default command line output for rtbdemo_gui

handles.output = hObject;

% Update handles structure

guidata(hObject, handles);

initialize_gui(hObject, handles, false);

end

% --- Outputs from this function are returned to the command line.

function varargout = rtbdemo_gui_OutputFcn(hObject, eventdata, handles)

% varargout cell array for returning output args (see VARARGOUT);

% hObject handle to figure

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure

varargout{1} = handles.output;

end

function initialize_gui(fig_handle, handles, isreset)

% Update handles structure

guidata(handles.figure1, handles);

end

% --- Executes on button press .

function demo_pushbutton_callback(hObject, eventdata, handles)

% hObject handle to pushbutton (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

set(gcf, 'Userdata', get(hObject, 'String'));

end

一键复制

编辑

Web IDE

原始数据

按行查看

历史

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值