0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

立创梁山派开发板-21年电赛F题-送药小车-小车角度环的调试与实现

jf_31863339 来源:jf_31863339 作者:jf_31863339 2023-07-27 10:18 次阅读

小车转向的调试与实现

怎么实现小车的90度转向?

首先,在09_国产IMU移植及姿态解算.md里面我们可以获取到小车的姿态信息,对应的转向信息就是Yaw(偏航角)。

而在08_直流减速电机PID速度环与位置环调试中我们也可以准确控制小车轮子的转速和转多少个脉冲(也就是转几圈)了。

这样实现小车的转向就有了两种方案了。一种是用Yaw(偏航角)作为测量值,想要转的角度作为目标值,用PID驱动小车以一定的速度去旋转来达到目标值。

第二种是在实现小车轮子位置环的基础上,控制两边轮子同时向不同的方向旋转一定的圈数(编码器脉冲),在小车轮子不打滑的情况下转过的角度就是一个确定的值,在送药小车的地图中,旋转基本都是90度的,所以这种实现方法会很简单也容易调试。

用角度环实现90度转向

在pid_thread.c中实现:

创建相应的PID控制参数的结构体:

positional_pid_params_t car_angle_ring_pid;

初始化控制结构体并修改kp ki kd:

//角度环配置
//角度环 pid 参数初始化
positional_pid_init(&car_angle_ring_pid, 0.015, 0, 0, 0.1, 2, -2);
//修改 角度环 kp ki kd
car_angle_ring_pid.positional_pid_set_value(&car_angle_ring_pid, 0.015, 0,
                                            0);

在PID的软件定时器回调函数中计算两个轮子需要的速度:

// 小车角度环
if (car_angle_ring_enable_flag == 1)
{
    static float error = 0;

    error = turn_target - fusion_data.euler.euler.yaw;
    // 处理角度突变
    if (error > 180.0f)
        error -= 360.0f;
    else if (error < -180.0f)
        error += 360.0f;

    angle_ring_speed_target = positional_pid_compute(
        &car_angle_ring_pid, error, fusion_data.euler.euler.yaw);
}
else
{
    turn_target = fusion_data.euler.euler.yaw;
    angle_ring_speed_target = 0;
}

打开角度环后他就会保持Yaw为0,如下面这个图一样:

wKgZomTB0_CAGcVLAB6Ip3df6Pc667.jpg

下面是设定他靠角度换旋转90度的效果:

wKgZomTB0_OAL-mcAMWJ-SB9-D4998.jpg

用位置环实现90度转向

还是在pid_thread.c中实现:

在08_直流减速电机PID速度环与位置环调试已经可以让轮子转固定的脉冲(圈数)了,直接把对应的目标值加给电机1和电机2的位置目标就可以了。

// 位置式旋转,负数左转,正数右转。
void car_spin_position(int32_t _position_target)
{
    motor1_position_target += -_position_target;    motor2_position_target -= _position_target;
}

在实际实现中,如下面的gif图所示:

wKgaomTB0_WAQLwDABnYgU9ZdEk092.jpg



审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 电机
    +关注

    关注

    139

    文章

    8312

    浏览量

    142098
  • PID
    PID
    +关注

    关注

    35

    文章

    1446

    浏览量

    83804
  • 开发板
    +关注

    关注

    25

    文章

    4429

    浏览量

    93995
收藏 人收藏

    评论

    相关推荐

    基于启明6M5开发板的无线环境监测小车系统设计

    本项目旨在基于启明6M5开发板设计一个无线环境监测小车系统,用于监测实验室环境,用户能够通过蓝牙对小车进行控制,并通过onenet云平台进行查看当前环境数据以及历史数据。
    的头像 发表于 12-11 12:22 465次阅读
    基于启明6M5<b class='flag-5'>开发板</b>的无线环境监测<b class='flag-5'>小车</b>系统设计

    【悟空H3开发板免费体验】基于ROS系统的全向轮小车

    /STM32F100RBT_robot.git 悟空: 1、开场白 大家好,我是FFD80。很高兴能够在这里和大家分享一些关于我使用悟空H3开发板构建全向轮
    发表于 11-12 01:00

    【悟空H3开发板免费体验】基于悟空H3开发板实现:三全向轮小车速度控制、里程反馈

    产品试用报告 - 悟空H3开发板 产品概述 产品名称:悟空H3开发板 试用项目:ROS系统基础下构建全向轮小车 背景 悟空
    发表于 11-02 01:37

    ·梁山GD32F4】-DHT11温湿度传感器模块移植过程

    量程: 20 - 90 %RH 湿度精度:±5 %RH 温度量程: 0 - 50 ℃ 温度精度:±2 ℃ 通信协议:单总线 管脚数量:3 Pin(2.54mm间距排针) 移植过程 我们的目标是在梁山
    发表于 08-30 15:15

    ·梁山GD32F4】-1.47寸彩屏模块移植

    例程移植至梁山GD32F470上。按照以下步骤,即可完成移植。 将源码导入工程; 根据编译报错处进行粗改; 修改引脚配置; 修改时序配置; 移植验证。 查看资料 移植至工程 引脚选择 软件SPI移植 硬件SPI移植 移植验证
    发表于 08-28 18:18

    【Milk-V Duo 开发板免费体验】4-Linux控制小车动作(原创)首发

    接上三篇: [接上两篇:【Milk-V Duo 开发板免费体验】3-Linux控制小车方向https://bbs.elecfans.com/jishu_2371135_1_1.html
    发表于 08-21 02:11

    立创·梁山开发板-21年电赛F题-送药小车实现思路

    基本要求 1. 根据走廊上的标识信息自动识别,寻径将药品送到指定病房,投影要在门口区域内, 2. 到了指定病房后,点亮红色指示灯,等待卸载药品。 3. 人工卸掉药品后,小车自动熄灭红色指示灯,开始返回。 4. 自动返回药房,点亮绿色指示灯。
    的头像 发表于 08-08 09:44 502次阅读
    立创·<b class='flag-5'>梁山</b>派<b class='flag-5'>开发板</b>-<b class='flag-5'>21</b>年电赛F题-<b class='flag-5'>送药</b><b class='flag-5'>小车</b><b class='flag-5'>实现</b>思路

    立创·梁山开发板-21年电赛F题-送药小车数据的发布与订阅

    可维护性和调试困难:使用全局变量传递信息可能导致代码的可维护性和调试的困难。由于全局变量可以被任何任务修改,追踪问题的根源和调试错误可能会变得更加困难。
    的头像 发表于 08-07 09:55 294次阅读
    立创·<b class='flag-5'>梁山</b>派<b class='flag-5'>开发板</b>-<b class='flag-5'>21</b>年电赛F题-<b class='flag-5'>送药</b><b class='flag-5'>小车</b>数据的发布与订阅

    梁山-21F-智能送药小车-按键检测的消抖和实现

    按键检测的消抖和实现送药小车中,预留了三个按键,药品装载检测是通过一个轻触开关来实现的,也可以把他理解成一个按键。 按键的实际电路如下: 我们通常用的按键内部都是机械弹性开关,当
    发表于 08-04 09:48

    开发板-21年电赛F题-送药小车-小车寻红线环的调试实现

    PID控制来说,测量值是红线相较屏幕中线的偏移,目标值是想让红线偏移为0,输出值是电机的速度。 根据14_立创梁山派与K210串口通信协议框架搭建.md文档我们的立创梁山派已经可以获取到色块的坐标了。接下来就可以参考10_小车
    的头像 发表于 08-03 10:10 956次阅读

    立创·梁山开发板-21年电赛F题-送药小车-与K210串口通信协议框架搭建

    在K210可以识别到色块和识别数字后,就需要把这些信息传递给立创梁山派了。而立创梁山派也需要控制K210去切换巡线模式和数字识别模式。所以需要规定一下他们之间的双向通信协议。
    的头像 发表于 08-02 10:57 495次阅读

    立创·梁山开发板-21年电赛F题-送药小车-K210功能实现代码讲解

    关键的注释都添加了,可以帮助理解代码,这段代码同时实现了寻红线和数字识别,但是还做不到同时运行,在寻红线的时候没法数字识别,这两个状态之间的切换可以通过长按K210上的用户按键或者由立创梁山派来控制
    的头像 发表于 08-01 09:49 872次阅读

    梁山开发板-21年电赛F题-送药小车-赛题分析

    全国产开源开发板,基于GD32F4系列,21电赛F题-送药小车赛题分析
    的头像 发表于 07-31 10:13 590次阅读
    <b class='flag-5'>梁山</b>派<b class='flag-5'>开发板</b>-<b class='flag-5'>21</b>年电赛F题-<b class='flag-5'>送药</b><b class='flag-5'>小车</b>-赛题分析

    基于PSOC6开发板构建的智能小车

    本项目是基于Psoc6-evaluationkit-062S2开发板构建的智能小车。该开发板由RT-Thread与英飞凌联合推出,集成了一颗32位双核CPU子系统,包括150MHz的ARM
    发表于 07-28 15:14 509次阅读
    基于PSOC6<b class='flag-5'>开发板</b>构建的智能<b class='flag-5'>小车</b>

    【CW32饭盒开发板试用体验】+可爱的饭盒

    CW32F030评估 如今推出的CW32饭盒,则无论是包装还是在开发板的设计上都向前大大地跨进了一步。 饭盒的塑料盒包装如图2所示,
    发表于 06-01 13:53