1. 简介
1.1 Touch简介
开放感知工具包包括快速触觉微API、触觉设备API(HDAPI)、触觉库API(HLAPI)、实用程序、地理触摸设备驱动程序(GTDD)、源代码示例、本程序员指南和API参考。快速触觉学是一个微型API,它可以快速和方便地编写新的触觉应用程序或添加触觉到现有的应用程序。内置的几何解析器和智能默认参数使得用最少的代码设置触觉/图形场景成为可能。HDAPI提供了对触觉设备的低级访问,使触觉程序员能够直接渲染力,提供了对配置驱动程序的运行时行为的控制,并提供了方便的实用程序功能和调试辅助工具。HLAPI提供了高级的触觉渲染,并被设计为OpenGL®API程序员所熟悉的。它允许显著地重用现有的OpenGL代码,并极大地简化了触觉和图形线程的同步。地理触摸设备驱动程序支持所有目前运输的触摸设备。
OpenHaptics 3.5.0试图通过封装所有触觉/图形应用程序通用的基本步骤来使编程更加简单。这个封装是在快速感知微API的C++类中实现的。通过预测典型的使用场景,可以设置各种广泛的默认参数设置,允许用户非常有效地编码启用触觉的应用程序。
1.2 CoppeliaSim 简介
CoppeliaSim(之前称为V-REP)是一款功能强大的机器人仿真软件,主要用于模拟机器人系统、自动化设备和相关的传感器、控制器等。它基于分布式控制架构,并具备集成开发环境,支持多种编程语言和接口,为用户提供了一个完整的仿真和测试平台。
以下是CoppeliaSim的一些主要特点和功能:
- 广泛的适用性和兼容性:CoppeliaSim可以在Windows、MacOS和Linux等多个操作系统上运行,并支持多种编程语言,如C/C++、Python、Java、Lua、Matlab和Octave等。这使得用户可以根据自己的需求选择最适合的编程语言和工具。
- 多种机器人模型支持:CoppeliaSim支持多种机器人模型,包括移动机器人、人形机器人、工业机械臂等。用户可以选择适合其需求的机器人模型,并对其进行配置和控制。
- 传感器模拟:CoppeliaSim支持各种传感器的模拟,如激光雷达、摄像头、红外传感器等。用户可以将传感器放置在机器人或环境中,并模拟其感知和数据采集功能。
- 物理仿真和碰撞检测:CoppeliaSim提供了强大的物理引擎,可以模拟物体的运动、碰撞和物理特性。它支持实时碰撞检测和物体之间的力学交互,使仿真更加真实和准确。
- 控制器和编程:用户可以使用不同的编程语言编写控制逻辑和算法,并通过编程接口与仿真环境进行交互。用户可以控制机器人的运动、感知和决策,以实现复杂的任务和功能。
- 场景和对象建模:CoppeliaSim允许用户通过拖放和编辑工具来构建仿真场景,并设置物体的物理特性和运动属性。用户还可以导入由SolidWorks、AutoCAD等三维绘图软件创建的模型,以扩展其建模能力。
- ROS2支持:CoppeliaSim支持ROS2(Robot Operating System 2),这使得用户可以将其与ROS2生态系统中的其他工具和库进行集成。通过ROS2,用户可以更轻松地将CoppeliaSim与其他机器人软件组件进行连接和交互。
下载地址:https://www.coppeliarobotics.com/
1.3 libtorch 简介
LibTorch是PyTorch的C++接口,实现了在C++中进行网络训练和网络推理的功能。以下是LibTorch的一些主要特点和功能:
- 接口一致性:LibTorch中的大部分接口都与PyTorch一致,因此如果你熟悉PyTorch,使用LibTorch的学习成本将会比较低。这种一致性还使得LibTorch成为一个强大的张量库,提供了类似于PyTorch的清晰和易用的接口。
- 高性能:LibTorch被优化为高性能的C++库,可以在支持的硬件上获得最佳的计算性能。此外,LibTorch支持GPU加速,使得模型推理过程可以充分利用GPU的计算能力。
- 深度学习支持:LibTorch支持各种深度学习任务,包括图像分类、目标检测、语义分割、机器翻译等。它提供了一系列的预训练模型和工具,方便用户进行模型训练与推理。
- 跨平台支持:LibTorch可在多个操作系统上运行,包括Windows、Linux和macOS。这使得用户可以在不同的设备上进行模型开发和部署,以满足特定的应用需求。
- 扩展性:LibTorch支持自定义C++扩展,用户可以使用C++编写具有高效计算能力的自定义操作和模块。这使得用户在深度学习框架中实现更多的自定义功能。
- 编译和安装简单:如果系统中已经安装了PyTorch,那么可以直接使用LibTorch,无需进行额外的安装和配置。
1.4 总述
结合上述工程可以配置交互式的强化学习环境,用于科研或生产实践。
2. VS2022 工程环境配置
2.1 配置VC++包含目录和库目录
添加libtorch的include路径
.\libtorch\include\torch\csrc\api\include
.\libtorch\include
添加libtorch和CoppeliaSim的lib路径
C:\Program Files\CoppeliaRobotics\CoppeliaSimEdu\programming\remoteApiBindings\lib
C:\Program Files\CoppeliaRobotics\CoppeliaSimEdu\programming\legacyRemoteApi\remoteApiBindings\lib\x64\Release
.\libtorch\lib
2.2 配置附加包含目录
添加OpenHaptics和CoppeliaSim的路径
C:\Program Files\CoppeliaRobotics\CoppeliaSimEdu\programming\legacyRemoteApi\remoteApi
C:\Program Files\CoppeliaRobotics\CoppeliaSimEdu\programming\remoteApiBindings
C:\Program Files\CoppeliaRobotics\CoppeliaSimEdu\programming\include
D:\OpenHaptics\Developer\3.5.0\Quickhaptics\header
D:\OpenHaptics\Developer\3.5.0\utilities\include
D:\OpenHaptics\Developer\3.5.0\include
2.3 配置预处理器
添加如下指令,(虽然不知到为什么,但是添加后,可以避免很多报错)
WIN32
NON_MATLAB_PARSING
MAX_EXT_API_CONNECTIONS=255zasda
NOMINMAX
NDEBUG
_CONSOLE
2.4 配置C++语言标准
最新的libtorch可能需要最新的C++语言标准,目前而言C++19版以上都可以。
2.5 配置链接器的附加库目录
添加如下目录路径(好像不是必须)
D:\OpenHaptics\Developer\3.5.0\Quickhaptics\lib\x64\Release
D:\OpenHaptics\Developer\3.5.0\utilities\lib\x64\Release
D:\OpenHaptics\Developer\3.5.0\lib\x64\Release
.\libtorch\lib
2.6 配置链接器的附加依赖项
添加如下lib,冗余比较多,可以按需添加,偷懒的话,一股脑添加
.\libtorch\lib\*.lib
hd.lib
hdu.lib
hl.lib
hlu.lib
hapticmouse.lib
snapconstraints.lib
Qh.lib
QHWin32Wrapper.lib
QHGLUTWrapper.lib
glui32.lib
glut32.lib
remoteApiSharedLib-64.lib
2.7 其他
使用Touch时还需采用多线程
此外,还需要将libtorch\lib文件夹中的动态库*.dll文件copy到工程文件的debug、release文件夹下。