微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将OMPL与Drake一起使用

如何解决将OMPL与Drake一起使用

我正在尝试在drake上使用ompl,并且在drake中使用ompl标头时遇到问题。我使用安装路径安装了ompl,并在drake中进行了以下更改:

在工作空间中添加了以下内容

new_local_repository(
    name = "ompl",path = "/usr/local/include/ompl-1.5/ompl",build_file = "ompl.BUILD",)

ompl.BUILD:

cc_library(
    name = "ompl",hdrs = glob(["**"]),includes = ["include"],visibility = ["//visibility:public"],linkstatic = 1,)

在存储库的BUILD.bazel中:

drake_cc_binary(
    name = "ompl_ex",srcs = ["src/ompl_ex.cc"],data = [],test_rule_args = ["--target_realtime_rate=0.0"],deps = [
        "@gflags","@ompl//:ompl",],)

ompl_ex.cc

#include <memory>

#include <limits.h>
#include <unistd.h>
#include <fstream>
#include <string>
#include <gflags/gflags.h>
#include <iostream>

#include <ompl/config.h>
#include <vector>

namespace drake {
namespace ompl {

int DoMain(){
    std::cout<<"the function is working"<<std::endl;
    return 0;
}

}  // namespace examples
}  // namespace drake

int main(int argc,char* argv[]) {
  gflags::ParseCommandLineFlags(&argc,&argv,true);
  return drake::ompl::DoMain();
}

我得到的错误

infinite_horizon_ltl/src/ompl_ex.cc:10:10: Fatal error: ompl/config.h: No such file or directory
 #include <ompl/config.h>

我类似地使用现货库,它们似乎运行良好。不知道在OMPL方面我出了什么问题。我检查了drakes git问题,发现曾经尝试进行集成,但是现在删除了该分支,并且提出的解决方案似乎在我的系统上不起作用。

解决方法

我发现在drake项目中使用cmake作为外部库是最容易的。 ompl可以很好地工作。这是一个快速示例,将drakeompl都导入为外部库并解决了一个简单的计划问题。

https://github.com/DexaiRobotics/drake-torch/tree/master/examples/drake-ompl

使用dexai2/drake-torch/cpu-nightly-ros泊坞窗制作输出和视频,可在此处使用:https://hub.docker.com/r/dexai2/drake-torch/tags

顺便说一句,根据您使用的Ubuntu版本,您可能需要更改gcc版本-例如对于Ubuntu 20.04,您需要在gcc-9中指定的g++-9CMakeLists.txt,在18.04上需要gcc-7g++-7。在此处查看注释:https://drake.mit.edu/developers.html#id10

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。