提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
一、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:画出运动轨迹
注意,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!
解决办法:
- 以管理员身份运行命令符窗口。
- 输入netsh winsock reset,然后按下回车键。
- 出现提示,重启电脑即可。
小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通信环境配置,远程操控机械臂