zoukankan      html  css  js  c++  java
  • V-rep 使用RemoteApi交互C++程序

    V-rep是如何通过remoteAPI的交互,只需要一行代码simExtRemoteApiStart()。

    以ABB为例,在新场景中直接从现有模型中拖出abb的模型。

    1.1 ABB 机械臂

    在Scene窗口中Abb元素的右边有一个小本子的标志,双击打开编译脚本。

    1.2 程序界面

    里面的代码已经编译好啦,V-rep的代码示弱语言,内容主要分为几大块,以if(sim_call_type == xxxx)then  .... end 为分界。

     表示仿真开始,仿真中,仿真暂停,仿真结束等等不同的状态。在不同的状态里写入相应的指令就好啦。

    而初始化调用RemoteApi需要在初始化过程中,调用simExtRemoteApiStart(3000)。 其中3000表示端口号。端口号只要不与已有进程冲突就可以了,具体可以查询端口使用的列表。

     1.3 添加RemoteApi

    这里我们通过C++连接V-rep。首先我们先找到v-rep的根目录里的programming引入include和RemoteApi两个文件夹。想了解更多可以以bubbleRobClient中的例程为例。

    我们这里在VS中创建一个自己的C++控制台程序。

    这里要添加预处理:

    WIN32
    NDEBUG
    _CONSOLE
    NON_MATLAB_PARSING
    MAX_EXT_API_CONNECTIONS=255zasda

     

     

    注意添加附加包含目录,要包括inclue和remoteapi两个文件夹,添加头文件

    #include <stdio.h>
    #include <stdlib.h>

    extern "C" {
    #include "extApi.h"

    }

    其中Port是之前定下的端口号:3000。

    使用simxStart函数开启RemoteApi的通信。返回值int,判断是否能够连接。

    使用simxGetObjectHandle函数添加需要读取的ObjectHandle。

    使用simxGetObjectPosition函数获得handle的位置信息。

    例程如下:

    #include "stdafx.h"
    #include <stdio.h>
    #include <stdlib.h>
    
    extern "C" {
    #include "extApi.h"
    }
    
    
    int main()
    {
    	int Port = 3000;
    	int PositionControlHandle;
    	simxChar* Adresse = "127.0.0.1";
    	float position[3];
    
    
    	int clientID = simxStart(Adresse, Port, true,true,2000,5);
    
    	if (clientID != -1) 
    	{
    		printf("V-rep connected.");
    		extApi_sleepMs(300);
    		while (simxGetConnectionId(clientID) != -1)
    		{
    			simxGetObjectHandle(clientID,"IRB140_manipulationSphere", &PositionControlHandle, simx_opmode_oneshot);
    			simxGetObjectPosition(clientID,PositionControlHandle,-1,position, simx_opmode_oneshot);
    			printf("(%f,%f,%f)
    ",position[0],position[1],position[2]);
    		}
    
    		simxFinish(clientID);
    	}
    	else {
    		printf("V-rep can't be connected.");
    		extApi_sleepMs(300);
    	}
    
        return 0;
    }
    

      

    更多函数用法及参数见v-rep使用手册,RemoteApi中C++部分及Server部分介绍。

  • 相关阅读:
    和至少为 K 的最短子数组
    使用VS code编写C++无法实时检测代码的解决办法
    anaconda安装VSCODE后,python报错
    神经网络中sigmod函数和tanh函数的区别
    获取本机IP
    windows C++捕获CMD命令输出
    windows下面生成 dump
    windows 控制台命令输出 捕获
    不使用PEM 文件建立SSL通道
    OpenSSL socket 服务端
  • 原文地址:https://www.cnblogs.com/TIANHUAHUA/p/7843755.html
Copyright © 2011-2022 走看看