跳转至

About 软件组

2025 软件组概述

总述:

​ 软件组嘛……很明显就是写代码的咯,某种程度来说,软件是机器人的灵魂,软件组成员也是项目组的灵魂,软件组成员要负责联合起来电子组和机械组,共同完成机器人的设计制造、功能实现和调试维护😎。而且!看着机器人运动在 rviz 可视化中体现,看到 pub 了一个数据后机器人就真得动起来了,看到手上一个小小的雷达就把基地地图扫出来了,看到机器人按照代码逻辑执行,看到把篮球或者二维码正确标识出来,会非常的自豪😊(BUT 发现因为代码写错而让机器人磕碰到也会非常内疚的说😰

​ 作为软件组的一员,不仅需要你代码写得好,还需要一些项目管理能力。当然最最基本的还是写代码,不要求写的多快,多牛掰,但需要你架构稳定,封装有力,意识到位,操作柔顺,遵循软件开发的原则,爱写注释(当然也要注意 精炼恰当,爱写文档(毕竟你写下的代码会成为基地发展中的砖瓦,一届一届传下去,而且你也需要维护学长学姐祖传下来的代码debug 姿势也是必不可少。

​ 当然当然,这些都可以慢慢学,我们的招新时间较长,大家可以有充足的时间来提升自己,不管是新颖的技术还是高深的能力,相信我,只要你认真,会有充足的时间去学习【悄悄说,咱们招新不会对大家要求太过严苛滴💖(当然嗷,能做好滴话还是很吼滴

各个小方向:

tips:下列这些更实战更具象的技能,部分(真的只是部分)是会在最终考核中体现的,有能力的同学可以提前了解熟悉感兴趣方向的技能,基础比较薄弱的同学优先学习基础编程和每次考核中体现的技能。

1. 导航方向

  • 核心任务
  • 负责机器人移动控制、建图(如 SLAM、目标点导航及路径规划(如 A*DWA 算法
  • 维护导航功能包(如 ROS move_baseamcl,处理传感器数据(激光雷达、里程计等)和坐标变换(tf
  • 调试自主行驶功能(如避障、路线识别,需熟悉代价地图(costmap)和地图服务(map_server
  • 技能要求
  • 掌握 ROS 导航栈、C++/Python 编程,能使用 CSDN/Github 等资源解决问题。
  • 需具备信息检索能力和多组协作能力(如与机械、电子组配合

2. 视觉方向

  • 核心任务
  • 物体识别:训练 / 部署 YOLO 模型(如目标检测、手势 / 姿态识别,处理图像数据(OpenCV
  • 功能扩展:语音识别(Vosk 、韵律分析(librosa、人脸 / 二维码 / 热成像检测。
  • 算法优化:摄像机标定、坐标测算(如机械臂抓取定位、动态监测。
  • 技能要求
  • 熟悉深度学习框架(PyTorch、DarknetLinux 环境配置。
  • 可能需掌握多模态数据处理(eg. 语音 + 视觉融合

3. 机械臂方向

  • 核心任务
  • 运动控制:正 / 逆运动学解算(涉及欧拉角、四元数MoveIt! 编程(Python/C++
  • 通信与标定:与下位机通信(如 USB-TTL、关节节点可视化(RVIZURDF 模型解析。
  • 抓取逻辑:基于视觉坐标的抓取姿态规划,避障(自主或手柄控制
  • 技能要求

  • 熟悉 ROS 动作通信(action、机械臂仿真(Gazebo,需协作视觉组处理坐标变换(tf

4. 状态机方向

  • 核心任务
  • 状态机开发:使用smach库(Python)构建机器人行为逻辑(如家政组的中枢控制
  • 多模块协调:整合视觉、导航、机械臂接口,处理任务调度与异常处理。
  • 通信维护:管理 ROS 节点间的数据传输。
  • 技能要求
  • 强逻辑思维能力、代码规范性,需频繁跨组沟通。

一些小问题 FAQ

1. 我想加入软件组,那我要先学点什么呢?

a. C++ programming with Visual Studio Code

目前来讲软件组挺多代码还是基于 C++

​ 在基地代码中,C++ 相比于 C 而言,运算符重载、 templates、boost 库、stl 库等都是经常用到的。 此外,面向对象编程技术也是必须要了解的,毕竟软 件的同学会接手前一届代码,也要自己写属于本届新功能的封装,把代码包裹得优美好看非常重要。

​ 我们建议学 C 程序设计的同学,在写大作业 时使用 C++ 语言,尝试使用一下 vector stl 库内的内容, 并努力以面向对象思想编码,这会让你在考核时有更高的起点。

​ 此外,我们建议在写 C++ 时使用宇宙第一代码编辑器 Visual Studio Code。我们在基地写代码基 本都是采用 VSCode,现在在写 noj 时尝试 使用 VSCode 并配好编译、调试环境,多看看有啥插件 可以用,并尝试使用跳转等快捷键,让你之后阅读几千行代码时不会神经错乱。

b. Python

软件组的代码除了 C++,便是基于 Python 的。

Python 作为解释型语言让代码具备高度的可阅读性,容易上手,适用于开发周期短 的项目。与 C++ 类似,开发生态非常成熟,有很多便捷的数学运算第三方库,也能更便捷地添加已安装的内置和第三方模块,便于开发,移植性强。

c. Linux

​ 软件组所有的开发任务都是在 Linux 操作系统(基地用 Ubuntu下进行的,所以不能抗拒黑框框(或者紫 框框)的命令行。有必要熟练掌握 Linux 系统的各种操作,以及一些 Shell 编程技巧,初学可能觉 得很反人类,但只要能熟练掌握,那势必会成倍提升工作效率(可以了解安装一下 zsh 配上 oh-my-zsh , 再装一下 autojump 、 zsh-autosuggestions 、 zsh-syntax-highlighting ,按 Tab 补全非常爽)

​ 【补充:后期部分任务必须在 Linux 系统上完成。但是如果嫌麻,可以暂时使用虚拟机 VMware 代替(但是进了基地是必须实装双系统 Ubuntu

d. Git

Git 作为一个优秀的版本控制软件在开发时作用很大!代码效果崩了——回滚,尝试新 Feature——开分支,代码云端保存——推送到云端私有库(VSCode 内集成有基本 Git 的 可视化,也推荐装一个 GitLens 插件(真的,谁懂代码突然崩了然后回滚到好版本的救赎感😭

​ 【之后可能会让大家创建一个仓库用于储存代码啥的,需要用到 git

e. Markdown

Markdown 在软件组非常重要,基地的各种文档资料基本都是 md 格式😆。包括这个招新文档也是由 md 文件编写的,咱们基地的招新网站的文字也是 md 格式编写的,只是 md 文件可以很方便地转化为 PDF,HTML,.docx 等十余种格式。

​ 【软件招新群里会放一个编写 Markdown 文档的常用 ~ 免费 ~ 工具 Typora 的安装包,并且该文件的 md 格式文件会放入群文件夹,大家可以打开这个文件试试,并且可以试试自己写一个 md 文件,可以写随笔或者学习笔记,说不定以后可以搭建一个属于自己的博客(类似于基地的招新网站,然后将自己的笔记放进去哦(再悄悄滴说,之后考核上交的报告都会要求 md 格式的文件,可别冒鬼点子🌟,​写了一个 .docx 文件之后把后缀改成 .md 👊💥

e. Python GUI 或者 Qt 图形化编程(选修)

​ 毕竟比赛的时候对着一个又一个命令行开命令会很紧张的, 自己写一个小小的 GUI 程序来点点点还是很舒服的,做消息回传的显示也是很好的。

f. GitHub、Stack Overflow(选修)

​ 咱们也需要掌握面向 StackOverflow GitHub 的编程(不是

​ 在实践中有一些奇怪的问题中文网确实查不到解决方式,但是英文搜一下就会发现有很详细的解决流程。 GitHub 上也要时不时看一看 issues,说不定你遇到的问题别人也遇到了,开发者也提供了解决办法呢。

​ 最好掌握访问 Google 的技能,有科学上网的途径,也要稍微了解一下类似 proxychains4 的程序,要不然配环 境不得崩溃,而且 ROS 的一些问题只有英文环境才能搜出来正确答案的说。

​ 【嘿,你打得开上面的招新网站吗,可能有的同学无法打开,因为我们的网站挂在了 GitHub 上。比较简单的办法是下一个 Watt Toolkit(就是 steam++ 😗,里面有加速 GitHub 的选项。加速之后可以勉强使用 GitHub。至于如何高速地使用 GitHub 上的各种有趣项目(免费游戏,聊天高频词云,个人网站模板,图表生成等等)就需要科学……地自己探索啦】

如果你真的真的真的真的真的真的真的真的真的真的……(此处省略 N 个真的)是零基础

​ 没有关系,我们还有最基础的培训,同时也建议你先上网自学一下C/C++ 或者 python 语言的基础语法,网上有很多教程,真的很多,要学会用你们手中的百度,谷歌还有B ,CSDN,博客园,51 网,知乎等等等等。

2. 我代码写得很菜,是不是没戏了?

​ 理论上讲我们的确需要基础好的,但是这东西嘛,大家基本都才开始学,想补上去很快的。能力的 考察是多方面的,不会仅仅因为代码写得不好而直接否定一个人,毕竟这是可以训练的。只要你肯学,代码提升会很快的。(。・ω・。)ノ♡

3. 我学习成绩不太好,会不会在评价中处于劣势?

​ 学习成绩和考核评价并无直接关联,只要你招新考核中表现出众,没人会看你的学习成绩,反过来,就算你学分绩专业第一,如果招新考核一败涂地,你再说自己能力多强,学分绩多高,也没有任何用处。

4. 软件组的招新考核是什么形式呢?大致流程是怎样的?

软件组招新考核的形式分为面试、考核。

a. 考核:

​ 考核阶段分为两轮,一轮主要是做一些基础的环境配置,程序设计,二轮就接近实战了,考核阶段的核心是考察一个人的学习能力和工作态度,每次任务提交后都会进行评分,考核结束时计算总分排名来确定最终人选。

b. 面试:

​ 面试大致会了解一些你的情况(学过哪些东西、有哪些长处、以及对基地的态度等,同时也会问一些小问题,同学们尽力而为,尽可能向学长学姐展示出自己的优势 (。・ω・。)ノ♡。面试是对一个人各方面能力的直观而综合的评价,面试结束后我们会结合笔试和机试成绩决定最终进入考核的人选。

5. 还有什么问题欢迎大群戳管理员

6. 写在最后

​ 学长学姐们也不是天生就会这些,只不过比大家多花了点时间和热爱。我们相信能考进西工大的你只要坚持到最后就一定可以通过考核,成为舞基的一员。我们期待你的加入ᵎ(•̀㉨•́)و ̑̑ !