我是靠谱客的博主 想人陪学姐,最近开发中收集的这篇文章主要介绍RM机器人控制导论,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

关键字

1.static

定义变量:在下一次函数执行时该变量保持不变,并且源文件的所有函数都可以使用它

定义函数:1)其他文件中可以定义相同名字的函数,不会发生冲突 2)静态函数不能被其他文件所用。

 例子:

 

2.extern

定义变量: 只在头文件中做声明,在.c文件里面使用时需引用一下头文件。

例:

(1) 在 test1.h 中有下列声明:

#ifndef TEST1H
#define TEST1H
extern char g_str[]; // 声明全局变量g_str
void fun1();
#endif

(2) 在 test1.cpp 中

#include "test1.h"
char g_str[] = "123456"; // 定义全局变量g_str
void fun1() { cout << g_str << endl; }

(3) 以上是 test1 模块, 它的编译和连接都可以通过。
如果我们还有 test2 模块也想使用 g_str , 只需要在原文件中引用就可以了

#include "test1.h"
void fun2()    { cout << g_str << endl;    }

定义函数:如果你想在本源文件中使用另一个源文件的函数,就需要在使用前用声明该函数,声明函数加不加extern都没关系,所以在头文件中函数可以不用加extern。

3.union联合体,枚举类型emua

  • 为什么使用union?

1.解决“相同信息”的困扰,避免重复代码,提高代码的简洁性。

相同成员公用,差异成员则通过 union 区分,这就避免了代码重复,也避免了代码耦合。

2.节省内存

例子:(28条消息) C语言union的用法及好处_rchris520的博客-CSDN博客_union的作用

注:普通结构体占有的空间为所有变量的总和,而union只占有最高位的空间。

枚举:每个值自动赋值0,1,2,3,4,5......

4.typedef

(28条消息) 关于typedef的用法总结_艾斯曼的博客-CSDN博客_typedef的用法

初始单片机与IO口

执行: 把LED一端接到GND上,另外一端接到lo上,让IO口输出0的时候,led灯就不会亮,但是输出高电平就会亮。(MCU微控制器),对IO口需进行配置。

各种热敏电阻:将物理量转换为电压值传给单片机

 寄存器的基本认知

 {1.GPIO基本结构与T作方式

  引脚的功能:1.输入输出电压(驱动)2.输出某个特殊信号(查芯片手册)

四种输入模式: 1.输入浮空2.输入上拉3.输入下拉4.模拟输入

四种输出模式:1.开漏输出(带上或下拉)2.开漏复用功能(带上或下拉)3.推挽输出(带上或下拉)4.推挽复用功能(带上或下拉) 

四种速度:2MHZ,25MHZ,50MHZ,100MHZ

八种工作模式:模拟输入  浮空输入  下拉输入  上拉输入  开漏输出   推挽输出  复用开漏输出  复用推挽输出  

概念:

1.5V容忍:用于保护电路,防止被烧坏

2.浮空输入:外部引脚直接进入施密特触发器,直接进入芯片读取。一般用于通讯。

3.上拉输入:可以让内部稳定接收到高电压,对低电压敏感。

4.下拉输入:对高电压敏感

5.模拟输入:不经过施密特触发器,用于模数转换,可以准确的读到实际电压。

6.推挽输出:用于电压驱动类控制,可以稳定的输出电压。

7.开漏输出:用于电流驱动类型控制,(一般不用),用于电压转换可以将io从3.3v升为供电电压(5v),这个需要上拉。}

计时器:通过改变高低电平的时间,就能改变电压。PWM(占空比)

测试使用的是pid算法

无反馈--开环  有反馈--闭环  P--输入与目标误差值  I--积分   D--微分

例:当步兵云台与对方的哨兵机器人角度相差值不是0时,则使用pid算法

反馈:1.角度反馈2.速度反馈

通过编码器来采集频率可以得到速度,知道高低电平的频率,形成波传给单片机

例子:

AB---差了一个相位,用来获取方向  Z-- 用来获知圈数

通信(数据传输)

例:遥控器用无线通信通过接收机传输给单片机

协议:与单片机约定什么时候开始发送,什么时候停止发送等

 串口通信(USART):使用二进制,具备占用传输线数量少、长距离传输时成本低的优点;但数据传输控制相比于并行通信复杂。

并行通信:控制简单、传输速度快;但由于其占用数据线过多,长距离传输数据时成本较高,且接受设备出同时接收数据时容易出现错位即抗干扰能力弱。

异步通信:实现容易、成本低;传输效率不高。

CAN通信:CAN通信只由两根线完成的,一条称为CAN_H(CAN High),一条称为CAN_L(CAN Low),共同构成一组差分信号线。

          使用CAN总线共享,减少线路,方便排查一个CAN总线上的所有器件通讯速率必须相同。(28条消息) STM32 CAN通信的学习笔记总结(从小白开始)_从心开始 >的博客-CSDN博客_can通讯原理

 引脚:TX、RX、VCC、GND

步兵机器人控制串讲

1.LED灯:用来提示,判断程序是否正常执行

2.按键:切换红蓝模式

3.串口通信+DMA

使用电机:得到的是云台的相对角度

使用陀螺仪:得到的是云台的绝对角度

底盘跟随:云台转动后底盘与之产生的角度差值,即p(误差值),目标角度为0度。

底盘的绝对角度:云台的绝对角度-云台与底盘的相对角度;

云台跟随:不需要使用pid算法,云台会自动跟随。

最后

以上就是想人陪学姐为你收集整理的RM机器人控制导论的全部内容,希望文章能够帮你解决RM机器人控制导论所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(71)

评论列表共有 0 条评论

立即
投稿
返回
顶部