在环境配置的过程中参考了以下博主的博客,在此表示感谢
一、下载并安装CoppeliaSim(原名V-Rep)4.2.0版本
https://www.coppeliarobotics.com/
通过官网下载教育版即可
V-Rep默认安装路径为C:\Program Files\CoppeliaRobotics,无法更改。安装过程无脑下一步,等待安装完成。
二、下载安装Visual Studio2017
https://my.visualstudio.com/Downloads
官网下载Visual Studio Community 2017即可
安装时勾选“使用C++的桌面开发”,若编译时要求安装Windows10 SDK,可再次打开本安装程序添加SDK,推荐安装在非系统盘(非C盘)
三、运行C:\Program Files\CoppeliaRobotics\CoppeliaSimEdu\programming\remoteApiBindings\lib目录下的remoteApiSharedLib-64.vcxproj 生成remoteApiSharedLib-64.lib和remoteApi.dll
点击“调试”-“开始调试”后
若出现“找不到 Windows SDK 版本10.0.17134.0”,则启动VisualStudio安装程序安装对应SDK即可
若出现
1>extApiPlatform.obj : error LNK2001: 无法解析的外部符号 close_shared_memory
1>extApiPlatform.obj : error LNK2001: 无法解析的外部符号 set_shared_memory_name
1>extApiPlatform.obj : error LNK2001: 无法解析的外部符号 map_shared_memory
1>extApiPlatform.obj : error LNK2001: 无法解析的外部符号 open_shared_memory
1>extApiPlatform.obj : error LNK2001: 无法解析的外部符号 set_shared_memory_size
1>extApiPlatform.obj : error LNK2001: 无法解析的外部符号 destroy_shared_memory
则按照 warning LNK4042: 对象被多次指定;已忽略多余的指定_敬我岁月无波澜-CSDN博客
中做法,右键“remoteApiSharedLib-64”-“属性”-“配置属性”-“C/C++”-“输出文件”-“对象文件名”改为“$(IntDir)%(RelativeDir)”即可
编译成功后
C:\Program Files\CoppeliaRobotics\CoppeliaSimEdu\programming\remoteApiBindings\lib\bin\release目录下出现remoteApi.dll和remoteApiSharedLib-64.lib
即可进行下一步
四、将remoteApi.dll所在目录添加环境变量Path
在“控制面板”中搜索“高级系统设置”点击“环境变量”
找到“系统变量”下的“Path”点击“编辑”
点击“新建”,将刚生成的remoteApi.dll路径粘贴上即可
五、VS2017环境配置
打开VS2017,点击“文件”-“新建”-“项目”新建控制台应用
活动解决方案平台改为“×64”,配置与“remoteApiSharedLib-64”相同,改为“Release”
右键项目名称打开属性页,在“配置属性”-“VC++目录”-“库目录”中添加remoteApiSharedLib-64.lib文件所在的目录C:\Program Files\CoppeliaRobotics\CoppeliaSimEdu\programming\remoteApiBindings\lib\x64\Release
在“配置属性”-“C/C++”-“常规”-“附加包含目录”中添加三个目录
C:\Program Files\CoppeliaRobotics\CoppeliaSimEdu\programming\common
C:\Program Files\CoppeliaRobotics\CoppeliaSimEdu\programming\include
C:\Program Files\CoppeliaRobotics\CoppeliaSimEdu\programming\remoteApi
将“配置属性”-“C/C++”-“预处理器”-“预处理器定义”替换为以下内容
WIN32
NDEBUG
_CONSOLE
NON_MATLAB_PARSING
MAX_EXT_API_CONNECTIONS=255
“配置属性”-“链接器”-“输入”-“附加依赖项”中添加remoteApiSharedLib-64.lib
#include
#include
#include
extern "C" {
#include "extApi.h"
}
int main()
{
int Port = 3000;
int PositionControlHandle;
float position[3];
float positionmove[3];
//智能制造单元控制系统 Intelligent manufacturing unit control system
//imucs
int clientID = simxStart("127.0.0.1", Port, true, true, 2000, 5);
if (clientID != -1)
{
printf("V-rep connected.");
int count = 0;
//extApi_sleepMs(300);
while (simxGetConnectionId(clientID) != -1)
{
count++;
simxGetObjectHandle(clientID, "IRB140_manipulationSphere", &PositionControlHandle, simx_opmode_oneshot);
simxGetObjectPosition(clientID, PositionControlHandle, -1, position, simx_opmode_oneshot);
positionmove[0] = position[0];
positionmove[1] = position[1] + 0.01* sin(count / 10.0);
positionmove[2] = position[2];
simxSetObjectPosition(clientID, PositionControlHandle, -1, positionmove, simx_opmode_oneshot);
printf("(%f,%f,%f)\r\n", position[0], position[1], position[2]);
}
simxFinish(clientID);
}
else {
printf("V-rep can't be connected.");
//extApi_sleepMs(300);
}
return 0;
}
若提示找不到remoteApi.dll,则检查系统变量设置是否有误,也可重新打开VisualStudio再次尝试
六、运行V-Rep仿真
打开V-Rep,将“Model Browser”中的“ABB IRB 140.ttm”拖拽至右边界面中
双击“Scene Hierarchy”中“IRB140”右边的文本图标打开脚本
在第一行粘贴“simExtRemoteApiStart(3000)”
该数据需要与VS代码中的“Port”一致
再在VS中开始运行代码
观察到V-Rep中的ABB机器人开始仿真
则用V-Rep4.2.0与VS2017通过C++调用RemoteApi进行通信环境配置,远程操控机械臂成功
后续可以在此基础上用VS2017编程实现仿真了