Webots中创建舵轮模型


前言

目前AGV小车主要是使用舵轮来进行行走,灵活性高,驱动轮能量利用率高。我们在webots中简单模拟一下舵轮,并用纯追踪算法对其路径点进行追踪。

舵轮


舵轮创建流程

首先需要在webots中创建一个地板,点击Add New按钮或者ctrl+shift+A,PROTO nodes(Webots Projects) -> objects -> floors -> UnevenTerrain(Solid)创建一个地板,然后将size修改为 50 0 50。 创建机器人主体,点击Add New按钮,Base nodes -> Robot。在Robot的children下面新加一个Shape节点。

在这里插入图片描述

在这里插入图片描述
将Shape节点进行命名Body,以便后续设置boundingObject。将translation设置为0 0.2 0,将坐标系在y方向提升0.2m。然后设置physics跟boundingObject。设置boundingObject时双击然后点击Use -> Body(Shape)。
在这里插入图片描述
在这里插入图片描述
有appearance NULL和geometry NULL两个选项,双击appearance NULL选择Base nodes -> PBRAppearance,小车的底盘是一个长方体,因此geometry NULL我们选择Base nodes -> Box,并将size修改为0.6 0.1 0.6。添加完boundingObject之后,点击小车底盘,出现白色线条表示碰撞边界已经添加成功。

在这里插入图片描述
接下来添加舵轮的旋转电机和驱动电机。我们需要添加HingeJoint节点,HingeJoint节点可以用来模拟旋转运动。我们需要在children下边新加HingeJoint节点,使HingeJoint与Body节点保持在同一节点下。将HingeJoint节点命名为left_dir_wheel。HingeJoint节点下有JointParameters NULL、device、endPoint NULL三个节点。
在这里插入图片描述
双击JointParameters NULL节点,选择Base nodes -> HingeJointParameters;双击device节点,选择Base nodes -> RotationalMotor,机器人控制器程序可以使用RotationalMotor节点生成围绕其铰链轴的旋转运动;双击endPoint NULL节点,选择Base nodes -> Solid。
以上三个节点的参数设置如下所示。
jointParameters:旋转电机是绕y轴旋转,因此需要将axis修改为0 1 0;锚点为矩形体的左前方,因此需要将anchor修改为0. 3 0 0.3。
RotatioalMotor:电机名称改为lf_dir_motor,以便后续控制模块调用。
endPoint Solid:旋转结构的中心位于矩形体的左前方,因此translation修改为0.3 0 0.3;children下设置一个Shape,命名为lf_dir_wheel;然后设置physics和boundingObject,boundingObject选择Use -> lf_dir_wheel(Shape)。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
DEF lf_dir_wheel Shape下边有appearance NULL和geometry NULL两个选项,双击appearance NULL选择Base nodes -> PBRAppearance,旋转部分设置为一个圆柱体,因此geometry NULL我们选择Base nodes -> Cylinder,并将radius设置为0.06,height设置为0.1。
然后在该级节点下创建HingeJoint节点,与DEF lf_dir_wheel Shape节点同级,命名为lf_run_wheel。该HingeJoint节点下同样有JointParameters NULL、device、endPoint NULL三个节点。
双击JointParameters NULL节点,选择Base nodes -> HingeJointParameters;双击device节点,选择Base nodes -> RotationalMotor,机器人控制器程序可以使用RotationalMotor节点生成围绕其铰链轴的旋转运动;双击endPoint NULL节点,选择Base nodes -> Solid。
以上三个节点的参数设置如下所示。
jointParameters:旋转电机是绕x轴旋转,axis默认为1 0 0,不需要修改;锚点在当前坐标系的下方轮中心位置,因此将anchor修改为0 -0.1 0。
RotatioalMotor:电机名称改为lf_run_motor,以便后续控制模块调用。
endPoint Solid:旋转结构的中心位于当前坐标系下方轮中心位置,因此translation修改为0 -0.1 0;驱动轮需要绕z轴旋转90°,因此rotation修改为00 0 1 1.5708;children下设置一个Shape,命名为lf_run_wheel;然后设置physics和boundingObject,boundingObject选择Use -> lf_run_wheel(Shape)。
DEF lf_run_wheel Shape下边有appearance NULL和geometry NULL两个选项,双击appearance NULL选择Base nodes -> PBRAppearance,旋转部分设置为一个圆柱体,因此geometry NULL我们选择Base nodes -> Cylinder,并将radius设置为0.05,height设置为0.03。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
至此,一个舵轮已经完成,复制其余三个修改translation、anchor以及电机的名称即可。可以通过修改电机的PID参数、速度、加速度等参数使小车的运动更符合实际。

更多内容关注微信公众号:深度学习与路径规划
在这里插入图片描述

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
长方形四舵轮运动模型是一种机器人运动模型,它使用四个轮子来控制机器人的运动。该模型的特点是机器人可以同时进行平移和旋转运动,因此非常适合用于机器人的导航和路径规划。 下面是长方形四舵轮运动模型的具体实现方法: 1.建立坐标系 首先,我们需要建立一个坐标系来描述机器人的运动。假设机器人的初始位置为$(x_0,y_0,\theta_0)$,其$(x_0,y_0)$表示机器人的初始坐标,$\theta_0$表示机器人的初始朝向角度。 2.计算轮速 接下来,我们需要计算机器人每个轮子的速度。假设机器人的线速度为$v$,角速度为$\omega$,轮子半径为$r$,轮子间距为$L$,则机器人每个轮子的速度可以通过以下公式计算: 左前轮:$v_l = v\cos(\theta+\frac{\pi}{4}) - \omega L\cos(\theta+\frac{\pi}{4}) - \omega r$ 右前轮:$v_r = v\sin(\theta+\frac{\pi}{4}) + \omega L\sin(\theta+\frac{\pi}{4}) + \omega r$ 左后轮:$v_l = v\sin(\theta+\frac{\pi}{4}) - \omega L\sin(\theta+\frac{\pi}{4}) + \omega r$ 右后轮:$v_r = v\cos(\theta+\frac{\pi}{4}) + \omega L\cos(\theta+\frac{\pi}{4}) - \omega r$ 3.计算机器人的位姿 根据机器人每个轮子的速度,我们可以计算机器人的位姿。假设机器人的时间间隔为$\Delta t$,则机器人的位姿可以通过以下公式计算: $x = x_0 + \frac{r}{4}(\Delta t)(v_l\cos\theta_0 + v_r\sin\theta_0)$ $y = y_0 + \frac{r}{4}(\Delta t)(v_l\sin\theta_0 + v_r\cos\theta_0)$ $\theta = \theta_0 + \frac{r}{4L}(\Delta t)(v_r - v_l)$ 其,$x$和$y$表示机器人的坐标,$\theta$表示机器人的朝向角度。 4.控制机器人运动 最后,我们可以通过控制机器人的线速度$v$和角速度$\omega$来控制机器人的运动。例如,如果我们想让机器人向前移动,可以将$v$设置为一个正数,$\omega$设置为0;如果我们想让机器人向左旋转,可以将$v$设置为0,$\omega$设置为一个负数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值