Skip to content
WDGaster703Public

About

HITSZ 自动化认知与实践课程项目

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

Harmony-AutoCar/HITsz-Lab-Project

  • 哈尔滨工业大学(深圳)2025 年春季学期 23 级工科试验班(自动化与电气工程)AUTO1001 自动化认知与实践课程项目。
  • 合作者:Gaster&畅希,代码参考:psp_dada - AutoCar-AUTO1001
  • 考核要求:小车需在 50s 内从起点用机械夹爪拿起一个圆柱体,循迹通过多种复杂弯道的赛道,到终点将圆柱体平稳放下。拓展任务是单独进行的避障考核,遇到障碍后避开障碍并自主返回赛道。
  • 开发板:Arduino mega 2560,电机:霍尔电机,电机驱动:DRV8701E
  • 考核时间:2025.6.24 9:00-12:00

代码文件结构

  • AutoCar_def: 定义了一些常量和引脚,根据实际情况修改
  • control: 控制小车的运动,包括三个部分
    • runMode:根据红外传感器的输出来决定小车运动模式
    • motorControl:根据小车运动模式设定小车两轮的目标速度
    • carRun:根据小车两轮的目标速度来输出 PWM 波控制小车
  • ctrt:红外模块相关功能
  • encoder:编码器中断函数
  • pid:pid 控制器
  • robotic_arm:机械臂控制

代码运行逻辑

1.上电
2.机械臂运动,夹取物品
3.红外模块读取数据,根据这个数据确定运动的模式(如左转、直行)
4.根据运动的模式设置左右两轮的目标速度
5.根据编码器的值计算轮子当前速度
6.用pid根据目标速度、当前速度计算出输出量以驱动电机
7.当遇到终点线时,执行最后的动作,之后不再运动

项目过程中的一些建议

  • 焊接驱动板
    • 要求:完成牛角电容、铝电解电容、色环电阻、直插式发光二极管、2×5P排针和2×5P排母的焊接。
    • 首先各元件要直插到位,比如色环电阻需要居中,两端引脚不能有翘起,要贴合平面;牛角电容放置平稳,不要有翘起;排针和排母一定。其次简易焊接固定后将过长的引脚剪短,再进行二次补锡,将焊盘附近的锡聚集成圆锥状且没有引脚末端裸露。
    • 焊锡时注意实验室的烙铁头不一定是所有位置都能受热,需要找到受热点。焊接前先将烙铁头在铜丝球或海绵中去除氧化物后再上锡。在焊接时烙铁头要先加热焊盘,全程加锡时焊盘要和锡丝一起受热,否则难以上锡。上锡后继续加热,锡丝融化后会自动被焊盘吸附成圆锥状。
  • 机械夹爪设计
    • 要求:自行设计一个能抓取物体(直径29mm高145mm左右,自己决定)的机械夹爪,使用齿轮连杆机构。
    • 个人自由发挥吧,找个机械大佬的作品小改一下(
  • 代码调试
    • 要求:能完成赛道巡线一圈。
    • 首先需要确认引脚定义是否一致,不一致的需要根据实际使用进行修改。PID 根据经验找一个大概的参数(实验指导书那一组大概也可以)基本都能用。调车的重点放在差速比的调试上,不同转弯大小都需要调试差速比实现最优转弯,后期提速时也需要提高差速比,否则转弯可能冲出赛道。差速比建议每次修改 0.05 或者 0.1,记录每次修改的值,后期可能会需要重调。

典型问题解决方案

  • Q1:直角弯容易冲出赛道或者错误识别其他轨迹,无法顺利转弯。

    A1:将红外移至小车中部以更好识别直角弯,使用寄存器-越界检测-倒车的模式,在越过直角弯红外无法检测到线路后触发记忆模式,根据之前的状态判断转弯方向,在无法一次性转向时加入倒车,这样可以提前纠正并降低识别其他东西的概率。

  • Q2:红外在两条赛道最靠近的位置容易错误识别其他赛道,以及有可能在其他转弯处识别到跑道外的图案从而无法正常巡线。

    A2:增大转弯是的差速比以及转弯速度,尽快通过大角度回头弯,在各转弯处都调整差速比使转弯和赛道重合,保证不偏离赛道过远。

  • Q3:红外模块错误检测黑线或者无法正确检测黑线。

    A3:使用螺丝刀旋动红外模块上对应位置的螺丝可以调节电位器从而调节检测距离,顺时针距离增加,逆时针距离减少。

一些碎碎念

自动化认知与实践课程融合了原来的自动化专业导论,工程制图,机械设计基础和机器人设计与实践四门课程。自动化专业导论共 4 节课,讲授自动化的历史、基本概念、基本原理以及自动化专业的培养方案和目标。工程制图部分共 8 节课,前 5 节课讲授点线面体投影绘图的基本原理和方法,后 3 节课教学Solidworks 的使用。主体部分是机器人设计与实践,也就是俗称的“小车课”,理论课共 8 节课,实验课共 12 节课。理论课由两位老师分别讲授机械夹爪设计基础、电路与电机驱动原理、Arduino 编程基础和机器人控制学与运动学建模共四部分内容。实验课前半部分是电机驱动电路调试、Arduino 实验、电机调速、机械臂抓取和红外&摄像头巡线五个实验,共八节课,后期是用给定的材料搭出一台小车并完成抓取和寻迹任务。

原本这是一门开设于大一秋季学期的课程,电机驱动原理和机器人控制学与运动学建模讲的也不算深入,实践部分能极大提升学生的动手能力,很适合作为自动化学生的专业入门课程。同时作为嵌入式设计的入门课,使用 Arduino 这种代码简易的 IDE 特别适合入门,浅显的 PID 和差速驱动建模也适合刚入学的自动化学生了解控制领域的基本原理和方法。而且融合了工程制图,删减了在计算机高速发展的当下已无多大用处的传统工图(当然画法几何还是很有用的,但是现在手绘工图的需求基本是速记或草图绘制,传统工图严苛的要求确实不太适用于当下)。

但是 23 级将本门课安排在大二春季学期,和 系统与控制同时进行,自动化导论部分的自动控制基本原理就显得食之无味。同时,在已经学完电路与电子学和高等电路与电子分析两门课程后,仍然花了整整一节课时间从电压电流起讲授电路基础,滑稽可笑。此外,由于某位老师对机械的执念,在机器人设计与实践 8 节理论课中强行塞了一节课进行机械夹爪基础授课,80 页的 PPT 极快地讲授《机械设计基础》的第一章、第四章的主要内容,讲完底下众人不知所云,在理论课结束一个月做机械臂实验前一个星期,这位老师突然要求要自主设计并打印机械夹爪,在许多同学使用往届学长的机械夹爪或者他给的标准模型打印后,在群里发言称「这种 3D 打印毫无意义,浪费人力(助教、班委时间和精力)物力(材料、设备),将会酌情扣分」,引起大伙的不满。

23 级实验课只有葛老师一人负责,葛老师同时还负责好几门课几百个人的实验,因此在实验课上一般不太会回复问题,也不好联系上,导致同学们有问题很难得到及时解决。此外,本门课并没有纸质版的授课内容和考核要求,特别是实验部分是由葛老师每周在群里发布指导书和实验要求与说明,发生过诸如:实验完成两天后才要求测量波形图、早上说控制 4 个舵机下午说只需要 3 个舵机等左右脑互搏事件,实验要求反复更改。久而久之,大伙对实验课怨声载道。某位老师的最终实验考核更是在期末周只提前 6 天发布,不知道是不是觉得期末周的 6 天时间是很充沛的,周三发通知,周四考试,周五调完,周六周日实验室还不开放,属实是离谱。

23 级在 22 级小车的基础上进行了多处改良:将以往的亚克力板主体换成了双层金属板,车身更加稳定;将以往的两块飞线板(特别是电机驱动电路板)换成了 Arduino 拓展版和电机驱动板两块成品板,学生只需自行焊接电机驱动板上的插件元件,硬件走线更加稳定和美观整洁;增加了一个全向轮辅助方向控制,更加适应赛道转弯需求。但是,多处改良带来车身体积的增加,而赛道并没有相应放大适应新的车身,这就会导致在一些连续直角弯部分转向更加困难,极大增加同学们的调车难度。

最后,我想说的是,本门课是一门实践为主体的课程,从零开始搭建一个能动的小车确实能极大提高同学们的动手能力,体会由物理系统-数学模型-物理实现的路径,积累实践经验,提升实践技能。但是希望这门课能有一个更清晰的授课内容和考核要求,上课内容适配同学们的学习进度,有更有效的实验指导和帮助,有更充分的调试时间,让同学们能更顺利体验到自动控制领域的魅力。

About

HITSZ 自动化认知与实践课程项目

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages