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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

UE5/UE4中3D汉字字体文字的创建与实现

本案例工程下载位置:https://mbd.pub/o/bread/ZZqVmJ9v 在虚幻引擎5(UE5)和虚幻引擎4(UE4)中,实现3D汉字字体的创建是一项常见的需求。 本文将详细介绍两种有效的方法: 1.通过TextRender配合Of…

Ubuntu系统安装 Redis

环境准备 Ubuntu 系统版本:22.04.3Redis 版本:6.2.12 检查本地 make 环境 make -version若没有安装,则需要安装 sudo apt install make检查本地 gcc 环境 gcc -version若没有安装,则需要安装 sudo apt install gcc。 sudo a…

第32关 k8s集群管理开源神器 - k9s

------> 课程视频同步分享在今日头条和B站 大家好,我是博哥爱运维。 随着我们管理维护的K8S集群上线,怎么管理好集群上面成百上千的服务pod,就是我们该操心的事情了。这里博哥把在生产中一直在用的一个开源管理工具k8s,github…

C++数据结构与算法——数组

C第二阶段——数据结构和算法,之前学过一点点数据结构,当时是基于Python来学习的,现在基于C查漏补缺,尤其是树的部分。这一部分计划一个月,主要利用代码随想录来学习,刷题使用力扣网站,不定时更…

Facebook的创新征程:社交媒体的演进之路

在当今数字化时代,社交媒体已经成为人们生活中不可或缺的一部分,而Facebook作为社交媒体领域的巨头,一直在不断创新和演进。本文将深入探讨Facebook的创新征程,追溯其社交媒体的发展历程,探讨其对用户、社会和数字时代…

hcip---ospf综合实验

一:实验要求 1、R4为ISP,其上只能配置IP地址,R4与其所有直连设备间均使用公有IP 2、R3-R5/6/7为MGRE环境,R3为中心站点 3、整个OSPF环境IP基于R4的环回 4、所有设备均可访问R4的环回 5、减少LSA的更新量,加快收敛…

基础算法(二)

一 高精度计算 int能表示范围为2^32,这看起来很大,但在大数据时代的如今,不说是int 哪怕是long long也是不够的,那么为了使用或计算这些超出或远超整形大小的数,我们这些数的计算方法称为高精度计算。 (1)…

视频转GIF软件,轻松制作GIF动图

我们每天都会接触到大量的视频内容,从社交媒体到新闻网站,从电影到短视频。但你是否想过,如何将那些或是令人捧腹大笑或是让人感动至深的瞬间,轻松的保存下来随时回味?答案就是——将视频转为GIF动图。相较于传统的视频…

共享的IP隔一段时间就变?用这种方法可以不需要知道电脑IP

前言 一般来说,电脑接入路由器之后,IP是由路由器自动分配的(DHCP),但如果隔一段时间不开机连接路由器,或者更换了别的网卡进行连接,自动分配的IP就会更改。 比如你手机连接着电脑的共享IP:192.168.1.10,但过段时间之后,电脑的IP突然变成了192.168.1.11,那么你的所有…

假期刷题打卡--Day18

1、MT1168阶乘数 输入正整数N,找出它是否是一个等于其他数的阶乘值的数,输出YES或者NO。 格式 输入格式: 输入正整数N 输出格式: 输出YES或者NO 样例 1 输入: 5输出: NO 相关知识点 阶乘 可以理…

[Tcpdump] 网络抓包工具使用教程

往期回顾 海思 tcpdump 移植开发详解海思 tcpdump 移植开发详解 前言 上一节,我们已经讲解了在海思平台如何基于静态库生成 tcpdump 工具,本节将作为上一节的拓展内容。 一、tcpdump 简介 「 tcpdump 」是一款强大的网络抓包工具,它基于…

petalinux2022.2启动文件编译配置

安装必要运行库: sudo apt-get install iproute2 gawk python3 python sudo apt-get install build-essential gcc git make net-tools libncurses5-dev tftpd sudo apt-get install zlib1g-dev libssl-dev flex bison libselinux1 gnupg wget git-core diffstat sudo apt-ge…

Lucene 查询原理

Lucene 查询原理 - 知乎 前言 Lucene 是一个基于 Java 的全文信息检索工具包,目前主流的搜索系统Elasticsearch和solr都是基于lucene的索引和搜索能力进行。想要理解搜索系统的实现原理,就需要深入lucene这一层,看看lucene是如何存储需要检…

kafka集群搭建需要做的事情

首先,虚拟机克隆好之后的步骤如下: 1. 修改IP、主机名,关闭防火墙;(reboot重启) 2. 在/etc/hosts文件中进行IP与主机名的映射配置,集群中每天都记得配置; 3. 安装JDK并进行分发&a…

基于Matlab无刷直流电机系统仿真建模的新方法

摘 要:在分析无刷直流电机(BLDC)数学模型的基础上,提出了无刷直流电机系统仿真建模的 新方法。在Matlab/Simulink 中,建立独立的功能模块,如BLDC 本体模块、电流滞环控制模块、 速度控制模块等,…

漏洞原理文件上传漏洞

一 文件上传漏洞介绍(理论) 文件上传漏洞是一种常见的web应用程序漏洞,允许攻击者向服务器上传恶意文件。这种漏洞可在没有恰当的安全措施的情况下,将任意类型的文件上传到服务器上,从而可能导致以下安全问题&#xff…

centos7安装mysql5.7 或者mysql8

1、centos7安装mysql8 mysql官网 https://dev.mysql.com/downloads/mysql/ 示例2个版本的下载地址 #5.7.30下载地址 wget https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.30-1.el7.x86_64.rpm-bundle.tar #8.0.22下载地址 wget https://cdn.mysql.com/archives/mysql-8…

响应式Web开发项目教程(HTML5+CSS3+Bootstrap)第2版 例5-5 Canvas 绘制三角形

代码 <!doctype html> <html> <head> <meta charset"utf-8"> <title>Canvas 绘制三角形</title> </head><body><canvas id"cavsElem">您的浏览器不支持Canvas&#xff0c;请升级浏览器</canvas…

03:华为云管理|云主机管理|云项目实战

华为云管理&#xff5c;云主机管理&#xff5c;云项目实战 安全组配置部署跳板机配置yum源&#xff0c;安装软件包优化系统服务安装配置ansible管理主机 模版镜像配置配置yum源&#xff0c;安装软件包优化系统 网站云平台部署实战华为云的负载均衡 安全组配置 设置安全组 云…

2分钟快速了解!全网最详细的性能测试教程之【Redis 简介和安装】

本篇文章主要介绍基于Redis的的简介和安装&#xff0c;其中参考了许多大佬写的文章&#xff0c;算是做一个Redis的基础教程吧。 Redis 简介 Redis 是完全开源的&#xff0c;遵守 BSD 协议&#xff0c;是一个高性能的 key-value 数据库。 Redis 与其他 key - value 缓存产品有…