打印

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

[复制链接]
1745|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
立创开发板|  楼主 | 2023-7-27 10:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

送药小车代码仓库:https://gitee.com/lcsc/medical_car更好的观看体验请去:https://dri8c0qdfb.feishu.cn/wiki/UjwwwO0KZii5bykPcE4cJZafnAg
送药小车立创开源平台资料:https://oshwhub.com/li-chuang-kai-fa-ban/21-dian-sai-f-ti-zhi-neng-song-yao-xiao-che



小车转向的调试与实现怎么实现小车的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,如下面这个图一样:


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

用位置环实现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图所示:




使用特权

评论回复
沙发
tpgf| | 2024-5-7 16:37 | 只看该作者
小车控制的难点是不是对基准点的计算呢

使用特权

评论回复
板凳
观海| | 2024-5-7 17:15 | 只看该作者
小车的整个行车路线必须是固定的吗

使用特权

评论回复
地板
八层楼| | 2024-5-7 18:04 | 只看该作者
对于角度的采集使用的是哪种传感器呢

使用特权

评论回复
5
晓伍| | 2024-5-7 18:36 | 只看该作者
这种功能小车的传感器以及算法是非常重要的

使用特权

评论回复
6
磨砂| | 2024-5-7 19:08 | 只看该作者
这种小车 每过一段时间或者是路程 是不是就需要进行一定的校准呢

使用特权

评论回复
7
木木guainv| | 2024-5-7 19:40 | 只看该作者
如果在实际行走路线上没有相关坐标是不是就不能实现功能了呢

使用特权

评论回复
8
weifeng90| | 2024-5-7 21:21 | 只看该作者
立创是准备和水浒地名杠上了嘛?

使用特权

评论回复
9
埃娃| | 2024-5-15 22:40 | 只看该作者
小车只能走固定的路线吗

使用特权

评论回复
10
9dome猫| | 2024-6-30 23:20 | 只看该作者
设置合适的比例系数(Kp)、积分时间(Ki)、微分时间(Kd),以确保稳定和快速的响应。

使用特权

评论回复
11
9dome猫| | 2024-6-30 23:20 | 只看该作者
在定时器回调函数中,计算当前偏航角(Yaw)与目标角度之间的误差。
考虑角度的周期性(从-180度到+180度)来处理误差。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

26

主题

26

帖子

0

粉丝