Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目,可以帮助你进行自动的版本管理。控制组单片机端之后的线上测试都是通过
gitee
发布,在多人协作的情况下,使用git
就会相当的方便,能够有效地协调多位开发者对不同地方的改动。
gitee
账户与git
绑定,并且点击邀请链接加入本远程仓库Git Bash Here
”,输入以下代码,即可实现将远程仓库克隆到本地的操作,注意之后的任务会放置在任务文件夹中
>>> git clone https://gitee.com/buaarobot_admin/ControlGroupSCMOnlineTest2021.git
李明.md
撰写你对本周题目的难度的看法,创建一个简述自己对git组成以及常见命令使用原理的理解的markdown文件,命名格式为**{你的名字ToMarkDown}.md**。ControlGroupSCMOnlineTest2021/第一周测试题/task1
下面git commit -m {改动的内容}
在这里写清这次提交改动的内容:{你的名字}提交task1
git push
将本地所有未上传的提交推送到远程仓库git pull
获取当前远程仓库的最新版本, 将远程仓库的最新版本和本地最新版本合并(merge
)后,才能够推送git
会有相关的操作说明git
用法请查询参考资料或借助网络搜索不是所有任务都需要利用git进行提交,第一周以及以后的其它任务提交方式请以对应的任务说明为准
1.请完善PID.c
中的两个空白函数,函数的功能已经在注释中写出。
void PID_StructInit(void PID_StructInit(PID_t *pid, float p, float i, float d, float integral_limit, float max_output))
static void Calculate(PID_t *pid, float current_value, float target_value)
2.请根据自己编写好的函数进行对PID.c
的封装。
需要达到的要求是用户在定义 PID_t
结构体后(例如 PID_t TestPID
),先运行PID_StructInit
函数,再使用TestPID.f_Calculate(&TestPID, Current_value, Target_value)
即可完成计算,计算的结果保存在结构体中。
3.通过查阅关于PID
的资料,说一说P、I、D分别有什么作用,如果让你调节PID参数,你会如何开始调节。写成一个TXT文档,字数不超过100字,以自己的名字命名即可。
4.本任务的代码均放在 第一周测试题/task2
文件夹下。
PID.c
和PID.h
和PID参数说明文档
。将这些文件放在第一周任务/task2
目录下即可。bhjqrdkzz2021@163.com
(与其他需要邮箱提交的任务放在同一个zip文件中,zip文件命名格式为**{你的名字}第一周测试题.zip)**机器人的驱动通常有电动、气动和液动三种,电机驱动是三种方式中功率密度最大、功能方式最简、伺服精度最高的控制方式。在移动式机器人中,常用直流电源(如航模电池)给电机供电,实现机器人的能源-驱动系统。
电动机一般分为同步电机和异步电机,其共同点是都需要旋转的磁场来产生驱动力。为了产生旋转的磁场,就需要交变的电流。因此,直流电机控制的核心技术是将直流电压逆变为交流电压,进而产生交变电流。逆变技术有很多种,最简单的是通过电刷换向,应用此技术的电机称为有刷直流电机(BDC: Brush Direct Current Motor)。直流有刷电机的优点为驱动电路简单、工作稳定、力矩大。其缺点为能量转换效率低、需要维护更换电刷、转速一般较低。
相应的,使用电子管换向而取代电刷换向的电机,称为无刷直流电机(BLDC: Brushless Direct Current Motor)。随着无刷电机控制技术的发展,更多的半导体公司推出了成熟的无刷电机控制方案。而由于无刷电机能量密度高、无需维护、效率高、伺服精度高的优点,移动机器人中使用无刷电机成为主流趋势。传统的BLDC控制方法是通过霍尔传感器以及换向电子管,因此其通过生产时对磁隙的调制,使反电动势为方波。而由于控制方法的精进,使得我们不仅可以用直流电源驱动BLDC,还可以直接使用直流电源驱动一些交流电机,比如永磁同步电机(PMSM: Permanent-Magnet Synchronous Motor),对其控制方法称为空间矢量控制(FOC: Field-Oriented Control)。
在北航机器人队中,我们通常使用PMSM作为机器人驱动器。
以下为北航机器人队常用的M3508电机,请根据下图,查阅资料,简述机器人驱动电机的3个主要组成部分,并分别简述其作用,不超过200字。
请通过查阅资料,简述BLDC与PMSM的区别,并简述PMSM的控制原理,不超过300字。
无刷电机的控制方式常见为三环控制,即电流环、速度环和位置环通过级联的方式实现控制。常见的FOC控制器或电调通常会封装电流环,机器人队使用的控制器带有三环的封装,其中电流环参数会通过测量电机绕组的电阻和电感参数自动计算,而速度环和位置环参数与外部负载有关。请简述三环分别的输入量与输出量的物理意义,以及三环控制的作用,不超过100字。
/task3
目录下。bhjqrdkzz2021@163.com
(与其他需要邮箱提交的任务放在同一个zip文件中,zip文件命名格式为**{你的名字}第一周测试题.zip**)下周可能会用到C++编写QT。请没有基础的同学提前学习一下关于C++的知识
学习网站
子任务1:推导如图1所示四轮全向轮将车体坐标系下的目标速度大小、速度方向与角速度大小(方向默认俯视顺时针为正)解算到四个轮子转动角速度的公式,写出推导过程并说明各个参数的含义。部分说明与设定参数如下:
*车体坐标系是与机器人底盘固连的坐标系,不论机器人处在场地上的什么位置,车体坐标系始终与车体姿态一致;
*车轮半径r为30mm;
*底盘半径R为200mm(说明:底盘半径此处指轮子到底盘中心的距离,如图2所示;
*图中四个轮子中心连线构成一个正方形;
*图中四个轮子所在平面与车体坐标系夹角(锐角)均为45°;
*轮子编号如图2所示,橙色箭头表示轮子正转时使底盘产生的运动方向。
图1 全向轮底盘(图片来自网络)
图2 全向轮底盘与车体坐标系
子任务2:在上一问的基础上,考虑当给出世界坐标系下的机器人期望速度矢量与角速度矢量时,如何解算出四个轮子转动的角速度。给出公式,写出推导过程并说明参数含义。
*世界坐标系是与场地固连的坐标系,被认为静止不动的、作为参考的坐标系。在机器人运动过程中,由于机器人底盘的旋转,车体坐标系会相对于世界坐标系转动一定的角度。
*图中给出的速度矢量是在世界坐标系下描述的。
图3 车体坐标系与世界坐标系
子任务3:在ChassisMotion.c 与 ChassisMotion.h 中,根据注释提示补全代码,实现四轮全向轮底盘各轮所需转速的解算任务。
任务提交:将本任务中的子任务1、2写在word文档中,word命名为“{你的名字}+第二周底盘运动学”,将子任务3的.c/h文件下载到本地进行修改、保存。上述word文件与.c/h文件与其他任务的文件一起打包为zip文件,命名为"{你的名字}+控制组测试题第二周"发送至指定邮箱(bhjqrdkzz2021@163.com)
三种数据帧示意图如下所示
参数说明
对于三种数据帧的ID位可均设置为1.
数据帧编码采用小端模式,STM32采用的是小端模式
PI控制器有两种形式,如以下图示
常见形式
级联形式
请叙述这两种PI控制器形式的区别。提示:可以但不限于从数学形式、代码形式、参数关系等方面分析。
分析实际情况PID参数配置。假设四轮舵轮底盘机器人(4轮方向相同),总重20kg,轮胎与场地摩擦系数0.3,车轮半径5cm,电机扭矩常数(扭矩与电流之比)为0.1。只考虑平动不考虑机器人自转,请通过分析得出速度环PI控制器参数值,并完成task6文件夹下的Simulink仿真,将分析过程及最终结果图像整理成word文档。若还未学过自动控制原理,可不改变Simulink中的其它参数,只按照上周查找的调参方法整定速度环PI控制器参数。
**提示:**需要根据参数修改Current to Acceleration模块和Acceleration Saturation模块,然后配置PI控制器参数,将计算和配置分析过程写在文档中,Bode图可拍照或用绘图工具绘制。
**注:**电流闭环可通过电流环PI控制器参数配置,转化为一阶系统。该一阶系统可通过设置控制器电流环的带宽完全确定。在本题中,假设电流环传递函数为$\displaystyle\frac{1}{\displaystyle\frac{s}{100}+1}$。Simulink中使用级联式PID,可将PID模块的Form选项设置为Ideal。
/task6
目录下,将完成的Simulink文件也放在/task6
目录下。bhjqrdkzz2021@163.com
(与其他需要邮箱提交的任务放在同一个zip文件中,zip文件命名格式为**{你的名字}第二周测试题.zip**)下周可能会用到FreeRTOS。没有基础的同学可以提前学习一下相关知识
官网
子任务1:通过查阅资料,总结CAN通信相比于其它有线通信方式的特点,并从软件和硬件两个方面分析使用CAN通信时需要注意的点,写成一个TXT文档,字数不超过200字,以自己的名字命名即可。
子任务2:任选一款有至少两路CAN的STM32芯片,新建keil工程,编写STM32程序,要求实现以下功能:
用CAN1接收设备A和设备B的反馈信息,反馈的CAN报文均为标准帧,数据长度均为8字节。设备A反馈的标准帧ID为0x01,反馈数据第1-4个字节为float型的数据DataA1,第5-8个字节为float型的数据DataA2;设备B反馈的标准帧ID为0x02,反馈数据第1-4个字节为float型的数据DataB1,第5-8个字节为float型的数据DataB2。
拟定数值为0~1之间的float型权重WeightsA和WeightsB,算出float型数据:
DataA=(WeightsA)DataA1+(1-WeightsA)DataA2
DataB=(WeightsB)DataB1+(1-WeightsB)DataB2
用CAN2接收来自上位机的信息,上位机下发报文有两种,均为标准帧。第一种帧的标准帧ID为0xA1,数据长度为8字节,下发数据第1-4个字节为float型的数据WeightsA,第5-8个字节为float型的数据WeightsB,根据接收到的数据更新第2点中提到的两个权重。第二种帧的标准帧ID为0xA2,数据长度为4字节,下发数据第1-2个字节为uint16_t型的CommandA,第3-4个字节为uint16_t型的CommandB,接收并保存这两个数据。
将第2点中提到的数据DataA和DataB分别以两种标准帧定时上发给上位机,第一种格式为0x01+0x00+0x00+0x00+4个字节float型数据DataA,每20ms上发一次;第二种格式为0x02+0x00+0x00+0x00+4个字节float型数据DataB,每100ms上发一次。假设上位机只能接受帧ID为0x01的帧。
将从上位机收到的CommandA尽快转发给设备A,设备A仅支持接收帧ID为0x01且长度为2个字节的标准帧,发给设备A的2个字节为uint16_t型的CommandA;将从上位机收到的CommandB尽快转发给设备B,设备B仅支持接收帧ID为0x02且长度为2个字节的标准帧,发给设备B的2个字节为uint16_t型的CommandB。
与设备A和设备B通信的波特率为1Mbps,与上位机通信的波特率为100Kbps。
程序有一定可读性,包含适当的注释;即使没能完成任务,也请提交上来,并且写明原因以及完成的进度情况。
本任务提交方式为邮箱提交,地址为bhjqrdkzz2021@163.com
(与其他需要邮箱提交的任务放在同一个zip文件中,zip文件命名格式为**{你的名字}第三周测试题.zip)**。
在上一周的任务中,大家已经了解并实现了四轮全向轮的运动学原理与代码实现方式。本周将需要大家完成舵轮底盘运动学的代码编写。
所谓舵轮,便是可以同时控制单个驱动轮转速与方向的轮子,具有两个自由度。其中,常用一个电机作为驱动电机,另一个电机作为舵向电机,对驱动轮的方向进行控制。大家可以在任务的参考链接中对舵轮有一个更直观的印象。
于gitee上下载task8文件中的ChassisMotion.c/h并根据注释补全代码。题目中的舵轮底盘如下图所示:
1、当希望底盘完成平移运动的时候,显然,四个舵轮的转速与朝向都必须是一样的。
2、当希望底盘完成自转的时候,有两种解决方案,其一为在不改变四个轮子朝向的前提下改变驱动轮各自的速度,利用差速进行车体旋转;其二为各轮转动到合适角度,各轮速度矢量所在直线均为同一圆的切线。
3、当车体同时需要平移和转动时,可综合考虑每个轮子使车体产生平移以及旋转的速度大小与方向,将两个速度矢量叠加后作为此轮的实际速度矢量。
使用STM32F4的SPI1与传感器进行通讯,片选信号(CSn)引脚为GPIOA8。
片选信号为低电平的时候才能开始进行数据传输。完整的Command帧传输完毕之后,片选信号为高电平时,Command帧生效。如下图所示
ADD[x]为某个寄存器的地址,也就是下文中的ADDR
存储原始值的寄存器地址为0x3fff
EF位默认为0
数据的读取可直接利用按位与操作
命令帧格式如下
Bit | Name | Description |
---|---|---|
15 | PARC | Parity bit(even) calculated on the lower 15 bits of command frame |
14 | R/W | 0:Write 1:Read |
13:0 | ADDR | Address to read or write |
Bit | Name | Description |
---|---|---|
15 | PARD | Parity bit(even) calculated on the lower 15 bits |
14 | EF | 0:No command frame error occurred 1:Error occurred |
13:0 | DATA | Data |
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。