1

这是一个非常简单的问题,但我很难在网上找到答案。

DeepMind 刚刚免费提供 MuJoCo,所以我决定将它下载到我的 Windows 计算机上并进行测试。但是,当我安装时,我得到的只是一个文件夹。

我创建了一个不同的文件夹(不在下载的文件夹内),并将教程hello.xml中的和hello.c文件复制粘贴到这个新文件夹中。但是,VSCode在内部用红色下划线带有警告。#include "mujoco.h"hello.ccannot open source file "mujoco.h"

我假设我需要在我的路径中添加一些东西,或者以某种方式让我的编译器能够找到头文件。我该怎么做呢?

总的来说,我希望能够运行hello.c.

(我查看了许多不同的链接,如果需要,我可以在这里链接以证明我已经在其他地方进行了研究,但大多数在线资源似乎都是 1。假设事情会正常工作/您有 C 和库导入的经验 2。适用于 Macs/Linux 或 3。适用于 mujoco-python)

4

1 回答 1

0

TL;博士

  1. 创建空的可视化 C++ 项目
  2. 复制代码
  3. 通过 VCC++ 目录添加 MuJoCo 头文件 -> 包含目录(确保将平台设置为 x64)
  4. 通过链接器 -> 输入 -> 附加库目录添加 Mujoco 安装的库目录(“bin”目录)。
  5. 通过 Linker -> General -> Additional Dependencies 添加库名称(glfw3.lib、mujoco200.lib...等)
  6. 编译
  7. 将生成的 exe 放入 MuJoCo 安装的 bin 目录中

创建项目

打开 Visual Studio 文件 -> 新建 -> 项目 -> Visual C++ -> 空项目

在此处输入图像描述

编写代码

stackoverflowMuJoCo -> 源文件 -> 添加新项目 -> C++ 文件(我称之为“main.cpp”,但没关系)

将 hello.c 中的代码复制到 main.cpp

#include "mujoco.h"
#include "stdio.h"

char error[1000];
mjModel* m;
mjData* d;

int main(void)
{
   // activate MuJoCo
   mj_activate("mjkey.txt");

   // load model from file and check for errors
   m = mj_loadXML("../model/hello.xml", NULL, error, 1000);
   if( !m )
   {
      printf("%s\n", error);
      return 1;
   }

   // make data corresponding to model
   d = mj_makeData(m);

   // run simulation for 10 seconds
   while( d->time<10 )
      mj_step(m, d);

   // free model and data, deactivate
   mj_deleteData(d);
   mj_deleteModel(m);
   mj_deactivate();

   return 0;
}

*注意我在 deepmind 接管之前下载了它,所以我仍然需要使用 mj_activate 调用,但你可以忽略它。我还更改了 hello.xml 的路径,因为稍后我要将可执行文件复制到 MuJoCo 安装的 bin 目录中(见下文)

添加头文件

  1. 右键单击项目-> 属性
  2. 将配置从选择的任何内容(很可能是 Debug/x86)更改为“所有配置”并将平台设置为 x64*
  3. VCC++ 目录 -> 包含目录
  4. 添加您的 MuJoCo 安装的包含目录“mujoco200_win64\mujoco200_win64\include”(应该是这样的路径)

在此处输入图像描述

*这确保您不必为每个配置重复整个过程。

VSCode 在 hello.c 中用红色下划线 #include "mujoco.h"

现在应该没有了。

添加库

  1. 右键单击项目-> 属性
  2. 配置属性 -> 链接器 -> 输入 -> 附加依赖项
  3. 输入位于 MuJoCo“安装”中的 .lib 文件的名称

在此处输入图像描述

在此处输入图像描述

  1. Linker -> General -> Additonal Library Directories 添加“mujoco200_win64\mujoco200_win64\bin”目录

编译现在应该成功,但执行可能会失败 在此处输入图像描述

执行和调试

在此阶段,执行可能会失败并显示以下错误消息。

在此处输入图像描述

要解决此问题,您只需将输出的 exe 文件stackoverflowMuJoCo\x64\Release\stackOverflowMuJoCo.exe 复制到MuJoCo 安装的bin目录中即可。

这将确保它可以找到所需的 dll。

如果希望能够调试:手动将所有dll文件复制到“stackoverflowMuJoCo\x64\Debug”目录下。

警告

hello world 示例中的代码是被动模拟,这意味着您不会在屏幕上看到任何内容。

如果你想看到一些东西用这个替换代码:https ://github.com/atabakd/MuJoCo-Tutorials/blob/master/src/0_preliminaries/pd.cpp并将倒置的Pendulum.xml 添加到模型目录。

一些笔记

可能有更好/更简单的工作流程,但现在我只是试图让它工作。此外,我使用的 MuJoCo 版本与您不同,但它基本上应该以相同的方式工作(除了激活的东西)。

于 2021-10-30T00:26:46.153 回答