从零开始的OMPL库算法学习(1)RRT算法

从零开始的OMPL库算法学习(1)RRT算法

简介

RRT 算法(快速扩展随机树,rapidly exploring random tree)是一种随机性算法,它可以直接应用于非完整约束系统的规划,不需进行路径转换,所以它的算法复杂度较小,尤为适用于高维多自由度的系统。
缺点是得到的路径质量不是很好。
其思想是快速扩张一群像树一样的路径以探索(填充)空间的大部分区域,伺机找到可行的路径。
RRT 的基本步骤是:
  1. 起点作为一颗种子,从它开始生长枝丫;
  2. 在机器人的“构型”空间中,生成一个随机点X;
  3. 在树上找到距离X最近的那个点,记为Y吧;
  4. 朝着X的方向生长,如果没有碰到障碍物就把生长后的树枝和端点添加到树上,返回 2;
  六维空间
 六维空间的RRT
  在这里插入图片描述
  实际效果如图。

伪代码


function BuildRRT(qinit, K, Δq)
    T.init(qinit)
    for k = 1 to K
        qrand = Sample()  -- chooses a random configuration
        qnearest = Nearest(T, qrand) -- selects the node in the RRT tree that is closest to qrand
        if  Distance(qnearest, qgoal) < Threshold then
            return true
        qnew = Extend(qnearest, qrand, Δq)  -- moving from qnearest an incremental distance in the direction of qrand
        if qnew ≠ NULL then
            T.AddNode(qnew)
    return false
 
 
function Sample() -- Alternatively,one could replace Sample with SampleFree(by using a collision detection algorithm to reject samples in C_obstacle
    p = Random(0, 1.0)
    if 0 < p < Prob then
        return qgoal
    elseif Prob < p < 1.0 then
        return RandomNode()

初始化时随机树T只包含一个节点:根节点qinit。首先Sample函数从状态空间中随机选择一个采样点qrand(4行);然后Nearest函数从随机树中选择一个距离qrand最近的节点qnearest(5行);最后Extend函数通过从qnearest向qrand扩展一段距离,得到一个新的节点qnew(8行)。如果qnew与障碍物发生碰撞,则Extend函数返回空,放弃这次生长,否则将qnew加入到随机树中。重复上述步骤直到qnearest和目标点qgaol距离小于一个阈值,则代表随机树到达了目标点,算法返回成功(6~7行)。为了使算法可控,可以设定运行时间上限或搜索次数上限(3行)。如果在限制次数内无法到达目标点,则算法返回失败。
为了加快随机树到达目标点的速度,简单的改进方法是:在随机树每次的生长过程中,根据随机概率来决定qrand是目标点还是随机点。在Sample函数中设定参数Prob,每次得到一个0到1.0的随机值p,当0<p<Prob的时候,随机树朝目标点生长行;当Prob<p<1.0时,随机树朝一个随机方向生长。

  • 2
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在ROS中安装OMPL,可以按照以下步骤进行操作: 1. 首先确保你已经安装了ROS,并且已经更新到最新的版本。可以使用以下命令来更新ROS: ``` sudo apt-get update sudo apt-get upgrade ``` 2. 接下来,需要安装OMPL的依赖项。可以使用以下命令来安装OMPL的依赖项: ``` rosdep install -y --from-paths src --ignore-src --rosdistro ${ROS_DISTRO} ``` 请确保将`${ROS_DISTRO}`替换为你正在使用的ROS发行版。 3. 然后,使用以下命令将OMPL源码合并到你的ROS工作区中: ``` wstool init src wstool merge -t src https://raw.githubusercontent.com/ros-planning/moveit/master/moveit.rosinstall wstool update -t src ``` 4. 接下来,配置你的ROS工作区并设置构建类型为Release: ``` catkin config --extend /opt/ros/${ROS_DISTRO} --cmake-args -DCMAKE_BUILD_TYPE=Release ``` 同样,确保将`${ROS_DISTRO}`替换为你正在使用的ROS发行版。 5. 最后,构建并编译OMPL:[3] ``` sudo catkin build ``` 请注意,这可能需要一些时间来完成编译过程,具体取决于你的电脑性能和网络速度。 完成上述步骤后,OMPL将被成功安装在你的ROS系统中。现在你可以在ROS中使用OMPL了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [ROS melodic安装Moveit,OMPL](https://blog.csdn.net/qq_41035283/article/details/125690393)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [源码方式安装moveit和ompl(Ubuntu18.04+ROS Melodic版本)](https://blog.csdn.net/m0_62534602/article/details/129196602)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值