OMPL学习--第三篇之源码安装Moveit!和OMPL(Melodic版本)_源码安装moveit,临时扩大内存-程序员宅基地

技术标签: ROS  OMPL  

OMPL Moveit! Source install 自定义运动规划算法

1. 引言

ROS默认是以Binary形式安装Moveit!,这种方式无法添加自己的运动规划算法,好在ROS支持用户自定义运动规划算法,那就是以源码形式安装Moveit!和OMPL,安装的过程中参考了CSDN,谷歌上的一些帖子,不过发现没有针对Melodic版本的安装步骤,所以自己搞了好久,终于算是弄出来,能运行了。

2. 实现方法

操作系统:Ubuntu 18.04
ROS版本:Melodic

2.1 Source install Moveit!

  • 卸载Moveit!:
sudo apt-get remove ros-kinetic-moveit-*
  • 确保安装了最新版本的软件包:
rosdep update
sudo apt-get update
sudo apt-get dist-upgrade
  • 源码安装需要wstool、catkin_tools和可选的clang格式:
sudo apt-get install python-wstool python-catkin-tools clang-format-3.9 
  • 为Moveit!创建单独的工作空间,不要跟catkin_ws混在一起:
mkdir ~/ws_moveit
cd ~/ws_moveit 
  • 根据自己的ROS版本,从ROS工作区中加载必要的环境变量,以使ROS能找到,我的是Melodic,所以执行以下命令:
source /opt/ros/melodic/setup.bash
  • 下载Moveit! 并编译:(确保终端在moveit!的工作空间中打开)
wstool init src
wstool merge -t src https://raw.githubusercontent.com/ros-planning/moveit/master/moveit.rosinstall
wstool update -t src
rosdep install -y --from-paths src --ignore-src --rosdistro ${ROS_DISTRO}
catkin config --extend /opt/ros/${ROS_DISTRO} --cmake-args -DCMAKE_BUILD_TYPE=Release 
sodu catkin build

编译过程大约需要10分钟,耐心等待一下;
尽量使用sudo编译,避免出现错误。

2.2 Source install OMPL

  • 在src文件夹下载OMPL源码:
cd ~/moveit_ws/src
git clone https://github.com/ompl/ompl

亲测默认下载当前分支版本可以使用。

  • 手动添加package.xml as used in the ROS release wrapper for OMPL:
cd src/ompl
wget https://raw.githubusercontent.com/ros-gbp/ompl-release/debian/melodic/xenial/ompl/package.xml

亲测这步好像没有用,默认使用当前分支下的packagel.xml文件即可;
无需安装FCL。

2.3 测试安装是否成功

将自己的功能包放到~/moveit_ws/src目录下,并运行(每次使用前运行):

source ~/moveit_ws/devel/setup.bash

bash.rc文件下环境变量的默认路径是~/catkin_ws/devel/setup.bash,因此每次在使用moveit时需要指定一下环境变量路径(参考博客说同时指定两个工作空间会冲突)
不要将功能包放到catkin_ws工作空间下,否则会编译出错,告诉你无法找到moveit_core,只有以binary方式安装才可以将功能包放到catkin_ws工作空间下。

然后可以运行一个demo.launch,验证Moveit!和OMPL是否正常工作。

3. 自定义运动规划算法

  • 在路径(~/moveit_ws/src/ompl/src/ompl/geometric/planners/rrt/src)复制RRT.cpp,并重命名为myRRT.cpp。在路径(~/moveit_ws/src/ompl/src/ompl/geometric/planners/rrt)复制RRT.h,并重命名为myRRT.h;
  • 使用ctrl+F将文件中的RRT替换为myRRT;
  • 在路径(~moveit_ws/src/moveit/moveit_planners/ompl/ompl_interface/src)中找到planning_context_manager.cpp,添加自己的算法头文件,并注册自己的算法,如下图所示:
    在这里插入图片描述
    在这里插入图片描述

Notice the path of the header file.

  • 修改你要运行功能包中的ompl.yaml文件,如下图所示:
    在这里插入图片描述在这里插入图片描述
  • 打开一个自己的功能包,进行测试,可以看到自定义的运动规划算法已经加入到moveit!当中
    在这里插入图片描述

参考

1.https://moveit.ros.org/install/source/
2.https://moveit.ros.org/install/source/dependencies/
3.https://blog.csdn.net/sinat_23853639/article/details/87854461

整个安装过程下来,给我感受最深的是:按照官方安装教程操作,是肯定不会出错的!!!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_36965307/article/details/105312020

智能推荐

windows下配置IIS以及优化配置_windows iis-程序员宅基地

文章浏览阅读2.7k次。IIS配置及优化_windows iis

Python爬虫入门教程 80-100 Python 玩转NewSpaper爬虫框架_python 爬虫框架 newspaper-程序员宅基地

文章浏览阅读1.9w次,点赞3次,收藏6次。虽然newspaper框架存在不完美的地方,但是依然需要认识它_python 爬虫框架 newspaper

MP4学习(一)MP4格式分析_vc mvhd box-程序员宅基地

文章浏览阅读8.1k次,点赞4次,收藏15次。MP4格式分析mp4文件由一系列的box(也有人把它叫做atom)构成,每个box包含box头部和box体。box体可以包含普通的数据,也可以包含其他的box,如果box中包含了另一个box,这种box称为container box。box由head和body构造,head中指明了box的大小和类型,如果size为1,则表示这个box的大小为large size,真正的si_vc mvhd box

生产者与消费者 模型理解,与简单设计-程序员宅基地

文章浏览阅读571次。题外话:从中秋请假到现在,接近20天的假期,让我彻底耍晕了,现在来写代码,发现始终没进入状态。以后建议大家没特殊事情,还是别请这么久啦,分开耍,有利于放松,也不至于耍得忘乎所以。我是一直想做互联网 并发 大数据方面的工作,有兴趣才有动力嘛,企业开发感觉活力不强,太多重复的劳动,还是喜欢研究 解决问题,有挑战的东东。线程这块,生产者与消费者模型一直是很经典的东东,这里我用自己的理解分享一下,有误..._现场总线生产者与消费者模型分析

MyBatis-Plus使用queryWrapper解决字符串中含数字的排序问题_mybatis字符串数字排序-程序员宅基地

文章浏览阅读7.4k次,点赞6次,收藏9次。今天遇到了Oracle数据库字符串(含数字)排序问题,这里记录的是如何用MyBatis-Plus的queryWrapper条件构造器来解决的方法。造成的原因:数据库字段为varchar类型(若为Number类型则无此问题)数据库字符串排序是按照顺序一位一位比较的,按照ascII码值比较。如:2比1大,所以12会排在2前面解决办法:先按字符串长度排序,再按字段排序关键代码(queryWrapper条件构造器实现形式)//利用数据库length函数获取字符串长度(这里的code是我数据库中的_mybatis字符串数字排序

kube operator部署kubernetes集群_kubeop-程序员宅基地

文章浏览阅读1.3k次。kube operator简介kube operator是一个kubernetes集群部署及多集群管理工具,提供web ui支持在离线环境部署多个kubernetes集群。KubeOperator 是一个开源项目,通过 Web UI 在 VMware、OpenStack 和物理机上规划、部署和运营生产级别的 Kubernetes 集群。支持内网离线环境、支持 GPU、内置应用商店,已通过 CNCF 的 Kubernetes 软件一致性认证。官网:https://kubeoperator.io/离线包_kubeop

随便推点

JS读取粘贴板内容-程序员宅基地

文章浏览阅读4.9k次。1.1 监听onpaste事件1.1.1 定义和用法npaste 事件在用户向元素中粘贴文本时触发。注意:虽然使用的 HTML 元素都支持 onpaste 事件,但实际上并非支持所有元素,例如 <p> 元素, 除非设置了 contenteditable 为 "true" (查看下文的更多实例)。提示:onpaste 事件通常用于 type="text" 的 ..._js 获取粘贴板内容 移动端

Win10系统下软件UI显示不完整解决方案_用苹果设计的ui在win显示不明显-程序员宅基地

文章浏览阅读4.7k次,点赞2次,收藏4次。在最初升级win10的时候就想到了这些问题,例如和各种软件的不兼容性。当然,事实上win10并没有想象的那么糟,作为一个windows user 来说,win10的确是很高大上的,无论是颜值或者是体验,都让人爱不释手。下面我就说一下最近和win10的那些事之一:在win10系统下安装了IBM Cognos Transform后,Transform的一些设计界面不能完全显示,而后我们就是要想办法_用苹果设计的ui在win显示不明显

HTTP方式在线访问Hadoop HDFS上的文件解决方案

为了通过HTTP方式在线访问HDFS上的文件,您可以利用WebHDFS REST API或者HttpFS Gateway这两种机制实现。1:httpfs是cloudera公司提供的一个hadoop hdfs的一个http接口,通过WebHDFS REST API 可以对hdfs进行读写等访问2:与WebHDFS的区别是不需要客户端可以访问hadoop集群的每一个节点,通过httpfs可以访问放置在防火墙后面的hadoop集群3:httpfs是一个Web应用,部署在内嵌的tomcat中。

WordPress优化Google广告加载速度_wordpress 怎么做谷歌优化-程序员宅基地

文章浏览阅读236次。网站的快速加载是良好用户体验和搜索引擎优化的要素之一,但每当谷歌AdSense的广告代码部署到网站上时,速度都会显着下降,这是因为要下载大量文件才能显示广告,并且其中包含大量无用、被墙的请求及代码。_wordpress 怎么做谷歌优化

c# controls.add 控件的使用 ,间接引用还是值引用_this.controls.add-程序员宅基地

文章浏览阅读8.6k次。c# controls.add 控件的使用 10函数内部用下面代码增加控件:Button btn = new Button();btn.Location = new Point( 20, 20);btn.Size = new Size( 60,40);btn.Text = "btn'sText";this.Controls.Add( btn );问题:函数执行完后,bt_this.controls.add

占位式插件化一Activity的跳转_activity跳转 插件-程序员宅基地

文章浏览阅读329次。原理宿主APP安装在手机中的APP,并且通过该APP加载插件中的Activity插件APP没有安装的apk,通过宿主直接打开其内部Activity标准(协议)宿主APP和插件APP通信的桥梁。宿主APP通过一个空壳Activity(代理Activity)加载插件app中的Activity,实际上插件app中的Activity并没有入栈,也没法入栈,因为插件app没有安装,没有上下文和..._activity跳转 插件