V-REP Remote API(C++)实现简单的关节转动
基础内容参考:https://www.cnblogs.com/eternalmoonbeam/p/10753149.html
V-REP客户端设置:
在V-REP场景文件中需要添加三个实体,包括两个形状和一个关节。
关于实体的知识在User Manual - Entities - Scenes objects。
关节用的是旋转型Revolute_joint,注意三个实体间的继承关系,直接用鼠标在左侧实体列表拖动就可以添加为子对象了。
在添加之后要设置一下旋转关节的一些属性,双击它的图标:
点击下方的“Show dynamic properties dialog”:
这里重点是设置“Maximum torque”,这个属性决定了旋转加速度;
最后不要忘记添加脚本并设置端口号。
C++代码:
#include<iostream>
#include"extApi.h" void main()
{ using namespace std; int Port = 20172;
int clientID = simxStart("127.0.0.1", Port, 1, 1, 1000, 5);
cout << "client ID: " << clientID << endl; if (clientID != -1)
{
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 = 0.5;//设置一个变量存储关节目标转速
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
{
cout << "V-rep can't be connected." << endl;
} simxFinish(clientID);
cin.get();
return;
}
代码说明:
这种判断语句的风格来自手册中的Writing code in and around V-REP - V-REP API framework - Remote API - Remote API modus operandi。
首先需要获得关节的句柄,然后是设定关节转速,注意默认是弧度制。
在Remote API function list (by category)中可以查找各种功能函数,找到Joint object functionality:
所有关节控制的功能函数都在这里。这次只是实现了简单的加速转动,操作方法仍然是,先运行场景仿真然后启动C++控制台程序。
效果:
长方体开始匀加速转动,一段时间后匀速转动。即使退出C++程序,其也将继续转动。事实上,C++程序所起到的作用就是修改了实体参数。
V-REP Remote API(C++)实现简单的关节转动的更多相关文章
- Docker remote API简单配置使用
1.启动docker remote API的方式如下: docker -d -H uninx:///var/run/docker.sock -H tcp://0.0.0.0:5678 2.但是为了伴随 ...
- 【转+自己研究】新姿势之Docker Remote API未授权访问漏洞分析和利用
0x00 概述 最近提交了一些关于 docker remote api 未授权访问导致代码泄露.获取服务器root权限的漏洞,造成的影响都比较严重,比如 新姿势之获取果壳全站代码和多台机器root权限 ...
- Docker Remote API v1.24
1. Brief introduction The Remote API has replaced rcli. The daemon listens on unix:///var/run/docker ...
- Docker开启Remote API 访问 2375端口
Docker常见端口 我看到的常见docker端口包括: 2375:未加密的docker socket,远程root无密码访问主机2376:tls加密套接字,很可能这是您的CI服务器4243端口作为h ...
- Docker入门教程(八)Docker Remote API
Docker入门教程(八)Docker Remote API [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第八篇,重点介绍了Docker Remote ...
- [angularjs] MVC + Web API + AngularJs 搭建简单的 CURD 框架
MVC + Web API + AngularJs 搭建简单的 CURD 框架 GitHub 地址:https://github.com/liqingwen2015/Wen.MvcSinglePage ...
- python操作三大主流数据库(12)python操作redis的api框架redis-py简单使用
python操作三大主流数据库(12)python操作redis的api框架redis-py简单使用 redispy安装安装及简单使用:https://github.com/andymccurdy/r ...
- 阿里云api调用做简单的cmdb
阿里云api调用做简单的cmdb 1 步骤 事实上就是调用阿里api.获取可用区,比方cn-hangzhou啊等等.然后在每一个区调用api 取ecs的状态信息,最好写到一个excel里面去.方便排序 ...
- C#中缓存的使用 ajax请求基于restFul的WebApi(post、get、delete、put) 让 .NET 更方便的导入导出 Excel .net core api +swagger(一个简单的入门demo 使用codefirst+mysql) C# 位运算详解 c# 交错数组 c# 数组协变 C# 添加Excel表单控件(Form Controls) C#串口通信程序
C#中缓存的使用 缓存的概念及优缺点在这里就不多做介绍,主要介绍一下使用的方法. 1.在ASP.NET中页面缓存的使用方法简单,只需要在aspx页的顶部加上一句声明即可: <%@ Outp ...
随机推荐
- JavaScript DOM&BOM
1.DOM含义 D: Document 文档 一份文档就是一棵节点树,每个节点都是一个对象O:Object 对象 JavaScript语言里对象可以分为三种类型: (1)用户定义的对象(user-de ...
- cpu工作原理
- 微软AD相关操作的免费工具
https://www.ittsystems.com/best-free-active-directory-tools/
- 菲律宾Globe/TM卡最省钱的上网方案
基本技能点 1:发送SURFALERT ON到8080,这样就关掉了余额扣费的上网方式,防止因为套餐耗尽后疯狂扣话费. 2:用Coins.ph充个15Pisos(也就2元人民币),或则充多点钱都可以. ...
- 表单数据转javabean对象
- glide 长方形图片显示圆角问题
目前业务是RecyclerView嵌套RecyclerView,子RecyclerView里面显示图片,图片显示方式又分为 多图和单图显示方式(这个是已经调试好的效果) 测试显示结果只有单张图片不显示 ...
- laravel Faker-1.faker假数据
1. 安装 composer require fzaninotto/faker --dev 2. 创建 migrations 参考:laravel文档 3. 定义ModelFactory 说明: 默认 ...
- 2018-2019-2 20165312《网络攻防技术》Exp1 PC平台逆向破解
2018-2019-2 20165312<网络攻防技术>Exp1 PC平台逆向破解 一.Exp1.1 直接修改程序机器指令,改变程序执行流程 知识要求:Call指令,EIP寄存器,指令跳转 ...
- 给Linux系统新增加一块硬盘
今天公司测试Linux服务器硬盘不够用了,主要是mysql数据文件太大了,买了个500G的硬盘回来,这里记录下新加硬盘的方法PS 测试服务器的主板太差劲了,没有多余的电源接口,只能把光驱的电源拿出来, ...
- Python基础之条件语句和循环
条件语句 Python中的条件语句分为 if ...else . if ...elif...else 以及if ...else 的嵌套使用: username = input('请输入您的用户名:' ...