0

我正在尝试在 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 问题,发现有人尝试进行集成,但现在删除了分支,并且提出的解决方案似乎不适用于我的系统。

4

1 回答 1

2

我发现drake在项目中作为外部库使用是最容易的cmake。这与ompl. 这是一个快速示例,它同时导入drakeompl作为外部库,并解决了一个简单的规划问题。

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

输出和视频是dexai2/drake-torch/cpu-nightly-ros使用此处提供的 docker 制作的:https ://hub.docker.com/r/dexai2/drake-torch/tags

顺便说一句,根据您使用的 Ubuntu 版本,您可能需要更改 gcc 版本 - 例如,您需要gcc-9g++-9CMakeLists.txtUbuntu 20.04 和gcc-718.04g++-7中指定。请参阅此处的注释:https ://drake.mit.edu/developers.html#id10

于 2020-10-01T17:35:08.037 回答