Ubuntu1804下的Melodic版本Moveit和OMPL的源码安装,并自定义规划算法在Moveit上使用

2 篇文章 0 订阅
2 篇文章 0 订阅

1.Moveit的源码安装

因为binary安装的Moveit无法自定义算法,所以要把之前安装的先卸载。如果没有安装可以跳过1.1步。

1.1卸载二进制安装的Moveit

$ sudo apt-get remove ros-melodic-moveit-*

1.2源码安装Moveit

更新软件包

$ rosdep update
$ sudo apt-get update
$ sudo apt-get dist-upgrade

安装依赖

$ sudo apt-get install python-wstool python-catkin-tools clang-format-3.9 

创建Moveit工作空间

$ mkdir ~/ws_moveit
$ cd ~/ws_moveit

加载环境变量

$ source /opt/ros/melodic/setup.bash

下载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
$ sudo catkin build

没有报错就成功
没有报错就成功,如果有包丢失,或者安装失败需要重复语句,直到安装成功。
这里参考了road_of_god博客的第一章,(链接: link)。

2.OMPL源码安装

和第一部分一样,如果之前二进制安装了Moveit,会自动给你安装OMPL的,刚刚卸载了Moveit,但是OMPL还在里面,所以还要先卸载,如果没有安装过,可以跳过2.1

2.1卸载OMPL

参考洱棟七的知乎回答link
首先进入根目录的库文件,检查是否有OMPL库。

$ cd /opt/ros/melodic
$ find ./ -name "ompl*"
$ find ./ -name "libompl"

在这里插入图片描述
看看自己下面有没有这些包和库文件,如果没有直接跳到下一步,如果有应该卸载。

$ sudo apt-get purge ros-melodic-ompl

然后再运行前面的两条find命令,应该找不到ompl相关的文件了。
至此,卸载成功。

2.2源码安装OMPL

这里参考link的第三章。
首先下载ompl的源码

$ cd ~/ws_moveit/src
$ git clone https://github.com/ompl/ompl

如果clone不好用,可以直接进入连接,下载压缩包,再解压到ws_moveit/src。
刚刚我们在一个./lib目录下卸载了三个.so文件,所以要把新下载的文件再安装上去。
先进入/ompl/src/ompl看是否有一个CMakeList.txt文件,如果有跳过这一段话,如果没有要先下载:

$ cd ~/ws_moveit/src/ompl/src/ompl
$ wget https://raw.githubusercontent.com/ros-gbp/ompl-release/debian/melodic/xenial/ompl/package.xml

然后进行安装之前,所以要修改安装目录,打开~/ws_moveit/src/ompl/src/ompl/CMakeList.txt中约第80行的安装地址:

DESTINATION ${CMAKE_INSTALL_LIBDIR}

改为:

DESTINATION "/opt/ros/melodic/lib"

然后可以编译安装ompl

$ cd ~/ws_moveit
$ sudo catkin build

正常安装且没有报错后,进行2.1步的find命令会找到新安装的ompl库。
至此。ompl的源码成功。可以进入第三章的自定义规划算法,

下面是我遇到的问题,可以跳过

在自定义ompl的源码后,每次修改并且build之后,运行ros更换成自己的规划算法MyRRT会报错,程序直接卡死。报错显示无法识别MyRRT。
其实每次编译之后,ompl会在/home/arl/ws_moveit/devel/.private/moveit_planners_ompl/lib/下再创建三四个.so的库文件,而moveit真正运行ompl库其实就是这几个库文件,而不是/opt/ros/melodic/lib下的库文件,这个下面的库文件是和编译有关的,所以要把CmakeList.txt中修改的路径再修改回来。再改回来

DESTINATION ${CMAKE_INSTALL_LIBDIR}

修改planners下的规划程序,再次build后,运行你的程序就是你修改的了。
测试验证:进入~/ws_moveit/src/ompl/src/ompl/geometric/planners/rrt/src
找到MyRRT.c修改大概227行位置

OMPL_INFORM("%s: MyRRT Created %u states", getName().c_str(), nn_->size());

在更换为MyRRT作为路径规划的程序后,在终端打印的字符就变成了,MyRRT Created,证明修改成功。

3.自定义规划算法

3.1自定义RRT

参考连接link
这个连接其中还有很多ompl的总结,可参考。
以ompl自带的RRT算法为例子:
第一步 进入~/ws_moveit/src/ompl/src/ompl/geometric/planners/rrt/src,把RRT.c和RRT.h复制重命名为MyRRT.c和MyRRT.h,进入这两个复制的文件,把里面所有的RRT字符替换为MyRRT。
第二步 进入~moveit_ws/src/moveit/moveit_planners/ompl/ompl_interface/src中找到planning_context_manager.cpp,添加头文件

#include </home/ununtu/ws_moveit/src/ompl/src/ompl//geometric/planners/rrt/MyRRT.h>

不要直接复制,看看你自己的h文件目录在哪。
还是在planning_context_manager.cpp下找到这个函数

void ompl_interface::PlanningContextManager::registerDefaultPlanners()

在里面仿照其他的语句,添加

registerPlannerAllocator(  //
      "geometric::MyRRT",      //
      std::bind(&allocatePlanner<og::MyRRT>, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3));

其实就是把RRT那条复制来,再把RRT改为MyRRT就可以保存了。
第三步 打开你要运行的程序的ompl_planning.yaml,moveit默认的路径在/home/arl/ws_moveit/src/panda_moveit_config/config/ompl_planning.yaml,但是你的包可能用的不是这个ompl_planning.yaml,找到你的这个yaml文件后,仿照着RRT添加说明:

MyRRT:
    type: geometric::MyRRT
    range: 0.0  # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
    goal_bias: 0.05  # When close to goal select goal, with this probability? default: 0.05

参考RRT,文件下面还要添加

 - MyRRT

至此规划算法的修改完成。
如果有报错,参考连接 link

Errors     << moveit_planners_ompl:make /home/arl/ws_moveit/logs/moveit_planners_ompl/build.make.020.log                                                                                                   
/home/arl/ws_moveit/devel/.private/moveit_planners_ompl/lib/libmoveit_ompl_interface.so.1.0.8:对‘ompl::geometric::TORRT::~TORRT()’未定义的引用
/home/arl/ws_moveit/devel/.private/moveit_planners_ompl/lib/libmoveit_ompl_interface.so.1.0.8:对‘ompl::geometric::TORRT::TORRT(std::shared_ptr<ompl::base::SpaceInformation> const&)’未定义的引用
collect2: error: ld returned 1 exit status
make[2]: *** [/home/arl/ws_moveit/devel/.private/moveit_planners_ompl/lib/moveit_planners_ompl/moveit_ompl_planner] Error 1
make[1]: *** [ompl_interface/CMakeFiles/moveit_ompl_planner.dir/all] Error 2
make[1]: *** 正在等待未完成的任务....
/home/arl/ws_moveit/devel/.private/moveit_planners_ompl/lib/libmoveit_ompl_interface.so.1.0.8:对‘ompl::geometric::TORRT::~TORRT()’未定义的引用
/home/arl/ws_moveit/devel/.private/moveit_planners_ompl/lib/libmoveit_ompl_interface.so.1.0.8:对‘ompl::geometric::TORRT::TORRT(std::shared_ptr<ompl::base::SpaceInformation> const&)’未定义的引用
collect2: error: ld returned 1 exit status
make[2]: *** [/home/arl/ws_moveit/devel/.private/moveit_planners_ompl/lib/moveit_planners_ompl/generate_state_database] Error 1
make[1]: *** [ompl_interface/CMakeFiles/moveit_generate_state_database.dir/all] Error 2
make: *** [all] Error 2
cd /home/arl/ws_moveit/build/moveit_planners_ompl; catkin build --get-env moveit_planners_ompl | catkin env -si  /usr/bin/make --jobserver-fds=6,7 -j; cd -

显示的是库文件无法识别刚修改的MyRRT,解决办法:

$ cd /home/arl/ws_moveit/devel/.private/moveit_planners_ompl/lib/
$ sudo rm -rf libmoveit_ompl_interface.so.*  //把lib下生成的库文件先删除
$ cd ~/ws_moveit/
$ sudo catkin build   //重新编译

还不行的话,按照第二章的方法,卸载重装OMPL。

3.2编译测试

$ cd ~/ws_moveit/
$ sudo catkin build

如果没有报错说明修改成功了。
在运行你的launh文件,打开Rviz和MotionPlanning组件,设置好目标点后选择你的MyRRT算法,并开始planning,终端打印的规划的信息,Rviz显示规划的演示,说明修改成功。
测试验证:进入~/ws_moveit/src/ompl/src/ompl/geometric/planners/rrt/src
找到MyRRT.c修改大概227行位置

OMPL_INFORM("%s: MyRRT Created %u states", getName().c_str(), nn_->size());

在更换为MyRRT作为路径规划的程序后,在终端打印的字符就变成了,MyRRT Created,证明修改成功。
之后可以写你自己的规划算法并按照上面方法添加到moveit上面。

  • 11
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
### 回答1: 要安装ROS Melodic中的MoveIt,您需要执行以下步骤: 1. 首先,确保您已经安装了ROS Melodic。如果没有,请按照官方文档中的说明进行安装。 2. 接下来,您需要安装MoveIt软件包。您可以使用以下命令在终端中安装: ``` sudo apt-get install ros-melodic-moveit ``` 3. 安装完成后,您可以启动MoveIt的演示程序,以确保一切正常。您可以使用以下命令启动演示程序: ``` roslaunch moveit_tutorials demo.launch ``` 这将启动一个RViz窗口,其中包含一个机器人模型和一些演示程序。 4. 如果您想使用自己的机器人模型,您需要创建一个MoveIt配置包。您可以使用以下命令创建配置包: ``` roslaunch moveit_setup_assistant setup_assistant.launch ``` 这将启动一个向导,指导您创建MoveIt配置包。 5. 创建配置包后,您可以使用以下命令启动MoveIt: ``` roslaunch <your_moveit_config_package> <your_moveit_planning_execution_file>.launch ``` 这将启动MoveIt,并将您的机器人模型加载到RViz中。 希望这可以帮助您安装使用ROS Melodic中的MoveIt。 ### 回答2: 要在ROS Melodic安装MoveIt,可以按照以下步骤进行操作: 1. 首先,确保已正确安装ROS Melodic。可以通过下列命令确认: ``` $ rosversion -d ``` 如果输出是`melodic`,则表示已经安装了ROS Melodic。 2. 接下来,使用以下命令安装MoveIt软件包: ``` $ sudo apt-get install ros-melodic-moveit ``` 这将安装MoveIt的基本软件包。 3. 在安装MoveIt之后,还可以安装MoveIt的可视化工具: ``` $ sudo apt-get install ros-melodic-moveit-visual-tools ``` 这将使您能够使用rviz等工具进行可视化操作。 4. 安装完成后,使用以下命令启动MoveIt: ``` $ roslaunch moveit_setup_assistant setup_assistant.launch ``` 这将打开MoveIt的设置助手,您可以使用它来配置和创建您的机器人模型。 5. 使用设置助手完成机器人模型的创建和配置后,您可以保存并退出设置助手。然后使用以下命令启动MoveIt RViz界面: ``` $ roslaunch <your_robot_moveit_config> moveit_rviz.launch ``` `<your_robot_moveit_config>`是您在设置助手中创建的机器人模型的名称。 现在,您已成功在ROS Melodic安装和配置了MoveIt。您可以通过MoveIt RViz界面来规划和控制您的机器人。 ### 回答3: 要在ROS Melodic安装MoveIt,需要按照以下步骤进行操作: 1. 首先,确保已经在您的计算机上安装了ROS Melodic。如果还没有安装,可以访问ROS官方网站的安装页面,按照指示进行安装。 2. 打开终端,并输入以下命令来安装MoveIt的软件包: ``` $ sudo apt-get install ros-melodic-moveit ``` 这将自动安装MoveIt所需的所有包,并解决依赖项。 3. 安装完成后,您可以通过运行以下命令来验证安装是否成功: ``` $ roslaunch moveit_setup_assistant setup_assistant.launch ``` 如果成功启动了MoveIt的设置助手,那么说明安装已经完成。 4. 此外,您还可以安装MoveIt的可视化工具,以便更好地使用它。运行以下命令来安装RViz的配置文件: ``` $ sudo apt-get install ros-melodic-moveit-visual-tools ``` 这将安装MoveIt的RViz配置文件和其他一些可视化工具。 完成以上步骤后,您已经成功地在ROS Melodic安装了MoveIt。您可以开始使用MoveIt来规划和控制机器人的运动。有关更多详细信息和教程,请访问MoveIt官方网站或ROS官方网站的MoveIt页面。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值