在環境配置的過程中參考了以下博主的博客,在此表示感謝
1、V-REP通過C++程序控制仿真 :https://blog.csdn.net/iamqianrenzhan/article/details/88777469
2、v-rep 入門-VS2015 c++ 控制小車:https://blog.csdn.net/qq_25379821/article/details/81698529
爲了方便大家學習,我把建立的工程也上傳了,工程裏可以控制機械臂的位姿,並且將視覺傳感器的數據保存成圖片,方便後期處理,鏈接:https://download.csdn.net/download/qq_33374294/11547643
首先介紹VS2017的環境配置
一、運行C:\Program Files\V-REP3\V-REP_PRO_EDU\programming\remoteApiBindings\lib目錄下的remoteApiSharedLib-64.vcxproj
編譯之後生成文件夾X64,在裏面有文件remoteApi.dll和remoteApiSharedLib-64.lib,之後會用到
二、將remoteApi.dll所在目錄添加環境變量Path
在系統屬性裏點擊環境變量
然後在系統變量中找到Path
雙擊Path後,點擊新建,將remoteAPI.dll文件的目錄粘貼就行
三、VS2017環境配置
新建一個工程,然後打開屬性頁,在VC++目錄的庫目錄中添加remoteApiSharedLib-64.lib文件所在的目錄
然後在C/C++ 常規 附加包含目錄中添加三個目錄
之後在預處理器的預處理器定義中添加以下內容
再將輸出文件的對象文件名改爲$(IntDir)%(RelativeDir)
之後在鏈接器裏的輸入 附加依賴項中添加remoteApiSharedLib-64.lib
完成以上操作後,VS2017的環境便配置好了
三、VS2017 C++控制 V-REP機械臂
C++代碼
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
extern "C" {
#include "extApi.h"
}
int main()
{
int Port = 3000;
int PositionControlHandle;
//simxChar* Adresse = "127.0.0.1";
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;
}
在V-rep的scene裏添加ABB的IRB140機械臂,然後雙擊它的腳本,打開後在第一行添加simExtRemoteApiStart(3000)
然後先運行V-rep仿真,再編譯VS2017,即可看到VREP裏的機械臂運動