762|1

690

帖子

25

资源

版主

29“万里”树莓派小车——直行偏向问题与新控制模式 [复制链接]

本帖最后由 lb8820265 于 2022-3-20 10:32 编辑

小车终于成功运动起来了,可是却发小车多次做平行移动后,yaw方向会偏。造成这个现象的主要原因为:

       1. 小车启动的时候不是所有轮子都同时启动,存在一个控制死区;  

       2. 小车停止控制的时候,小车轮子由于惯性不能马上停止,导致有轻微转动。

因此用下面方法来解决。

设置快速启动控制

     电机从停止开始启动,有出现明显的堵转,堵转量每个电机不一样。因此要解决这个堵转问题,可以将电机不产生小控制量,将每个电机输出量先除以2,再加上50,这样最小的输出都是50了,核心代码如下。

 if ((int) speed1 > 0) {
    speed1 = speed1 / 2 + 50;
} else if ((int) speed1 < 0) {
    speed1 = speed1 / 2 - 50;
}

用刹车代替0控制量

不控制的时候轮子会由于惯性继续转动一会,电机驱动中有刹车模式,在刹车模式下会让轮子转速快速下降。

在树莓派代码中主要体现在接收到0控制量的时候,执行刹车,代码如下。

float gen=2.55;
if(Data[0]>128){
  M1.Motor_out=(256-Data[0])*gen;
  M1.Direction=2;
}else if(Data[0]==0){
  M1.Motor_out=0;
  M1.Direction=3;
}

新增转向前进控制模式

纳姆轮小车也可以当做普通的转向轮控制小车来控制,这样就不存在平移控制导致转向的问题了。

将遥感的Y轴数值用来控制小车的前进和后退,X轴数值用来控制转向。主要代码如下。

void Tuenmode_mecanumRun(float ySpeed, float aSpeed)
{
    float speed1 = ySpeed  + aSpeed;
    float speed2 = ySpeed  - aSpeed;
    float speed3 = ySpeed  - aSpeed;
    float speed4 = ySpeed  + aSpeed;
}

问题

采用快速启动的方法,能快速启动,但也导致几乎只能前后左右移动,斜方向由于需要有轮子不转,导致无法做到。

用刹车代替0控制量,会导致停止控制的时候小车迅速停下,能稍微减少Yaw的转动,却也导致小车停止的时候有颠簸感。

采用转向前进控制方法能随意控制前进和转向,但是经常出现转向过度,导致控制起来非常麻烦。

源码

GitHub:

提示词:如果您需要查看本帖隐藏内容,请登录或者注册

提示词:如果您需要查看本帖隐藏内容,请登录或者注册

Gitee:

提示词:如果您需要查看本帖隐藏内容,请登录或者注册

提示词:如果您需要查看本帖隐藏内容,请登录或者注册

个人签名QQ:252669569

回复

1万

帖子

2853

资源

管理员

"万里"树莓派小车汇总贴:

lb8820265的“万里”树莓派小车开源分享 - DIY/开源硬件专区 - 电子工程世界-论坛 (eeworld.com.cn)

 

目录:

 

“万里”树莓派小车开张贴 

1“万里”树莓派小车——建立项目仓库

2“万里”树莓派小车——python学习(Thonny的使用)

3“万里”树莓派小车——python学习(定时任务)

4“万里”树莓派小车——C++学习(编译与运行,geany使用)

5“万里”树莓派小车——wiringPi学习(延时与线程模拟定时器)

6“万里”树莓派小车——wiringPi学习(PWM与外部中断模拟定时器)

7“万里”树莓派小车——RPi.GPIO学习(PWM与外部中断模拟定时器)

8“万里”树莓派小车——socket学习(本机通讯)

9“万里”树莓派小车——socket学习(TCP两机通讯)

10“万里”树莓派小车——socket学习(UDP两机通讯)

11“万里”树莓派小车——socket学习(Android发送)

12“万里”树莓派小车——socket学习(Android收发)

13“万里”树莓派小车——配件准备

14“万里”树莓派小车——电机驱动学习

15“万里”树莓派小车——光电编码器学习(正反转的判断)

16“万里”树莓派小车——光电编码器学习(转速的获取)

17“万里”树莓派小车——VSCode学习(编译和调试)

18“万里”树莓派小车——Makefile学习

19“万里”树莓派小车——VSCode学习(多C文件链接调试)

20“万里”树莓派小车——电机控制学习(控制速度)

21“万里”树莓派小车——电机控制学习(4轮速度控制)
22“万里”树莓派小车——手机遥控电机转动

23“万里”树莓派小车——无屏幕连接树莓派

24“万里”树莓派小车——树莓派64位系统bullseye跑分测试

25“万里”树莓派小车——纳姆轮控制

26“万里”树莓派小车——程序开机启动

27“万里”树莓派小车——固定和获取树莓派IP地址

28“万里”树莓派小车——小车组装

29“万里”树莓派小车——直行偏向问题与新控制模式

30.“万里”树莓派小车——第一阶段完成展示(从零开始介绍)

个人签名

玩板看这里:

http://bbs.eeworld.com.cn/elecplay.html

EEWorld测评频道众多好板等你来玩,还可以来频道许愿树许愿说说你想要玩的板子,我们都在努力为大家实现!


回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

最新文章 更多>>
    关闭
    站长推荐上一条 1/10 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表