在webots中实现pid控制

在webots中实现pid控制

webots是一款开源机器人仿真软件,拥有强大的仿真能力,在机器人开发中也经常被使用。这篇文章向大家介绍如何在webots中实现自己的pid控制

前置知识

有关webots和PID的知识这里不再介绍,有需要者可移步以下链接:

webots:

  1. webots-超详细入门教程(2020)_哔哩哔哩_bilibili
  2. Webots: robot simulator (cyberbotics.com)

PID:

  1. 图文详解PID调参_Top嵌入式的博客-优快云博客_pid调参

开发环境

webots:2023a

VScode

搭建仿真环境

新建project,命名为pid_controller

在这里插入图片描述

生成这样一个世界:

在这里插入图片描述

然后我们搭建用于演示pid的物体,它是由一个大方块和一个小长方体组成的:

在这里插入图片描述

大方块我们设为robot节点,尺寸为0.1,0.1,0.12(x,y,z),appearance选PBRAppearance,颜色设为红色

在这里插入图片描述

小长方体是一个solid节点,尺寸为0.025,0.025,0.1(x,y,z),在大方块的一侧并与大方块有一定空隙

在这里插入图片描述

大方块和小长方体通过一个HingeJoint连接,关节的原点设在endPoint的solid的中心,绕Y轴旋转;关节的device有motor和position sensor

在这里插入图片描述

需要注意的是为了体现一个比较好的旋转效果,并尽量贴合实际,我将大方块的physics字段中的density设为了5000,而小长方体的density为1000。这样大方块就会更重,体现出来是小长方体转动而大方块不动,小长方体旋转的惯性不会影响大方块,类似于把一个杆固定在墙上旋转。

编写控制器

控制器实现了一个简单的pid控制速度

/*
 * File:          pid_controller.c
 * Date:
 * Description:
 * Author:        RobotFreak
 * Modifications:
 */

/*
 * You may need to add include files like <webots/distance_sensor.h> or
 * <webots/motor.h>, etc.
 */
#include <webots/robot.h>
#include <webots/motor.h>
#include <webots/position_sensor.h>
#include <stdio.h>
//#include "pid.h"
/*
 * You may want to add macros here.
 */
#define TIME_STEP 64
#define SPD_KP 0.001
#define SPD_KI 0
#define SPD_KD 0
#define POS_KP 0
#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lupinjia

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值