Tiny Differentiable Simulator是一个仅包含头文件的C++物理库

2020-05-16 03:35:29

它目前实现了各种刚体动力学算法,包括正动力学和逆动力学,以及基于脉冲级LCP和基于力的非线性弹簧阻尼器的接触模型。实现了电机、伺服和串联弹性执行器(SEA)动力学的执行器模型。

整个代码库都是模板化的,因此您可以使用正向和反向模式自动区分标量类型,如CppAD、Stan Math fvar和ceres::jet。该库还可以与常规浮点值或双精度值一起使用。另一种选择是使用包含定点整数数学,它提供跨平台确定性计算。

文中提供了利用CERES进行系统辨识的梯度和使用控制工具箱生成轨迹的实例。

URDF文件可以通过PyBullet接口或基于TinyXML2提供的解析器加载。因此,所有模拟功能均可用,无需PyBullet。

建议首先设置BLASFEO和HPIPM,以获得更高效的解算器,这些解算器也可以处理优化问题中的约束:

然后安装CppADCodeGen(我们并不真正需要它,但是CT需要CPPADCG标志才能使用线性化程序)。

ct_optcon要构建这些文件,请确保安装了Eigen和Boost(libost-dev~1.65)。接下来,发出以下命令:

Git克隆https://github.com/ethz-adrl/control-toolbox.gitcd ct_coem kdir buildcd buildcmake..。-DCPPAD=1-DHPIPM=1makemake installcd../../ct_optconmkdir buildcd buildcmake..。-DHPIPM=1makemake安装。

要通过基于Web的可视化工具MeshCat支持可视化,需要安装以下软件包:

建议安装二进制软件包,如ZeroMQ自述文件所示。

这将使用ZMQ侦听端口7000(C++MeshCat可视化客户端中的默认设置)启动MeshCat。

要安装可视化工具服务器以使其能够在共享内存模式下运行可视化工具窗口,请执行以下命令。

如果模拟器在共享内存模式下使用PyBullet可视化运行,请首先使用以下命令打开可视化工具服务器。

要加载不带pybullet的URDF模型,我们的基于C++的导入器需要安装如下的TinyXML2: