MuJoCo源码学习笔记1:编译安装及目录分析

编译安装

MuJoCo的代码质量非常高并且代码量并不庞大,因此适合进行学习。任何开源项目学习的第一步都是先编译源码,把整个环境跑通。

在github仓库下载2.3.6版本的源码,解压后创建build文件夹。然后cd到buidl目录下运行

cmake .. #配置cmake
cmake --build . #编译
cmake .. -DCMAKE_INSTALL_PREFIX=/opt/mujoco #安装位置设为/opt/mujoco
cmake --install . #安装

这个cmake只自动编译了MuJoCo的主体,没有python binding,python部分需要另外弄,我的主要目的是学习MuJoCo本身,因此这个先不搞。安装完成后运行,/opt/mujoco/bin 目录下的simulate,仿真器可以启动,将源码中提供的模型拽进去,也可以正常仿真,说明安装成功了。

目录分析

根据官方文档,源码主要分为6部分:

  • Engine : 物理引擎,由C编写
  • Parser :xml解释器,由C++编写,将MJCF模型文件生成mjCModel(C++对象)
  • Compiler : 编译器,由C++编写,将mjCModel C++对象转为mjModel(C结构体)
  • Abstract visualizer :抽象可视化,由C编写
  • OpenGL renderer : 渲染引擎,可替换
  • UI framework : UI框架

源码目录src下有6个文件夹:

  • cc : 只有一个文件array_safety.h其中提供了几个函数来代替标准库中的内容
  • engine : 应该是Engine部分的代码,是我们学习的核心
  • xml :应该是Parser和Compiler的代码
  • render : 应该是Abstract visualizer和OpenGL renderer的代码
  • ui : 应该是UI框架的代码
  • user :提供给用户的封装代码

项目组织结构

  • cmake : cmake 文件夹
  • dist : dist文件夹
  • doc : 文档
  • include : 头文件
  • introspect :暂不确定,目测是给python用的
  • model :一些示例模型
  • plugin : 插件
  • python : python binding
  • sample :示例代码
  • simulate :simulate仿真器的源码
  • src :源码
  • test : 测试代码
  • unity :暂不确定,应该是给unity用的内容

构建过程

以上部分是根据文档和文件夹名称得到的信息,其中有不确定的部分,真正要弄明白还是得看看项目是怎么构建的。来分析一下MuJoCo的cmake文件。

include(MujocoOptions)
include(MujocoMacOS)
include(MujocoDependencies)

51到53行包含了cmake目录下的这三个文件,进行了一些配置,拉取了一些依赖。
其中添加的依赖有:

  • lodepng : C++的png库
  • TinyXML-2 :XML库
  • tinyobjloader :对象加载器
  • libccd :Libccd是用于两个凸形状之间的碰撞检测的库。
  • qhull : convex hull、Delaunay三角刨分等
  • Eigen : 线性代数库
  • Abseil : Abseil是一个开源的c++库代码集合,旨在增强c++标准库。Abseil库代码是从Google自己的c++代码库中收集的,经过了广泛的测试并在生产中使用。
  • gtest : 测试框架
  • benchmark :测试框架
add_subdirectory(plugin/elasticity)
add_subdirectory(plugin/sensor)
add_subdirectory(src/engine)
add_subdirectory(src/user)
add_subdirectory(src/xml)
add_subdirectory(src/render)
add_subdirectory(src/ui)

编译时添加了这些文件夹,说明除了src下的源码,还是用了plugin下的两个插件中的源码。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值