TL;博士
- 创建空的可视化 C++ 项目
- 复制代码
- 通过 VCC++ 目录添加 MuJoCo 头文件 -> 包含目录(确保将平台设置为 x64)
- 通过链接器 -> 输入 -> 附加库目录添加 Mujoco 安装的库目录(“bin”目录)。
- 通过 Linker -> General -> Additional Dependencies 添加库名称(glfw3.lib、mujoco200.lib...等)
- 编译
- 将生成的 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 目录中(见下文)
添加头文件
- 右键单击项目-> 属性
- 将配置从选择的任何内容(很可能是 Debug/x86)更改为“所有配置”并将平台设置为 x64*
- VCC++ 目录 -> 包含目录
- 添加您的 MuJoCo 安装的包含目录“mujoco200_win64\mujoco200_win64\include”(应该是这样的路径)
*这确保您不必为每个配置重复整个过程。
VSCode 在 hello.c 中用红色下划线 #include "mujoco.h"
现在应该没有了。
添加库
- 右键单击项目-> 属性
- 配置属性 -> 链接器 -> 输入 -> 附加依赖项
- 输入位于 MuJoCo“安装”中的 .lib 文件的名称
- 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 版本与您不同,但它基本上应该以相同的方式工作(除了激活的东西)。