A key concept in motion planning is configuration space, or C-space for short. Every point in the C-space C corresponds to a unique configuration q of the robot, and every configuration of the robot can be represented as a point in C-space. This description is convenient because it allows us to describe the complex 3D shape of the robot with a single n-dimensional point. For example, the configuration of a robot arm with n joints can be represented as a list of n joint positions, q = (θ1, . . . , θn). The free C-space Cfree consists of the configurations where the robot neither penetrates an obstaclen or violates a joint limit.

  The workspace obstacles partition the configuration space C into two sets, the free space Cfree and the obstacle space Cobs, where C = Cfree ∪ Cobs. Joint limits are treated as obstacles in the configuration space. With the concepts of Cfree and Cobs, the path planning problem reduces to the problem of finding a path for a point robot among the obstacles Cobs. If the obstacles break Cfree into separate connected components, and qstart and qgoal do not lie in the same connected component, then there is no collision-free path. The goal of path planning is to find a path in the work space from the initial position to the goal position, avoiding all collisions with the obstacles. This is a difficult problem to visualize and solve in the physical space, particularly as dimension grows large. But in configuration space the problem is straightforward.

  一般移动机器人的路径规划问题都将其假设为一个点,忽略外形以及尺寸来简化问题。但在实际控制机器人时就必须考虑其真实尺寸,这时机器人就不能被简单地当做一个点。

What if the robot is not a point?

  对平面机器人来说,C-Space就是以机器人的尺寸为基础,对工作空间进行一定的膨胀即可得到:

  如果对工作空间中的障碍物进行膨胀产生了重叠的部分,如下图所示,则表示机器人不能通过那个区域:

  C-Space与机器人实际形状和尺寸有关,从下图可以看出中间和右边两个机器人由于尺寸(直径)太大而不能通过工作空间的某些区域:

  另外机器人的形状也会影响C-Space。下图中的直角三角形代表一个三角形状的机器人,只能在平面内平移,其参考位置点在图中的(x,y)处。灰色矩形是工作空间内的障碍物,将机器人贴着障碍物边界滑行一圈,追踪参考点的位置可以画出一个黑色粗线框的多边形区域。这个区域就是该三角形机器人C-Space中的障碍区域。

  下面是一个关节型机器人的例子。平面二连杆机器人有两个自由度,可以绕两个关节分别旋转0-360°,中间的图描绘了在工作空间中机器人从初始位置开始经过一系列中间点避开障碍物A、B、C运动到目标位置。右图是与之对应的C-Space中的情形:

  注意θ= 0和θ= 2π(θ= 0和θ= 2π)其实是一个角度,因此上面C-Space的左右边界和上下边界其实是连在一起的。其拓扑结构是一个圆环面(torus),正方形构型空间可从圆环面的θ= 0、θ= 0处切开、展平得到。

  任何落在C-obstacle中的点都表示位于该构型时机械臂与障碍物发生了碰撞。C-Space中从start到end的路径代表了一条工作空间中无碰撞的路径。注意障碍物将Cfree分隔成了三个连通区域(connected components
),且起点和终点处于同一连通区域中。然而下图这种情况,起始状态qA和目标状态qB分别位于不连通的区域内,机械臂从A运动到B无论怎么走必然会撞到障碍物。

参考:

Modern Robotics Mechanics, Planning, and Control

Modern Robotics home page

Robotics Modelling, Planning and Control Chapter 12. Motion Planning

Springer Handbook of Robotics  Chapter 5. Motion Planning

Robotic Motion Planning: Configuration Space

知乎 机器人运动规划中的C space怎样理解?

机器人运动规划中的构形空间(Configuration Space)的更多相关文章

  1. 如何用MoveIt快速搭建机器人运动规划平台?

    MoveIt = RobotGo,翻译成中文就是“机器人,走你!”所以,MoveIt的主要就是一款致力于让机器人能够自主运动及其相关技术的软件,它的所有模块都是围绕着运动规划的实现而设计的. 两个月前 ...

  2. V-rep学习笔记:机器人路径规划1

     Motion Planning Library V-REP 从3.3.0开始,使用运动规划库OMPL作为插件,通过调用API的方式代替以前的方法进行运动规划(The old path/motion ...

  3. 第三期 第三期 搜索——1.运动规划(motion_planing)

    运动规划的根本问题在于机器人可能存在于一个这样的世界中, 它可能想找到一条到达这个目标的路径,那么就需要指定一个到达那里的计划, 自动驾驶汽车也会遇到这个问题.他可能处于高速公路的附近的街道网络中,他 ...

  4. 机器人学 —— 轨迹规划(Configuration Space)

    之前的轨迹规划中,我们只考虑了质点,没有考虑机器人的外形与结构.直接在obstacle map 中进行轨迹规划,然而世纪情况中,机器人有固定外形,可能会和障碍物发生碰撞.此情况下,我们针对机器人自由度 ...

  5. ROS(indigo)MoveIt!控制ABB RobotStudio 5.6x 6.0x中机器人运动

    Gazebo以及相关参考文献,参考: ROS(indigo)ABB机器人MoveIt例子 这里需要配置RobotStudio,请参考ROS官网教程.下面列出要点:   window端配置结束后,在Ub ...

  6. 【2018.04.19 ROS机器人操作系统】机器人控制:运动规划、路径规划及轨迹规划简介之一

    参考资料及致谢 本文的绝大部分内容转载自以下几篇文章,首先向原作者致谢,希望自己能在这些前辈们的基础上能有所总结提升. 1. 运动规划/路径规划/轨迹规划的联系与区别 https://blog.csd ...

  7. V-rep学习笔记:机器人路径规划2

    路径规划问题是机器人学研究的一个重要领域,它是指给定操作环境以及起始和目标的位置姿态,要求选择一条从起始点到目标点的路径,使运动物体(移动机器人或机械臂)能安全.无碰撞地通过所有的障碍物而达到目标位置 ...

  8. 运动规划 (Motion Planning): MoveIt! 与 OMPL

    原创博文:转载请标明出处:http://www.cnblogs.com/zxouxuewei 最近有不少人询问有关MoveIt!与OMPL相关的话题,但是大部分问题都集中于XXX功能怎么实现,XXX错 ...

  9. 运动规划 (Motion Planning): MoveIt! 与 OMPL---44

    原创博文:转载请标明出处:http://www.cnblogs.com/zxouxuewei 最近有不少人询问有关MoveIt!与OMPL相关的话题,但是大部分问题都集中于XXX功能怎么实现,XXX错 ...

随机推荐

  1. modbus.c

    #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> //#include ...

  2. SVG.js 引用获取整理

    一.SVG.get() 根据id获取元素 var draw = SVG('svg1').size(300, 300); var circle = draw.circle(50); circle.fil ...

  3. Variational Inference

    作者:孙九爷链接:https://www.zhihu.com/question/41765860/answer/101915528来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...

  4. Intelli系列代理部分报错:You have JVM property https.proxyHost set..

    You have JVM property https.proxyHost set to '...'. This may lead to incorrect behaviour. Proxy shou ...

  5. maven清理.lastUpdated文件maven清理下载失败的jar,方便重新下载

    因网络或其他的原因,maven下载jar等文件失败后,会在目录中存在  *.jar.lastUpdated ,如:xmlpull-1.1.3.1.jar.lastUpdated,此时,代码编译时会一直 ...

  6. Asp.net WebAPi gzip压缩和json格式化

    现在webapi越来越流行了,很多时候它都用来做接口返回json格式的数据,webapi原本是根据客户端的类型动态序列化为json和xml的,但实际很多时候我们都是序列化为json的,所以webapi ...

  7. Openfire XMPP Smack RTC IM 即时通讯 聊天 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  8. 转:使用RNN解决NLP中序列标注问题的通用优化思路

    http://blog.csdn.net/malefactor/article/details/50725480 /* 版权声明:可以任意转载,转载时请标明文章原始出处和作者信息 .*/ author ...

  9. Linux反编译

    转自:http://bbs.pediy.com/showthread.php?threadid=11315 一个简单的linux crackme的逆向前言    最不喜欢的就是写破解教程,酒后一时冲动 ...

  10. C# winForm webBrowser页面中js调用winForm类方法(转)

      有时我们在winform项目中嵌入了网页,想通过html页面调用后台方法,如何实现呢?其实很简单,主要有三部:   1.在被调用方法类上加上[ComVisible(true)]标签,意思就是当前类 ...