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算法,云台会自动跟随。

  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: STM32 单片机可以广泛应用于机器人控制系统。在机器人控制中,STM32 单片机可用于感知、决策和执行等方面。具体来说,它可以通过传感器获取机器人周围环境的信息,如距离、温度、位置等。然后,单片机通过算法对这些信息进行处理和分析,进行决策,例如避障、寻路、定位等。最后,单片机将执行结果传递给机器人的执行器,如电机、舵机等,控制机器人的运动。 在机器人控制中,STM32 单片机具有以下优势: 1. 高性能:STM32 单片机具有高性能处理器,速度快,响应时间短,能够满足机器人对实时控制的要求。 2. 多功能:STM32 单片机具有丰富的外设和接口,可以方便地连接各种传感器和执行器,使机器人具备感知和执行能力。 3. 低功耗:STM32 单片机采用低功耗设计,适合移动机器人等对能源要求较高的场景,延长机器人的工作时间。 4. 易扩展:STM32 单片机具有丰富的开发工具和开发资源,开发人员可以利用其强大的生态系统进行快速开发和扩展。 总之,STM32 单片机是控制机器人的理想选择,它具备高性能、多功能、低功耗和易扩展等优势,可以实现对机器人的全面控制。通过使用STM32单片机,我们能够灵活地设计和实现各种类型的机器人,为人类带来更多的便利和价值。 ### 回答2: STM32单片机是一种高性能、低功耗的微控制器,常用于嵌入式系统和自动控制领域。通过使用STM32单片机,可以实现对机器人的精确控制。 首先,STM32单片机具有较强的计算能力和丰富的外设资源,可以实现实时控制,满足机器人运动控制和环境感知的需求。其高速的时钟和丰富的接口资源,可以与各种传感器进行连接,例如光电传感器、超声波传感器、陀螺仪等,用于感知周围环境。 其次,STM32单片机还具有多种通信接口,如UART、SPI、I2C等,可以与其他设备进行数据交互,实现机器人与外部环境的信息交流。例如,可以通过UART接口与上位机进行通信,实现远程控制机器人的功能。 此外,STM32单片机还具有强大的定时器和PWM功能,可以精确控制机器人的运动速度和转向角度。通过编写相应的控制程序,可以实现机器人的路径规划、避障等功能。例如,可以利用定时器和PWM功能控制直流电机的速度和方向,实现机器人的前进、后退、转弯等动作。 最后,STM32单片机还支持多任务处理和多线程编程,可以同时处理多个任务,实现机器人的并行控制。这对于机器人来说尤为重要,因为机器人通常需要同时执行多个任务,如避障、定位、抓取等。 综上所述,STM32单片机是控制机器人的理想选择,因为它具有强大的计算能力、丰富的外设资源、通信功能和定时器、PWM功能,可以满足机器人控制的各种需求。同时,其多任务处理和多线程编程的特点,使得机器人可以同时执行多个任务,提高了机器人的执行效率。 ### 回答3: STM32单片机是一款功能强大的微控制器,它在控制机器人方面具有广泛的应用。首先,STM32单片机具有高性能和低功耗的特点,可以满足机器人系统对实时性和能效性的需求。其次,STM32单片机拥有丰富的外设和多个通信接口,可以与各种传感器和执行器进行连接,从而实现机器人的感知和执行功能。例如,可以通过SPI、I2C或UART接口连接超声波传感器、红外线传感器、陀螺仪等,实现机器人的环境感知和姿态控制。同时,可以使用PWM输出控制舵机、步进电机等执行器,完成机器人的动作和运动控制。此外,STM32单片机还支持多任务操作系统,可以实现机器人的多任务并发处理,提高机器人的灵活性和功能性。最后,STM32单片机还可以进行编程和软件调试,采用C语言或者基于图形化编程软件进行开发,非常适合初学者和专业开发人员。总之,STM32单片机通过其强大的功能和丰富的外设,可以实现对机器人的准确控制和高级功能的实现,是控制机器人的理想选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值