Coppeliasim(Vrep)4.4.0与C++ ZMQremoteAPI联合仿真流程

  • Post author:
  • Post category:其他

        最近开始学习Coppeliasim4.3.0和C++联合仿真,发现网上基本都是老版remoteAPI的资料,而vrep自身的用户手册说的实在是不清楚,所以打算自己记录一下。

必备软件

1、Coppeliasim4.3.0及以上

2、Visual Studio 2019/2022

3、Cmake

编译

        首先需要利用cmake编译生成项目文件,这里提供3种方法(也可以说是两种)。

(1)官方教程

        在安装目录programming\zmqRemoteApi\clients\cpp下,命令行运行如下指令,即可在.\build文件夹下生成相应的项目文件。

$ mkdir build

$ cd build

$ cmake -DGENERATE=OFF ..

$ cmake –build . –config Release

(2)Cmake-GUI(推荐)

 

         在CmakeGUI中设置源文件路径和编译路径,点击configure选择编译器generator,configuration done后再点击Generate,最后Open Project打开项目文件。

(3)VS2022

        Visual Studio中也可以直接对Cmake文件进行编译,具体参考以下两篇:Visual Studio 2022编译CMake工程

VS2019直接编译cmake项目

 测试

        编译完成后打开的项目文件中包含多个官方例程,将example设为启动项目,vrep中打开scenes/controlTypeExamples/controlledViaRemoteApi,运行example发现仿真开始,同时返回当前仿真时间,最后仿真在3s时结束。

官方例程

        在scenes/controlTypeExamples/controlledViaRemoteApi目录下,有官方给出的通过远程Api通信的例程文件。双击remoteApiControlledBubbleRob打开其Lua脚本:

         简要介绍一下这个脚本的内容:2-7行获取对象句柄,9-10对关节角速度进行初始化,26-27是轨迹绘制指令,只有14行是调用外部应用进行通信。加载在安装目录\CoppeliaSimEdu下的bubbleRobClient.exe文件并传递leftMotor, rightMotor, noseSensor的信息,最后的0/1是设置是否打开应用窗口,设1的话窗口打开并在每个仿真周期返回’.’。

  注意事项

1、依赖库未安装

        cmake报错:

Could NOT find xxx (missing: xxx) 

        一般会要求安装Boost, Python3, Opencv, ZeroMQ等一系列依赖库。

2、文件名不一致

        如果依赖库已安装的情况下依然报错。例如我就遇到了:

Could NOT find Boost (missing: system) (found version “1.78.0”)

        在CMakeLists.txt中加入

set(Boost_DEBUG ON)

         即可在Cmake中返回详细搜索过程,根据报错信息上一行的搜索对象,寻找对应文件是否存在。最后发现默认搜索文件是libboost_system-vc142-mt-sgd-x64-1_78.lib,而我的文件名是libboost_system-vc142-mt-gd-x64-1_78.lib导致报错

3、FetchContent报错

        编译过程中需要从github上clone两个依赖库,而由于国内连接问题,直接从github上下载速度慢且不稳定,因此可以在CMakeList.txt中将FetchContent中对应的仓库地址改为国内镜像站的地址,例如:

 GIT_REPOSITORY https://gitclone.com/github.com/danielaparker/jsoncons
 GIT_REPOSITORY https://gitclone.com/github.com/zeromq/cppzmq


版权声明:本文为weixin_42054234原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。