R2020a webots仿真笔记——Propeller螺旋桨节点

本文详细阐述了Webots中Propeller节点的使用,涉及力学分析、配置参数以及如何通过C语言编写控制器实现双旋翼模型的垂直起飞。重点介绍了thrustConstants和torqueConstants的作用以及解决模型定位问题的技巧。
摘要由CSDN通过智能技术生成


前言

螺旋桨(Propeller)节点可用于对船舶或飞机螺旋桨进行建模。当其device设置为RotationalMotor时,螺旋桨将会把电机角速度转换为推力/阻力扭矩

一、Propeller力学分析

在这里插入图片描述

合成推力是实数T与shaftAxis中定义的单位长度轴线矢量的乘积,T由公式给出:

T = t1 * |ω| * ω- t2 * |ω| * ν

其中t1和t2是thrustConstants中指定的常数(webots中为x和y),ω是电机角速度,ν是推力中心沿轴线的线速度分量。
合成扭矩是实数Q与单位长度轴线矢量的乘积,Q由公式给出:

Q = q1 * |ω| * ω- q2 * |ω| * ν

其中q1和q2是在torqueConstants字段中指定的常数。(同上)

二、配置字段

在这里插入图片描述
shaftAxis:推力和转矩轴线
centerOfThrust:推力作用点
thrustConstants和torqueConstants:推力常数和转矩常数,根据上文公式可以改变作用方向和大小。如设置torqueConstants的x=-1,y=0可单使转矩反向。
fastHelixThreshold:改变模型的阈值,当超过这个阈值的时候,螺旋桨的建模模型会从slowHelix变成fastHelix。
fastHelix和slowHelix:仅可设置位NULL和Solid两个节点类型,设置为Solid时展示螺旋桨模型。

三、简单的双旋翼模型

建立一个robot节点,并在子节点中设置propeller节点,在device中添加RotationMotor。作为机体的Solid节点不再赘述,可参阅官方教程及博客自行添加。
请添加图片描述
按自己的模型改变推力轴线和作用点位置(shaftAxis和centerOfThrust)
在这里插入图片描述
效果如图(黑线为推力轴线,也是电机转动轴线)
在这里插入图片描述
slowHelix和fastHelix可以选择不设置,设置模型的话方便观察,方法同设置Solid节点的方法。
复制一份Propeller节点,按自己的模型改变其中的推力轴线和推力中心。并把torqueConstants设置为-1,0。
在这里插入图片描述
最后把两个propeller的电机name字段分别命名为motor1和motor2。新建控制器,添加如下代码:

#include <webots/robot.h>
#include <webots/motor.h>

#define TIME_STEP 64

int main(int argc, char **argv) {
  /* necessary to initialize webots stuff */
  wb_robot_init();
  WbDeviceTag motor1=wb_robot_get_device("motor1");
  WbDeviceTag motor2=wb_robot_get_device("motor2");
    
  wb_motor_set_position(motor1, INFINITY);
  wb_motor_set_position(motor2, INFINITY);
  //设置电机运行位置为无限远
  
  wb_motor_set_velocity(motor1, 10);  
  wb_motor_set_velocity(motor2, 10);
  //设置电机运行速度
  
  while (wb_robot_step(TIME_STEP) != -1) {

  };

  wb_robot_cleanup();

  return 0;
}

编译运行,双旋翼无人机垂直起飞。
在这里插入图片描述
注:如果在添加slowAxis和fastAxis字段的螺旋桨模型时发现无法改变螺旋桨的位置,请注意保存世界。若保存世界后依然无法改变,关闭webots重启可解决问题。这可能是某种webots的仿真bug。

总结

本文介绍了webots中Propeller节点的力学模拟模型和配置方法。并结合代码展示如何使用c语言编写控制器制作一个简单的双旋翼模型。
webots官方参考手册github版:https://github.com/Beta-y/webots_references
官方参考手册github版原文链接:Webots2020a官方参考手册(双语食用)

  • 24
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值