某大学机器人实验室软件组生存指北
Bonjour 恭喜你们通过面试并成为了我们的一员,机器人软件组欢迎你! *Bonjour是法语中“你好“的意思,或者是Apple Inc.(AAPL.NASDAQ)的其中一个服务包的名称 来都来了,不如看看软件组是干什么的? 虽然取名是软件组,但是我们不是那种坐在办公室里面打开一台MacBook就直接开始写代码的那种类型。那个叫前后端全栈开发,开发出来的东西是给我们人用的。 然而呢,我们软件组则是给机器人(对的!就是机器人!)写代码的,如果说视觉组组长所带领的视觉组是机器人的双眼,那我们就可以算得上是机器人的大脑了。 一旦机器人的大脑瘫痪了,它再有多强的机械结构,多快速的视觉识别算法,多大功率驱动的硬件驱动板,也只能沦为一坨动都不能动的废铁在赛场上漫无目的的转着。 那我们怎么给机器人写代码呢? 停停停! 在我们继续下去之前请你先确保你已经学会了计算机的基本操作并且了解软件的运行逻辑(比如说截屏,打开文件夹,上搜索引擎不在下载任何流氓软件的情况下下载steam并正常安装启动等等)。 当然,如果你真的不会的话,这不怪你,我们会给你时间来学习和适应。这是我们的教育体制和城乡教育差距所决定的,有的人可能小时候就开始用电脑了,有的人可能到大学才有自己的第一台电脑。 以及我强烈推荐你去看看这本书:你缺失的那门计算机课 那,干完这些之后呢? 干完这些之后,你要学习C语言了。 如果说软件是机器人的灵魂的话,那那块承载着软件的STM32就是装载着机器人大脑的躯壳了。 然而,我们要在给机器人写代码之前,要先掌握一门编程语言。这门编程语言就像是你的斧头,如果没有学,也只能是徒有班门弄斧之名。当你学会了怎么去摆弄这个斧头之后,你就可以随心所欲的发挥你的所有的潜力了。 请注意:在学习C语言之前,请你确保自己把我布置的练习1做完了,否则跳级会增加你的痛苦。 如果你要学习C语言的话,你可以去参考B站翁教授的教程 或者是 自行上网寻找相关教程。 你也可以注册一个洛谷的账号,洛谷是一个oi(信息学奥林匹克竞赛)学生常用的在线评测系统,你可以在里面刷题培养自己的c语言的“语感“并在试错中不断成长成自己想要的样子。 当然,我们后面的作业也会提交洛谷的做题记录,所以你做题的时候也可以留存一下你的记录,以便备查。 你只需要学到指针和结构体就够了。如果你才刚刚开始学,我们也不会怪你,第一次考核会分三组,其中有一组就是给刚刚开始学C语言的,你只要掌握循环,if等c语言的基本语法就好了。 打开你的dev-c++,开始你的c语言学习之旅吧。 如果我学过了C语言了呢? 请一定来找我,你可以直接申请跳级,我会给你更有挑战性的任务。 关于如何联系我请看最后的“如何提交我的练习”一栏。 C语言学习完之后呢? C语言学习完之后,我们就要学习专门为STM32定制的C语言了,先是HAL库,再是标准库。 请注意:在学习STM32之前,请你确保自己把我布置的练习2做完了,否则跳级会增加你的痛苦。 你可以想象一下,stm32就是一个麦当劳的汉堡包,最顶层是HAL库(你只需要点点就可以用了),中间那层则是标准库(你需要自己写一大坨又臭又长的代码,但是你知道了STM32这个东西到底是怎么在运行的),最底层就是寄存器(这个我也不会写,因为写一次要查一次又臭又长的英文文档,有标准库做包装何乐而不为呢?我们不会让你学这个,当然你想学我也不会拦着你(笑) 我们首先要学的是HAL库,标准库是加分项,标准库可以让你了解灵魂到底是怎么驱动躯壳的,躯壳到底是怎么担任起大脑的职务的。 HAL库经典入门教程:野火小智 标准库经典入门教程:江协科技 当然你觉得视频不好,你也可以自己上网搜你自己爱看的教程自己学习。 在跟着他们写代码之前,你需要一块STM32F103C8T6。 你可以网上自己买一块,也就一顿饭的钱,当然,如果你真的没有可以买开发套件的资金储备了,你也可以来实验室拿一块去用,但是要记得还。 还有别的配件我推荐你一次性去某宝网店上全部买齐,这样你就可以跟着课程一步一步走下去了。 打开你的Keil uVision 5,拯救世界吧! 什么?你连keil都玩的溜溜的,现在在用CLion和PlatformIO? 还不赶快联系我!你可以直接进队跟我一起造车了! 关于如何联系我请看最后的“如何提交我的练习”一栏。 后面我们也会教怎么用git和GitHub来进行在线协作。这些都是后话了,等你过了第一次考核我自然会教你。 第一次考核会让你们自己选分组(第一组:在学习STM32,第二组:在学习指针和结构体,第三组:在刚刚开始学习C语言)并让你们做题,不要紧张,那些题目大概率都是你们做过的,换汤不换药。只要你掌握了底层的原理,我相信你们肯定能拿出自己最好的水平。 Git/GitHub又是什么?我学他们有什么好处吗? 你学习他们可以成为一个饭桶(Git)(逃 请确保你已经完成了第一次考核,或者是已经免考核闲着慌了再看这一段,否则这对你现在的学习是百害而无一益的。 Git是由大名鼎鼎的Linus Torvalds(也是后文竖起某个手指的那位神秘的linux开发者)开发的版本管理软件。 其实它是为了替代subversion(svn)而开发的,Linus早就对svn不爽了所以自己做了个Workaround。 Linus骂GitHub那为什么github不叫linhub呢(逃 说人话,其实git相当于你的代码时光机,你写代码每提交一次就相当于在时间里面留下了一个节点,你的快照,如果有一天你觉得你的代码写的不好了反悔了想退回去,那行,git来帮你。git可以直接通过reset指令来重新返回你之前写的快照,输入一个命令就可以咯。 你总不想对着铺满桌面的陪着你的原神,鸣潮,崩坏:星穹铁道和绝区零快捷方式的P1001.c,P1001_第二版.c,P1001_最后一版了.c,P1001_真的是最后一个版本了.c,P1001_最终.c发愁吧,git就是你最好的解药。 GitHub就相当于是代码时光机的托管站,它托管着众多的代码时光机,你可以拉(clone/pull)别人的代码时光机下来自己用,或者是把自己的代码时光机上传(push)到GitHub上面去,前提是你要在上面创建一个托管着你的代码时光机的地方,那就是仓库(Repository)了。 这些都是业界通用的东西,只要接触代码开发和协作,都要学。学这些后面可以减少你们的学习成本,所以才让你们学这个(叹气 那我们怎么安装学习git和github呢? 那我们该怎么安装git呢? 从 https://git-scm.com 下载适合自己架构安装包然后打开,一路点安装就可以了。 git是一个命令行程序,所以你的所有操作都要在命令行中完成。 在Windows里,你可以右键点击某个四个方块的图标(就是你的Windows开始键),然后上面选项栏里面有一个Windows PowerShell或者是命令提示符或者是终端,点它会直接开一个黑框框(Terminal或者是命令提示符cmd)或者是蓝框框(Windows 10 PowerShell)的东西,点击那个窗口就可以写命令了。 看着黑白的瘆人的页面不要慌,这是30年前每个人都要学的必经之路,你只是走在了和他们一样的道路上而已。 然后在上面输入 cd Desktop 就可以到桌面了 ...