CoppeiaSim(VREP)入门

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


一、VREP基础教程

Vrep/CoppeliaSim:基础操作(1):http://t.csdn.cn/jhZgI
教程专栏:https://blog.csdn.net/sinat_39153249/category_9973383.html

二、CoppeliaSim 4.2 (V-REP) 添加3D轨迹

参考链接:http://t.csdn.cn/QvNmL
修改配置文件
找到CoppeliaSim的安装目录C:\Program Files\CoppeliaRobotics\CoppeliaSimEdu\system(根据具体的安装路径,我这里装在了C盘), 打开该文件夹下的usrset.txt文件 Ctrl +F搜索 showOldDlgs 将这一项改为true 保存重启软件。

修改前
在这里插入图片描述
修改后
在这里插入图片描述

在这里插入图片描述

二、Vrep/CoppeliaSim:画出运动轨迹

参考链接:http://t.csdn.cn/i6UBO

注意,grap坐标要和末端重合
在这里插入图片描述

三、vrep/CoppeliaSim关节抖动问题原因总结

参考链接:vrep/CoppeliaSim关节抖动问题原因总结

【Coppeliasim|轨迹规划(一)】设置机械臂的关节角时保证机械臂不散架
参考链接:设置机械臂的关节角时保证机械臂不散架

四、V-REP机器人仿真软件单词翻译以及常用脚本函数解释

参考链接:V-REP机器人仿真软件单词翻译以及常用脚本函数解释

V-rep是一款机器人仿真软件,可以验证机器人正逆运动学,动力学,轨迹规划,路径规划等。但是其界面是英文版本的,编程语言是Lua语言,对于一些刚结束机器人学的新人而言十分不友好。本篇博客主要对其界面的英文和一些脚本解释。
软件界面的英文翻译

motor properties                        电机特性
Target velocity                         目标速度
Maximum torque                          最大扭矩
control loop enabled                    控制回路已启动
proportional parameter                  比例参数
show dynamic properties dialog          显示动态属性对话框
torque/force mode                       扭矩/力模式
Non-thread child script                 非线程子脚本
primitive shape                         原始形状
Expand all                              展开所有
Collapse all                            收缩所有
Expand selected trees                   展开所选树
Hierarchy coloring                      层次颜色
Paste buffer                            粘贴物体

一些脚本函数的解释

Lua语言中带local声明的是局部变量
simGetObjectPosition        检索对象的位置
simGetObjects               获得同类型所有对象的句柄
比如:控制4个电机   Motor=simGetObjects(4,sim_object_joint_type)
simlsHandleValid            判断句柄是否有效
simGetlkGroupHandle         获得逆解组的句柄
simGetlkGruopMatrix         得到逆运动学矩阵
simGeneratelkPath           生成一条路径,将机器人从当前位置驱动到目标dummy的直线上
simGetJointPosition         设置和读取位置
simGetsimulationTimeSet     获取运动仿真时间间距
simRemoteApi.start          在指定端口上启动临时远程API服务
simRemoteApi.stop           
simRemoteApi.status         获取有关服务器的信息
simRemoteApi.reset          指定端口上重置远程API
simGetObjectQuaternion      检测对象的四元数
sim.rmlMoveToPosition       使用reflex运动库将对象移动到给定的位置或方向
sim.wait(0.5)               等待一段时间
sim.setobjectmatrix         设置对象的变换矩阵
sim.setJointMode            设置关节模式
sim.packFloatTable          将浮点数打包成字符串
simsetstringsignal          设置字符串信号的值

五、Qt与CoppeiaSim(VREP)交互

参考链接:CoppeliaSim Remote API 实操

QT5 端
1)lib文件
打开路径 C:\Program Files\CoppeliaRobotics\CoppeliaSimEdu\programming\remoteApiBindings\lib
打开QT工程文件 remoteApiSharedLib.pro,用release 编译后,生成一个build文件夹
在这里插入图片描述
放在remoteAPI文件夹中(也可以是其它文件夹),或者不改文件夹
2)QT5 新建工程, 在pro文件中添加:

win32: LIBS += -L'C:/Program Files/CoppeliaRobotics/CoppeliaSimEdu/programming/remoteApiBindings/build-remoteApiSharedLib-Desktop_Qt_5_14_2_MSVC2017_64bit-Release/release/' -lremoteApi

INCLUDEPATH += 'C:/Program Files/CoppeliaRobotics/CoppeliaSimEdu/programming/common'
DEPENDPATH += 'C:/Program Files/CoppeliaRobotics/CoppeliaSimEdu/programming/common'

INCLUDEPATH += 'C:/Program Files/CoppeliaRobotics/CoppeliaSimEdu/programming/include'
DEPENDPATH += 'C:/Program Files/CoppeliaRobotics/CoppeliaSimEdu/programming/include'

INCLUDEPATH += 'C:/Program Files/CoppeliaRobotics/CoppeliaSimEdu/programming/remoteApi'
DEPENDPATH += 'C:/Program Files/CoppeliaRobotics/CoppeliaSimEdu/programming/remoteApi'

DEFINES += NON_MATLAB_PARSING
DEFINES += MAX_EXT_API_CONNECTIONS=255

然后在main文件里添加如下:

3)测试通信
参考链接:CoppeliaSim Remote API 实操
QT main 函数中添加

#include "mainwindow.h"
#include <QApplication>

#include <QtDebug>

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

int main(int argc, char *argv[])
{
  QApplication a(argc, argv);
  MainWindow w;
  w.show();

  int clientID = simxStart("127.0.0.1", 19999, true, true, 5000, 5);
  if (clientID != -1)
  {
     qDebug() << "success";
  }
  else
  {
      qDebug() << "error";
  }
  simxStartSimulation(clientID, simx_opmode_oneshot);
  simxFinish(clientID);

  return a.exec();
}


运行CoppeliaSim仿真,运行QT,若连接成功,则打印success。

QT端运行可能出现

[LspTrace]ReadAccConfig returns false!

解决办法:

  1. 以管理员身份运行命令符窗口。
  2. 输入netsh winsock reset,然后按下回车键。
  3. 出现提示,重启电脑即可。

小demo

4)简单旋转控制,在文件里添加一个长方体,add>>primitive shape>>cuboid,在对话框中修改尺寸如下:
在这里插入图片描述
生成一个长方体后,在add>>joint>>revolute,然后把Revolute_joint移动到长方体一处;再添加一个平面:add>>primitive shape>>plane,直接在树状图里拖动对象,形成如下结构:

在这里插入图片描述
5)修改Revolute_joint动力学参数,双击Revolute_joint,弹出对话框,如下操作:

在这里插入图片描述
6)然后在qt的main文件里添加如下:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <QApplication>
#include <time.h>
#include<iostream>
extern "C" {
#include "extApi.h"
#include "extApiPlatform.h"
//#include "v_repConst.h"
//#include "v_repLib.h"
}
using namespace std;

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    int clientID = simxStart("127.0.0.1", 19997, true, true, 5000, 5);
    if (clientID != -1)
    {
        printf("success");

        cout << "V-rep connected." << endl;
        simxInt Revolute_joint;//设置一个变量存储关节句柄
        if (simxGetObjectHandle(clientID, "Revolute_joint", &Revolute_joint, simx_opmode_blocking) == simx_return_ok)//获得关节句柄,若成功
        {
            // here we have the joint handle in variable jointHandle!
            cout << "Successfully got joint handle." << endl;

            simxFloat tar_velo = 50;//设置一个变量存储关节目标转速
           if (simxSetJointTargetVelocity(clientID, Revolute_joint, tar_velo, simx_opmode_blocking) == simx_return_ok)//设置关节目标转速
                cout << "target velocity: " << tar_velo << endl;
            else
                cout << "angle set failed." << endl;
        }
        else
            cout << "Geting object handle failed." << endl;
    }
    else
    {
        printf("error");
    }
   simxStartSimulation(clientID, simx_opmode_oneshot);
    simxFinish(clientID);

    return a.exec();
}

7)打开CoppeliaSim,在main script的sysCall_init() 中添加如下代码

simRemoteApi.start(3000, 1300, false, false)

在这里插入图片描述

让v-rep在仿真状态,然后qt编译后运行即可看到如下:

在这里插入图片描述
长方体在按照设定速度旋转;

六、coppeliaSim (vrep)与C++

参考链接:CoppeliaSim(V-Rep)4.2.0与VS2017 C++调用RemoteApi通信环境配置,远程操控机械臂

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值