爱吃雪饼的玛卡巴卡 2022-04-24 15:26 采纳率: 51.9%
浏览 967
已结题

如何使用PID控制 双轮差速运动模型的方形小车双轮的速度,使其逼近墙边,并沿着墙边行走。

img

如图所示,可以根据传感器数据建模,从而实时地计算出小车靠墙一侧的前拐角距离墙边的距离d和小车车身与墙体的倾角θ。

求如何用PID算法调整小车的双轮速度, 使小车逼近墙边,在d达到期望距离时调整车头使小车与墙边平行并做直线运动。

  • 写回答

13条回答 默认 最新

  • prince_zxill 2022-05-01 20:51
    关注
    
    %%%%两轮差速履带车数学模型建立%%%%%%
        %%参数设置
     L=4;%两个轮子间的距离
     T=0.1;%采样时间
     x=2;%初始化位置x坐标
     y=1;%初始化位置y坐标
     theta=pi/2;%初始化位置theta坐标
     
     x_goal=10;%终点位置坐标
     y_goal=10;%终点位置坐标
    while((x-x_goal)^2+(y-y_goal)^2 >0.01&&(x-x_goal<=0)) 
    %%%%%%%%%这一段设置跟踪器,跟踪一段直线%%%%%%
    %%%计算当前与目标的朝向误差
    theta_goal=atan((y_goal-y)/(x_goal-x));
    theta_error=theta-theta_goal;
    u=-k*(theta_error);
     
     
     %%%%控制输入,左电机和右侧电机。
     vr=4+u;%控制输入需要你去更改//4代表着你想让车走多快,我这里未考虑到。
     vl=4;%控制输入需要你去更改
     
     
     
     %%%%process model
     
     %%%运动模型
     v=(vl+vr)/2;%中心速度
     w=(vr-vl)/L;
     x=x+v*cos(theta)*T;
     y=y+v*sin(theta)*T;
     theta=theta+w*T;
     x_push=[x_push;x];
     y_push=[y_push;y];
     theta_push=[theta_push;theta];
    end
    
    评论

报告相同问题?

问题事件

  • 系统已结题 5月2日
  • 创建了问题 4月24日

悬赏问题

  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)