Code covered by the BSD License
-
simiam
A MATLAB-based educational bridge between theory and pratice in robotics.
-
GetArg(S, Name, Default)
-
ParseArgs(Args, varargin)
Check input arguments
-
findjobj(container,varargin)
findjobj Find java objects contained within a specified java container or Matlab GUI handle
-
launch()
Copyright (C) 2013 Georgia Tech Research Corporation
-
CellProps
Helper class for GridLayout
-
GridLayout
Main layout-manager class
-
mcodekit.list.dl_list
Copyright (C) 2012 Jean-Pierre de la Croix
-
mcodekit.list.dl_list_iterator
Copyright (C) 2012 Jean-Pierre de la Croix
-
mcodekit.list.dl_list_node
Copyright (C) 2012 Jean-Pierre de la Croix
-
simiam.app.ControlApp
Copyright (C) 2013, Georgia Tech Research Corporation
-
simiam.controller.AOandGTG
Copyright (C) 2013, Georgia Tech Research Corporation
-
simiam.controller.AvoidObstac...
Copyright (C) 2013, Georgia Tech Research Corporation
-
simiam.controller.Controller
CONTROLLER is a template for all user-defined controllers.
-
simiam.controller.FollowWall
Copyright (C) 2013, Georgia Tech Research Corporation
-
simiam.controller.GoToAngle
GOTOANGLE steers the robot towards a angle with a constant velocity using PID
-
simiam.controller.GoToGoal
GOTOGOAL steers the robot towards a goal with a constant velocity using PID
-
simiam.controller.SlidingMode
Copyright (C) 2013, Georgia Tech Research Corporation
-
simiam.controller.Stop
-
simiam.controller.Supervisor
SUPERVISOR switches between controllers and handles their inputs/outputs.
-
simiam.controller.khepera3.K3...
SUPERVISOR switches between controllers and handles their inputs/outputs.
-
simiam.robot.Khepera3
Copyright (C) 2013, Georgia Tech Research Corporation
-
simiam.robot.Robot
Copyright (C) 2013, Georgia Tech Research Corporation
-
simiam.robot.dynamics.Differe...
Copyright (C) 2013, Georgia Tech Research Corporation
-
simiam.robot.dynamics.Dynamics
Copyright (C) 2013, Georgia Tech Research Corporation
-
simiam.robot.sensor.Proximity...
Copyright (C) 2013, Georgia Tech Research Corporation
-
simiam.robot.sensor.WheelEnco...
Copyright (C) 2013, Georgia Tech Research Corporation
-
simiam.simulator.Obstacle
Copyright (C) 2013, Georgia Tech Research Corporation
-
simiam.simulator.Physics
Copyright (C) 2013, Georgia Tech Research Corporation
-
simiam.simulator.Simulator
SIMULATOR is responsible for stepping the program through the simulation.
-
simiam.simulator.World
Copyright (C) 2013, Georgia Tech Research Corporation
-
simiam.ui.AppWindow
Copyright (C) 2013, Georgia Tech Research Corporation
-
simiam.ui.Drawable
Copyright (C) 2013, Georgia Tech Research Corporation
-
simiam.ui.Pose2D
Copyright (C) 2013, Georgia Tech Research Corporation
-
simiam.ui.Surface2D
Copyright (C) 2013, Georgia Tech Research Corporation
-
simiam.util.Plotter
PLOTTER supports plotting data in 2D with a reference signal.
-
View all files
from
Sim.I.am
by Jean-Pierre de la Croix
A MATLAB-based educational bridge between theory and practice in robotics.
|
| mcodekit.list.dl_list |
classdef dl_list < handle
% Copyright (C) 2012 Jean-Pierre de la Croix
% see the LICENSE file included with this software
properties
head_
tail_
size_
iterator_
end
methods
function obj = dl_list()
obj.head_ = [];
obj.tail_ = obj.head_;
obj.size_ = 0;
end
function insert_key(obj, key, index)
n = mcodekit.list.dl_list_node(key);
index = max(min(index, obj.size_+1), 1);
if (obj.size_ == 0)
obj.head_ = n;
obj.tail_ = obj.head_;
else
if (index == 1)
n.next_ = obj.head_;
obj.head_.prev_ = n;
obj.head_ = n;
elseif (index == obj.size_+1)
n.prev_ = obj.tail_;
obj.tail_.next_ = n;
obj.tail_ = n;
else
m = obj.head_;
for i = 2:index
m = m.next_;
end
n.prev_ = m.prev_;
m.prev_.next_ = n;
n.next_ = m;
m.prev_ = n;
end
end
obj.size_ = obj.size_+1;
end
function key = remove_key(obj, index)
index = max(min(index, obj.size_), 1);
if (obj.size_ == 0)
key = [];
elseif (obj.size_ == 1)
key = obj.tail_.key_;
delete(obj.tail_);
obj.tail_ = [];
obj.head_ = obj.tail_;
obj.size_ = 0;
elseif (index == 1)
key = obj.head_.key_;
n = obj.head_;
obj.head_ = n.next_;
obj.head_.prev_ = [];
delete(n);
obj.size_ = obj.size_-1;
elseif (index == obj.size_)
key = obj.tail_.key_;
n = obj.tail_;
obj.tail_ = n.prev_;
obj.tail_.next_ = [];
delete(n);
obj.size_ = obj.size_-1;
else
m = obj.head_;
for i = 2:index
m = m.next_;
end
key = m.key_;
m.prev_.next_ = m.next_;
m.next_.prev_ = m.prev_;
delete(m);
obj.size_ = obj.size_-1;
end
end
function append_key(obj, key)
obj.insert_key(key, obj.size_+1);
end
function key = get_key(obj, index)
assert(index > 0, 'index has to be positive');
index = max(min(index, obj.size_), 1);
n = obj.head_;
for i = 2:index
n = n.next_;
end
key = n.key_;
end
function key = get_first_key(obj)
assert(obj.size_ > 0, 'list is empty');
key = obj.head_.key_;
end
function key = get_last_key(obj)
assert(obj.size_ > 0, 'list is empty');
key = obj.tail_.key_;
end
function iterator = get_iterator(obj)
iterator = mcodekit.list.dl_list_iterator(obj);
end
end
end
|
|
Contact us