Coppeliasim倒立摆demo

首先需要将使用Python远程控制的文件导入到文件夹,核心是深蓝色的三个文件。

image.png

本版本为4.70,其文件所在位置如下图所示,需要注意的是,目前不支持Ubuntu22的远程api:

image.png

image.png

双击Sphere这一行的灰色文件,可以看到远程 simRemoteApi 的串口号为19998,当在Coppeliasim运行后,后台会发布该串口,可以利用Python进行远程控制。

image.png

import time  
import numpy as np  
import sys  
sys.path.append('./VREP_RemoteAPIs/')  
import sim as vrep_sim  # 连接Coppeliasim  
vrep_sim.simxFinish(-1) # 关闭掉其他的连接  
while True:  
# simxStart()函数的第一个参数是连接的IP地址,第二个参数是端口号,第三个参数是是否等待连接,第四个参数是是否检查连接,第五个参数是连接超时时间,第六个参数是重连次数  
# 返回的clientID是建立连接的ID,可以理解为指向你的scene  
client_ID = vrep_sim.simxStart('127.0.0.1', 19998, True, False, 5000, 5)  
# 根据返回的值,来判断是否连接成功  
if client_ID > -1:  
print('Connect to remote API server.')  
break  
else:  
print('Failed connecting to remote API server! Try it again ...')  # 打开同步模式  
synchronous_enable = True  
# simxSynchronous()函数的第一个参数是连接的ID,第二个参数是是否开启同步模式  
vrep_sim.simxSynchronous(client_ID, synchronous_enable)  
vrep_sim.simxStartSimulation(client_ID, vrep_sim.simx_opmode_oneshot)  # ------------------------------- Initialization -------------------------------  
# vrep_sim.simx_opmode_blocking为阻塞模式。命令被发送,函数将等待实际的应答并返回它(如果函数没有超时)  
# vrep_sim.simxGetObjectHandle即获取在client_ID下的名字为'joint'的对象的句柄  
return_code, joint_handle = vrep_sim.simxGetObjectHandle(client_ID, 'joint', vrep_sim.simx_opmode_blocking)  
if (return_code == vrep_sim.simx_return_ok):  
print('get object joint ok.')  # 获取'joint'的位置  
_, q = vrep_sim.simxGetJointPosition(client_ID, joint_handle, vrep_sim.simx_opmode_streaming)  
vrep_sim.simxSetJointTargetPosition(client_ID, joint_handle, 0, vrep_sim.simx_opmode_streaming)  # ------------------------------- Simulation -------------------------------  
t = 0  
# 时步,多少秒更新一次  
delta_t = 0.005 # simulation time step  
for _ in range(5000):  
t = t + delta_t  
_, q = vrep_sim.simxGetJointPosition(client_ID, joint_handle, vrep_sim.simx_opmode_buffer)  
print('q=', q)  
q_new = np.sin(t)  
vrep_sim.simxSetJointTargetPosition(client_ID, joint_handle, q_new, vrep_sim.simx_opmode_streaming)  if synchronous_enable == True:  
vrep_sim.simxSynchronousTrigger(client_ID)  
# 检索将命令发送到服务器,执行和发回所需的时间。 那个时间取决于各种因素,如客户端设置,网络负载,仿真是否正在运行,仿真是否是实时,模拟时间步骤等。功能是阻塞。  
_, ping_time = vrep_sim.simxGetPingTime(client_ID)  
# 静止时步的时间  
time.sleep(delta_t)  
# 停止仿真  
vrep_sim.simxStopSimulation(client_ID, vrep_sim.simx_opmode_blocking)  
# 结束此场景  
vrep_sim.simxFinish(client_ID)  
print('Program terminated')

代码运行后,如图所示,可以驱动倒立摆末端转动。

image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/657895.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Docker】【深度学习算法】在Docker中使用gunicorn启动多个并行算法服务,优化算法服务:从单进程到并行化

文章目录 优化算法服务:从单进程到并行化单个服务架构多并行服务架构Docker化并指定并行服务数量 优化算法服务:从单进程到并行化 在实际应用中,单个算法服务的并发能力可能无法满足需求。为了提高性能和并发处理能力,我们可以使…

AI 神助攻,协同办公神器 ---- ONLYOFFICE

人工智能不会取代人,只会淘汰那些不会使用人工智能的人。 – 鲁迅 一、人工智能重新定义办公新模式 随着GPT的横空出世,AI的应用场景已经无处不在,从智能客服、智能语音助手、智能家居到自动驾驶汽车等,AI正在不断地拓展其应用领…

Orion-14B-Chat-Plugin [model server error]解决方案

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

【大数据安全】大数据安全的挑战与对策基础设施安全

目录 一、大数据安全的挑战与对策 (一)数据加密技术 (二)大数据安全与隐私 (三)大数据安全保障体系 (四)华为大数据安全解决方案 二、基础设施安全 (一&#xff0…

AI-数学-高中-12-对数定义和基本运算规则、对数换底公式

原作者视频:初等函数】4对数定义基本运算规则(基础)_哔哩哔哩_bilibili 初等函数】5对数换底公式练习(基础)_哔哩哔哩_bilibili 对数读法:以a为底,b的对数,a为底数,b为…

KEIL指定文件夹生成:程序名字+版本号+时间的脚本

为了免去每次更新版本还需要手动更改可执行程序的名字繁琐步骤。特此参考网上一个开源脚本编写了一个脚本文件。直接上图: 1.在指定的文件中填写:#define SOFTWARE_VERSION "1.0.2" 2.将脚本添加到如下图所示位置 3.点击编译,得到…

vxe-table3.0的表格树如何做深层查找,返回搜索关键字的树形结构

vxe-table2.0版本是提供深层查找功能的,因为他的数据源本身就是树形结构,所以深层查找查询出来也是树形结构。 但是vxe-table3.0版本为了做虚拟树功能,将整个数据源由树形垂直结构变成了扁平结构,便不提供深层查询功能&#xff0c…

【PWN · ret2syscall】[CISCN 2023 初赛]烧烤摊儿

好久未做ret2syscall 一、题目分析 漏洞点,栈溢出: 然而到该漏洞点,需要“花钱”买下店铺。个人所有的零钱不够。 利用整数溢出(emmmm这里应该不算溢出漏洞,而是代码逻辑不规范,商品个数不能为负数&#x…

华为数通方向HCIP-DataCom H12-831题库(简答题01-27)

第01题 第02题 第03题 第04题 第05题 IS-IS是链路状态路由协议,使用SPF算法进行路由计算。某园区同时部署了IPV4和IPv6并运行IS-IS实现网络的互联与通。如图所示,该网络IPV4和IPV6开销相同,R1和R4只支持IPV4缺省情况下,计算形成的IPV6最短路径树中,R2访问R6的下一跳设备是…

uniapp H5 实现上拉刷新 以及 下拉加载

uniapp H5 实现上拉刷新 以及 下拉加载 1. 先上图 下拉加载 2. 上代码 <script>import DragableList from "/components/dragable-list/dragable-list.vue";import {FridApi} from /api/warn.jsexport default {data() {return {tableList: [],loadingHi…

【JAVA】Semaphore 有什么作用

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;JAVA ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 1. 二进制信号量&#xff1a; 2. 计数信号量&#xff1a; 结语 我的其他博客 前言 Semaphore&#xff08;信号量&#xff09;作为…

uniapp微信小程序-分包

一、为什么要分包 微信小程序每个分包的大小是2M&#xff0c;总体积一共不能超过20M,当然你也可以提升启动速度&#xff0c;降低首次加载时间&#xff0c;模块化开发&#xff0c;按需加载&#xff0c;提高性能。 二、分包步骤 1.首先在 mainfest.json mp-weixin添加以下代码&a…

idea创建golang项目

目录 1、设置环境 2、创建项目 3、设置项目配置 4、初始化项目 5、安装本项目的外部依赖包 6、运行项目 7、访问页面查看结果 1、设置环境 1 启用 Go Modules 功能go env -w GO111MODULEon 2. 阿里云go env -w GOPROXYhttps://mirrors.aliyun.com/goproxy/,direct上述命…

字符串:getline、删除子串.erase()函数、插入子串.insert()函数

getline具体用法&#xff1a; 1、函数形式 getline ( cin,字符串类型&#xff1a;变量名);//默认以换行符结束 getline (cin, 字符串类型&#xff1a;变量名, ‘指定的结束符’); //指定换行结束符 2注意事项&#xff1a; 1&#xff09;如果在使用getline()之前有使用scanf(…

大数据分析案例-基于随机森林算法构建电影票房预测模型

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

机房建设的陷阱与规范

在数字化时代&#xff0c;数据中心的建设变得愈发重要&#xff0c;然而&#xff0c;许多集成商在机房建设中存在一些常见的误区。他们往往将机房建设仅仅定义为能源设备的安装和装修&#xff0c;而忽略了甲方的网络应用、服务器应用以及网络与服务器之间的连接应用。这导致了一…

前端-Vue項目初始化

大家好我是苏麟 , 今天聊聊前端依赖 Ant Design Vue 快速初始化项目 . Ant Design Vue官网 : 快速上手 - Ant Design Vue (antdv.com) 初始化项目 1.找到文档->快速上手 脚手架命令 : npm install -g vue/cli 2.找到一个文件夹(不要在中文路径) 下打开cmd窗口输入脚手架…

威联通docker安装青龙面板

威联通容器界面改版很多&#xff0c;没直接找到新版设置方法&#xff0c;自己摸索了一下做个记录。 一、配置docker镜像源 威联通默认的库地址国内无法直接方法&#xff0c;需要先配置国内镜像源。 在容器工作者中选择“存储库”&#xff0c;点击添加 第一个“提供商”里选…

【代码随想录-链表】两两交换链表中的节点

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 jav…

Leetcode—1828. 统计一个圆中点的数目【中等】

2024每日刷题&#xff08;一零五&#xff09; Leetcode—1828. 统计一个圆中点的数目 实现代码 class Solution { public:vector<int> countPoints(vector<vector<int>>& points, vector<vector<int>>& queries) {vector<int> a…