赞
踩
该工具箱利用 MATLAB 的本机功能(线性代数、可移植性、图形)为 MATLAB 带来了机器人特定功能。
工具箱使用一种非常通用的方法将串行链接机械手的运动学和动力学表示为 MATLAB® 对象——用户可以为任何串行链接机械手创建机器人对象,并为 Kinova 的知名机器人提供了许多示例、Universal Robotics、Rethink 以及 Puma 560 和 Stanford arm 等经典机器人。
该工具箱还支持具有机器人运动模型(独轮车、自行车)、路径规划算法(bug、距离变换、D*、PRM)、运动动力学规划(晶格、RRT)、定位(EKF、粒子滤波器)、地图功能的移动机器人构建(EKF)和同时定位和映射(EKF),以及非完整车辆的Simulink模型。该工具箱还包括用于四旋翼飞行机器人的详细 Simulink 模型。
工具箱的优点是:
daimashil
- >> mdl_puma560
- >> p560
- p560 =
-
- Puma 560 [Unimation]:: 6 axis, RRRRRR, stdDH, fastRNE
- - viscous friction; params of 8/95;
- +---+-----------+-----------+-----------+-----------+-----------+
- | j | theta | d | a | alpha | offset |
- +---+-----------+-----------+-----------+-----------+-----------+
- | 1| q1| 0| 0| 1.5708| 0|
- | 2| q2| 0| 0.4318| 0| 0|
- | 3| q3| 0.15005| 0.0203| -1.5708| 0|
- | 4| q4| 0.4318| 0| 1.5708| 0|
- | 5| q5| 0| 0| -1.5708| 0|
- | 6| q6| 0| 0| 0| 0|
- +---+-----------+-----------+-----------+-----------+-----------+
-
- >> p560.fkine([0 0 0 0 0 0]) % forward kinematics
- ans =
- 1 0 0 0.4521
- 0 1 0 -0.15
- 0 0 1 0.4318
- 0 0 0 1

可以为路径设置动画
- mdl_puma560
-
- p = [0.8 0 0];
- T = transl(p) * troty(pi/2);
- qr(1) = -pi/2;
- qqr = p560.ikine6s(T, 'ru');
- qrt = jtraj(qr, qqr, 50);
-
- plot_sphere(p, 0.05, 'y');
- p560.plot3d(qrt, 'view', ae, 'movie', 'move2ball.gif');
移动机器人沿着圆形轨迹升空并悬停在一个点上,同时缓慢转动。
>> sl_quadrotor
使用 Reeds-Shepp 规划器计算的汽车式移动机器人进行 3 点转弯
- q0 = [0 0 0]'; % initial configuration [x y theta]
- qf = [0 0 pi]'; % final configuration
- maxcurv = 1/5; % 5m turning circle
- rs = ReedsShepp(q0, qf, maxcurv, 0.05)
-
- % set up a vehicle model for animation
- [car.image,~,car.alpha] = imread('car2.png');
- car.rotation = 180; % degrees
- car.centre = [648; 173]; % pix
- car.length = 4.2; % m
-
- % setup the plot
- clf; plotvol([-4 8 -6 6])
- a = gca;
- a.XLimMode = 'manual';
- a.YLimMode = 'manual';
- set(gcf, 'Color', 'w')
- grid on
- a = gca;
- xyzlabel
-
- % now animate
- plot_vehicle(rs.path, 'model', car, 'trail', 'r:', 'movie', '3point.gif');

使用粒子过滤器从信标定位的移动机器人。
- V = diag([0.1, 1*pi/180].^2);
- veh = Vehicle(V);
- veh.add_driver( RandomPath(10) );
- map = Map(20, 10);
- W = diag([0.1, 1*pi/180].^2);
- L = diag([0.1 0.1]);
- Q = diag([0.1, 0.1, 1*pi/180]).^2;
-
- pf = ParticleFilter(veh, sensor, Q, L, 1000, 'movi
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。