Webots常用的执行器(Python版)

文章目录

  • 1. RotationalMotor
  • 2. LinearMotor
  • 3. Brake
  • 4. Propeller
  • 5. Pen
  • 6. LED

1. RotationalMotor

# -*- coding: utf-8 -*-
"""motor_controller controller."""from controller import Robot# 实例化机器人
robot = Robot()# 获取基本仿真步长
timestep = int(robot.getBasicTimeStep())# 关联设备
motor = robot.getMotor('my_Rmotor')# 设置电机运行模式为速度模式
motor.setPosition(float('inf'))
motor.setVelocity(1)# Main loop:
while robot.step(timestep) != -1:pass

2. LinearMotor

# -*- coding: utf-8 -*-
"""linear motor controller."""from controller import Robot
import mathrobot = Robot()
timestep = int(robot.getBasicTimeStep())motor = robot.getMotor('my_lMotor')
#motor.setPosition(float('inf'))
#motor.setVelocity(0)# Main loop:
count = 0
while robot.step(timestep) != -1:#motor.setVelocity(1)motor.setPosition(math.sin(count)*0.5)count += 0.1

3. Brake

  • setDampingConstant(dampingConstant)函数设置关节的阻尼常数(单位Ns/m或者Nms),如果JointParameters设置了阻尼常数,那么所产生的的dampingConstant系数是JointParameters中的dampingConstant与使用该函数所设置的dampingConstant的和。即:
    实际作用的 d a m p i n g C o n s t a n t = J o i n t 中的 d a m p i n g C o n s t a n t + F u n c t i o n 设置的 d a m p i n g C o n s t a n t 实际作用的dampingConstant = Joint中的dampingConstant + Function设置的dampingConstant 实际作用的dampingConstant=Joint中的dampingConstant+Function设置的dampingConstant
# -*- coding: utf-8 -*-
"""brake controller."""from controller import Robot
from controller import Motor
from controller import Brakerobot = Robot()timestep = int(robot.getBasicTimeStep())motor = robot.getMotor('my_Rmotor')
#motor.enableTorqueFeedback(timestep)
brake = robot.getBrake('my_brake')motor.setTorque(0)# Main loop:
count = 0
while robot.step(timestep) != -1:count += 1print(count)#print("motor torque"+str(motor.getTorqueFeedback()))motor.setTorque(0.5)if count > 50:brake.setDampingConstant(1)if count >300:count = 0brake.setDampingConstant(0)

4. Propeller

在这里插入图片描述

  • 合成推力计算: T = t 1 ∗ ∣ o m e g a ∣ ∗ o m e g a − t 2 ∗ ∣ o m e g a ∣ ∗ V T = t1 * |omega| * omega - t2 * |omega| * V T=t1omegaomegat2omegaV
    其中thrustConstants中定义的两个常数为式中的t1和t2,omega为电机角速度,V是推力中心沿轴心线速度的分量。推力施加在centerOfThruse中指定的点上
  • 合成力矩计算: Q = q 1 ∗ ∣ o m e g a ∣ ∗ o m e g a − q 2 ∗ ∣ o m e g a ∣ ∗ V Q = q1 * |omega| * omega - q2 * |omega| * V Q=q1omegaomegaq2omegaV
    其中q1和q2为torqueConstants中定义的常数

以上公式计算来自:Thor I. Fossen的"Guidance and Control of Ocean Vehicles"和Raymond W. Prouty的"Helicopter Performance, Stability, and Control"

几个重要节点:

  • shaftAxis:定义沿其施加合力和扭矩的轴
  • centerOfThrust:定义推力的施加点
  • thrustConstants:定义推力计算公式中的两个常数,正旋与反旋只需将此字段中的数值设置为相反数。即正旋时,此字段数值为正,那么反旋则为此数值的负值即可
  • torqueConstants:定义转矩计算公式中的两个常数

thrustConstantstorqueConstants中的常数,在现实中,其数值由螺旋桨的倾角和方向决定

  • fastHelixThreshold:从slowHelix切换到fastHelix阀值,默认为24π rad/s
  • device:旋转电机放置的设备节点
  • fastHelixslowHelix:如果不为NULL,那么必须使用Solid节点设置这些属性;如果 ∣ o m e g a ∣ > f a s t H e l i x T h r e s h o l d |omega|>fastHelixThreshold omega>fastHelixThreshold,那么只有在fastHelix中定义的Solid是可见的,反之则只有在slowHelix中定义的Solid是可见的。

5. Pen

比较重要,通常用于显示机器人的移动轨迹,笔的绘制方向与节点-y向重合
几个重要节点:

  • inkColor:定义笔迹颜色,可通过函数定义/修改
  • inkDensity:定义颜色密度,在[0,1]之间
  • leadSize:定义笔迹宽度
  • maxDistance:定义笔与绘制表明之间最大距离,该值≤0表示绘制距离无限
  • write:使能笔的书写功能,可由函数控制
  • WorldInfo节点的inkEvaporation控制墨水消失的速度

遗憾的是,貌似只能在对象上绘制

6. LED

LED虽然在实际控制中没什么作用,但是通过LED的灯光显示我们可以传递一些信息,尤其是在实际机器人当中。

  • ① 颜色设置在LED节点下的color设置

  • LED.set(2)时,打开第二种颜色

    注意,设置的值不能超过color中设置的颜色种类

  • gradual节点定义LED节点的类型。若gradual=TRUEcolor列表为空,则为RGB LED,set()函数此时接收的值为十六进制RGB颜色值(即R8G8B8),例如红色为0xff0000gradual=FALSE,包含只有一种颜色,则为单色LED;包含多种颜色,则为多色LED;

"""LED_controller controller."""from controller import Robotrobot = Robot()
timestep = int(robot.getBasicTimeStep())LED = robot.getLED('my_led')# Main loop:
count = 0
while robot.step(timestep) != -1:count += 1print(count)print("LED状态:" + str(LED.get()))if count > 20:LED.set(1)# 打开LED,强度255if count > 40:LED.set(0)# 关闭LED,强度0count = 0
# Main loop:
count = 0
while robot.step(timestep) != -1:count += 1print(count)print("LED状态:" + str(LED.get()))if count > 20:LED.set(0xff0000)if count > 40:LED.set(0x00ff00)if count > 60:LED.set(0)count = 0

如果gradual=TRUE,而color值又非空,那么通过十六进制设置灯光颜色时,LED会发处一个光团,且颜色为color列表的第一种
在这里插入图片描述


参考文献:

  • https://cyberbotics.com/doc/reference/index

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

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

相关文章

分布式锁的原子性问题

4.6 分布式锁的原子性问题 更为极端的误删逻辑说明: 线程1现在持有锁之后,在执行业务逻辑过程中,他正准备删除锁,而且已经走到了条件判断的过程中,比如他已经拿到了当前这把锁确实是属于他自己的,正准备删…

Docker使用— Docker部署安装Nginx

Nginx简介 Nginx 是一款高性能的 web 服务器、反向代理服务器以及电子邮件(IMAP/POP3/SMTP)代理服务器,由俄罗斯开发者伊戈尔塞索耶夫(Igor Sysoev)编写,并在2004年10月4日发布了首个公开版本0.1.0。Nginx…

SSL数字证书

SSL数字证书产品提供商主要来自于国外,尤其是美国,原理和使用操作系统一样,区别在于SSL数字证书目前无法替代性,要想达到兼容性99%的机构目前全球才3-4家,目前国内的主流网站主要使用的是国际证书,除了考虑…

【群智能算法改进】一种改进的鹦鹉优化算法 鹦鹉优化器 IPO算法【Matlab代码#73】

文章目录 【获取资源请见文章第5节:资源获取】1. 原始鹦鹉优化算法PO2. 改进后的IPO算法2.1 自适应切换因子2.2 混合柯西和高斯变异 3. 部分代码展示4. 仿真结果展示5. 资源获取 【获取资源请见文章第5节:资源获取】 1. 原始鹦鹉优化算法PO 鹦鹉优化算法…

探索有效括号 力扣第20题:从栈到递归的多角度解法 【含图解 python】

题目描述 给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’ 和 ‘]’ 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 示例输入: s…

YOLOv8打印模型结构配置信息并查看网络模型详细参数:参数量、计算量(GFLOPS)

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…

代码混淆和加固,保障应用程序的安全性

摘要:本文将详细介绍iOS技术博主在保护应用程序代码安全方面的两种重要方式:代码混淆和代码加固。通过代码混淆和加固,博主可以有效防止他人对应用程序进行逆向工程和篡改,提高应用程序的安全性。 引言:作为iOS技术博主…

SpringCloud 微服务

什么是微服务: 微服务方案: 1. SpringCloud NetFlix 2. Dubbo 3. SpringCloud Alibaba 解决了什么问题: 1. 服务过多,客户端怎么访问 2. 服务过多,服务间怎么传值 3. 服务过多,如何治理 4. 服务过多…

WordPress网站备份和迁移教程

我们之前遇到购买了hostease的客户需要进行wordpress的网站备份的迁移操作。 以下是一份完整的指南,介绍了备份和迁移WordPress网站的步骤: 步骤一:备份WordPress网站 使用插件进行备份: 安装并激活备份插件,例如Up…

Redis数据库:高可用(主从复制、哨兵模式、cluster集群)

目录 前言 一、Redis数据库高可用 二、Redis 主从复制 1、Redis主从复制概述 1.1 Redis主从复制概念 1.2 Redis主从复制的作用 1.3 Redis主从复制的流程 2、搭建Redis主从复制 2.1 环境部署 2.2 主服务器修改配置文件 2.3 从服务器修改配置文件 2.4 测试主从复制效…

基于Java+SpringBoot+vue3+uniapp口红销售/商城管理系统设计与实现

博主介绍:✌全网粉丝5W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…

360加固脱壳实战

下载[]打开app使用frida -U -f com.xxx.xxx.xxx -l dupDex.js --no-pause<br> 命令 或者使用frida-hexdump -U -f com.inmo.inmolife命令在com.xxx.xxx.xxx 中寻找dex文件 或者在输出的日志中有输出路径使用dex2jar工具把dex文件转为jar文件 d2j-dex2jar.sh *.dex -d --…