CSDN话题挑战赛第2期
参赛话题:学习笔记

1、前记

传统机器人通过人工示教的方式编写机器人的运动程序,在结构化的环境中应用广泛,但对非专业机器人工程师,机器人编程有很大的难度。机器人的路径规划问题可以通过算法的方式在作业环境中寻找一个无碰撞的运动路径,对机器人安全运动很重要。常见的运动路径规划包括基于搜索的方法【A* and D* search】和基于采样【rapidly-exploring random tree (RRT),probabilistic roadmap (PRM)
】的方法,以及基于这两类方法为基础的后续路径平滑等优化方法。

在这里,我们利用matlab环境,通过机器人系统工具箱来演示通过内置RRT规划器实现基于采样的无碰撞路径规划问题的demo演示。

2、内容

(1)RRT简单描述

机器人系统工具箱中的RRT算法是基于双向快速探索随机树(RRT)算法,并带有可选的连接启发式以潜在地提高速度。双向RRT计划器在指定的开始配置和目标配置处创建两个根节点树。为了扩展每个树,规划器生成一个随机配置,如果有效,则根据MaxConnectionDistance属性从最近的节点执行一步采样扩展。在每次扩展之后,计划器尝试使用新的扩展和对面树上最近的节点连接两个树。与环境冲突的无效配置或连接不会添加到树中。

参考:【Plan motion for rigid body tree using bidirectional RRT - MATLAB- MathWorks 中国

(2)代码,描述部分在代码中有对应注释,这里不展开l描述,按小节运行可以看到每小节代码结果。

%% RRT规划器避障测试
% https://www.mathworks.com/help/robotics/ug/check-for-environmental-collisions-with-manipulators.html
% https://www.mathworks.com/help/robotics/ref/manipulatorrrt.html
%% 构建环境
% Create two platforms
clc
clear
platform1 = collisionBox(0.5,0.5,0.25);
platform1.Pose = trvec2tform([-0.5 0.4 0.2]);
platform2 = collisionBox(0.5,0.5,0.25);
platform2.Pose = trvec2tform([0.5 0.2 0.2]);
% Add a light fixture, modeled as a sphere
lightFixture = collisionSphere(0.25);
lightFixture.Pose = trvec2tform([0 0.6 0.75]);
% Store in a cell array for collision-checking
worldCollisionArray = {platform1 platform2 lightFixture};%1,2,3;worldCollisionArray{1}
% show(worldCollisionArray)%环境还得单独show
%% 创建figure对象显示环境:可以直接用exampleHelperVisualizeCollisionEnvironment(worldCollisionArray);
%  为了演示修改颜色做下
figure;
ax=gca;
% 显示桌子1并上色
[~, patchObj]=show(platform1,'Parent', ax);
patchObj.FaceColor = [1 0.6 0.9];
axis([-0.8,1,-0.8,1.2,0,1.4])%调整图框范围
view(141,22)%调节视角
hold on
%显示桌子2并上色
[~, patchObj]=show(platform2,'Parent', ax);
patchObj.FaceColor = [1 0.6 0.9];
% 显示灯球并上色
[~, patchObj]=show(lightFixture,'Parent', ax);
patchObj.FaceColor = [0 0.8 0.8];
%% 添加机器人模型:可更改为DH方向构建。
robot = loadrobot("kinovaGen3","DataFormat","column","Gravity",[0 0 -9.81]);
show(robot,homeConfiguration(robot),"Parent",ax);
%% 给机器人添加任务起点和终点
startPose = trvec2tform([-0.5,0.5,0.4])*axang2tform([1 0 0 pi]);
endPose = trvec2tform([0.5,0.2,0.4])*axang2tform([1 0 0 pi]);%% 使用逆运动学求解起点个终点位姿的关节构型并显示
rng(0);% Use a fixed random seed to ensure repeatable results
ik = inverseKinematics("RigidBodyTree",robot);
weights = ones(1,6);
startConfig = ik("EndEffector_Link",startPose,weights,robot.homeConfiguration);
endConfig = ik("EndEffector_Link",endPose,weights,robot.homeConfiguration);
endEffector="EndEffector_Link";
% Show initial and final positions
show(robot,startConfig);
show(robot,endConfig);
%%  RRT属于采样类,一些属性参数:MaxConnetionDistance等会影响结果
rrt=manipulatorRRT(robot,worldCollisionArray);
path=plan(rrt,startConfig',endConfig');
path2=interpolate(rrt,path,14);%没两个插入14个,还有shorten用于shorten path
q=path2;
for i = 1:size(path2,1)show(robot,q(i,:)',"PreservePlot",false);%false 不留下重影,true留下poseNow = getTransform(robot, q(i,:)', endEffector);%正运动学plot3(poseNow(1,4), poseNow(2,4), poseNow(3,4),'b.','MarkerSize',15)%末端轨迹drawnow limitrate
end
q1=q';%转换格式,配合检查碰撞的机器人构型
% 初始化输出
inCollision = false(length(q1),1); %===> zeros(length(q),1)
worldCollisionPairIdx = cell(length(q1),1); % 元胞数组,保存与环境碰撞的部件和关节配置的索引
for i = 1:length(q1)[inCollision(i),sepDist] = checkCollision(robot,q1(:,i),worldCollisionArray,"IgnoreSelfCollision","on","Exhaustive","on");% collisions.免除自身碰撞的检查,因为关节限制保证了大多数自碰撞情况。只寻找构型与环境的碰撞情况[bodyIdx,worldCollisionObjIdx] = find(isnan(sepDist)); % 找到碰撞的部件。距离是空NaN,则发生碰撞worldCollidingPairs = [bodyIdx,worldCollisionObjIdx]; worldCollisionPairIdx{i} = worldCollidingPairs;  %机器人部件索引第一列,环境物体索引第二列
end
isTrajectoryInCollision = any(inCollision)
if isTrajectoryInCollision==0disp('No collison happen')title('checkCollisionReslut:MotionWithoutCollision')
end

(3)结果:

3、小结

记录如何利用matlab的机器人系统工具箱【robotics system toolbox】中内置的RRT算法再复杂环境中规划中一个从起始点到目标点的无碰撞路径。

Robotics System Toolbox中的机器人运动(7)--RRT规划避障路径相关推荐

  1. 六自由度机器人(机械臂)运动学建模及运动规划系列(五)——避障路径规划

    在之前的内容中,我们对机器人的运动轨迹进行了规划,但是,这种规划方法的运动路径是根据简单的轨迹人为组合起来的,具有较大的任意性.在实际的复杂工作环境中,采用人工规划路径的方法,难以保证规划的效率和准确 ...

  2. matlab length_《Matlab - Robotics System Toolbox》学习笔记(2)

    写作说明: 1. 本文主要记录学习 Matlab - Robotics System Toolbox[1]的过程,就其中的一些重要知识点做相关记录.方便后期供自己与他人进行学习. 2. 由于 Matl ...

  3. (二)ROS中控制机器人运动(示例运行)

    ROS中让机器人运动的步骤如下: (1)新建机器人模型 (2)运行.launch文件加载模型 (3)加载rviz的配置文件 (4)发布消息使用机器人运动 首先使用<ROS_by_example& ...

  4. 【路径规划】基于matlab GUI粒子群算法机器人避障路径规划(手动设障)【含Matlab源码 924期】

    ⛄一.简介 1 粒子群算法的概念 粒子群优化算法(PSO:Particle swarm optimization) 是一种进化计算技术(evolutionary computation).源于对鸟群捕 ...

  5. 【路径规划】基于matlab DWA算法机器人局部避障路径规划【含Matlab源码 890期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[路径规划]基于matlab DWA算法机器人局部避障路径规划[含Matlab源码 890期] 获取代码方式2: 通过订阅紫极神光博客付费 ...

  6. 人群环境中基于深度强化学习的移动机器人避障算法

    摘要: 为了控制移动机器人在人群密集的复杂环境中高效友好地完成避障任务,本文提出了一种人群环境中基于深度强化学习的移动机器人避障算法.首先,针对深度强化学习算法中值函数网络学习能力不足的情况,基于行人 ...

  7. 【Matlab路径规划】改进的遗传算法机器人避障路径规划【含GUI源码 703期】

    一.代码运行视频(哔哩哔哩) [Matlab路径规划]改进的遗传算法机器人避障路径规划[含GUI源码 703期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...

  8. 树莓派+二自由度云台制作智能小车(三)——小车运动+简单的自动避障

    配合传感器实现小车运动+自动避障 小车与避障原理 一.小车运动模块 二.避障原理 三.实现 (1)将传感器整合. (2)小车的运动代码 小车与避障原理 一.小车运动模块 小车主要是分为动力模块和控制模 ...

  9. 创建一个urdf机器人_Matlab官方机器人工具箱Robotics System Toolbox官网翻译教程2

    %lesson 2 rigidBodyTree % 刚体树是刚体与关节连接性的一种表示.使用这个类在MATLAB?中建立机器人机械手模型.如果您有一个使用统一机器人描述格式(URDF)指定的机器人模型 ...

最新文章

  1. 服务器资源数据结果汇总
  2. 10、MySQL锁等待,死锁,死锁检测
  3. Codeforces Round #374 (Div. 2) A , B , C 水,水,拓扑dp
  4. 如何画出几种常见二分类损失函数(附代码)
  5. Oracle 数据字典表 -- SYS.COL$
  6. [转]Hamcrest使用方法实例
  7. java/android 做题中整理的碎片小贴士(12)
  8. 算法--背包九讲(详细讲解+代码)
  9. python为什么没有指针_Python中有指针吗?
  10. mysql int的长度
  11. Windows7 原版下载大全
  12. 深度测试oppo软件,OPPO深度测试app
  13. Chrome插件 - FireShot捕捉网页截图(可截取完整页面)
  14. Unity WebGL部署
  15. 长江大学计算机类分流,2020级环境科学与工程类学生专业分流方案
  16. lzg_ad:XPE网络功能组件
  17. 【vim】你的背包里,缺不缺一份vim简明教程嘞?
  18. 【LearningChain】WhenMachineLearningMeetsBlockchainADecentralizedPrivacy-preserving and SecureDesign
  19. javascript tree
  20. Linux-常见命令(二)

热门文章

  1. [转载]Alsa驱动分析
  2. 查看电脑的IP和端口
  3. 学霸的本意是什么?述说第一次数学危机.
  4. 快速傅里叶变换的应用——快速卷积
  5. 为什么我说你不爱我了!
  6. 来自苹果的编程语言——Swift简介
  7. 1071 小赌怡情 (15 分) (C语言)
  8. matlab meas 函数_力科示波器Matlab使用指南
  9. 如何在电脑上制作请假条表格_如何使用电脑制作请假条?电脑制作请假条方法介绍...
  10. 被讨厌的勇气----读书笔记