• 2015-2023_个人工作总结


    萌芽

    本人自动化专业
    2012,2013大学时, 在TED上刷到一个无人机演示视频
    https://www.bilibili.com/video/BV1at411r7gn/?vd_source=4cbc7c695dc3f8d928061a83b3a1784c
    震惊的几个画面

    1. 不同高度,悬停飞行.
    2. 长竿放在无人机背面,飞行可以保持, 竿不会倾斜倒下.
    3. 剪掉一个无人机的桨, 可以保持平衡按航线飞行.
    4. 和人进行打乒乓球, 并击回人的手附近.
    5. 多机配合, 用网接住乒乓球.

    作为一个自动化专业的人, 知道有控制理论, 二阶平衡理论.
    但没有真正真正用编码实现过.
    故大学期间就想从事机器人开发, 像钢铁侠一样, 制造自己的机器设备.
    真正行从事的工作是智能物联网, 无人机,机器人相关行业

    工作

    第1阶段工作:

    高通平台 - Android手机电源管理 + BSP内核驱动开发

    工作内容:

    ​ 1.高通平台 + linux电源管理系统 – 工作无成就感,不感兴趣

    ​ 2.BSP内核驱动 – 难度大

    自我总结:

    ​ 不感兴趣 + 难度大 --> 工作没有成就感 --> 不喜欢此岗位

    掌握有用技能:

    1. kernel 配置编译, dts配置, kernel常用API,模块.ko加载
    2. git

    第2阶段工作:

    博通/瑞昱/联发科平台 - 网络路由器 - 网络协议-固件开发

    工作内容:

    ​ 1.基于SDK做二次开发, 适配品牌的网页主页功能,实现http后端请求

    ​ 2.固件集成开发

    ​ 3.运营商+客户 功能需求实现

    ​ 4.解决项目中的问题

    自我总结:

    ​ 1.基于方案成熟SDK做二次开发,只需定制路由器的网页主页即可

    ​ 2.小组长对技术要求较严,希望开发人员能够真正解决问题,而不是用规避方案暂时解决问题,期望bug不要被反复reopen,这个氛围环境比较适合新人

    ​ 3.能够解决问题,实现客户定制需求 --> 工作有成就感 --> 喜欢此工作

    掌握有用技能:

    1. gdb/gdbserver调试–>极大提高开发/调试效率,
    2. 网络协议: http/DNS/DHCP/VPN 等常用网络协议
    3. 网络命令工具:
      1. 网络诊断 ping/arp/diag/nslookup/traceroute
      2. 网卡配置 iproute ip link/address/route/tunnel,ethtool, ifconfig
      3. 网络文件上传下载 wget/curl/ftp/tftp/sshfs/scp
      4. tcpdump/wireshark抓取报文,sendip报文组包,ss/netstate本地网络连接状态,nload/ifstat网速查看,nmap网络发现,iperf网络带宽测试
      5. iptable防火墙,brctl网桥,tc网络整流限速
      6. wifi指令 wl/iwconfig/wpa
    4. 定位系统与程序问题能力:
      1. valgrind 定位内存问题
      2. strace 跟踪系统调用问题
      3. lsof 文件使用状态
      4. tcpdump抓取网络数据
    5. 网络服务配置搭建: 拨号相关服务DNS/DHCP/VPN/L2TP/PPTP/PPPOE,文件共享samba/cifsd/ftp/fttp/nfs,网站http/https,中间件消息服务MQTT

    第3阶段工作: 2022.10-至今

    英伟达NX /瑞芯微 RK3588 - 无人机/机器人 – 嵌入式-传感器-外设通讯-固件开发
    机器人产品对性能要求较强, 有性能强CPU, 大内存, 直接运行ubuntu系统, 需要的库和工具不用编译, 直接apt install 安装.
    50%和PC软件开发一样, 开发-调试软件效率极高.

    工作内容:

    1. ROS1/ROS2 机器人底盘 + 外设 + 传感器
      	1. IMU+轮速计+RTK+超声波+BMS电源+tof深度 等外设传感器,按析协解析数据,通过ros topic发布数据
      	2. 机器人底盘控制,并通过 ros /cmd_vel 中linear/vangular实现控制,给导航做路径规划
      	3. 保证整机的稳定运行,解决传感器各种数据异常
    2. RK3588 + 固件制作
    	1. rk3588 ubuntu20.04 + ros1 +依赖库 +系统工具 + 定制配置 的固件制作
    	2. docker arm64交叉编译
    	3. docker 交叉编译
    3. 其它功能
    	1. python flask 1.实现OTA升级 server/client 前后端,在线检查版本,下载服务端,更新固件功能; 2.网页控制底盘移动,网页采集图片数据。
    	2. python + opencv实现一个障碍物识别,标注的可视化程序
    	3. wifi STA/AP模式配置
    	4. frpc远程代理ssh,实现在线网络调试
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    自我总结:

    1. 开发板使用ubuntu系统,开发效率极高, 不像传统嵌入式,固件需要编译 + 打包 + 升级;sudo apt install 安装需要的开源库+工具,极大提高开发效率
    2. 使用python, 写小工具,测试用例,快速验证,语法简单,开发效率极高
    3. 学到了很多,实现很有有用的功能,工作很有成就感 --> 很喜欢此工作
    
    • 1
    • 2
    • 3

    掌握有用技能:

    1. vscode + gdb/gdbserver 极大提升C/C++ 调试、开发效率
    2. python语言:pip安装库,几行代码实现一个复杂功能;各种小工具,测试用例,脚本script,写代码原来可用如此快乐,如此简单
    3. vscode + python + pydebug 极大提升python开发、调试效率
    4. scons python语言的编译规则,替代cmake/make,极大提高编写C/C++ 编译、链接脚本
      1. make 处理字符串变量看不懂,云里雾里,不好调试
      2. cmake 语法自称一派,需要学习其独有的语法规则,处理字符串变量比make好很多
      3. scons python语法简洁易懂,跨平台(替换cmake跨平台),拥有python一样简洁的字符串处理语法
      4. 提升对gcc 编译、链接流程与选项功能:make习惯瞎写,编译选项混加链接选项;cmake默认关闭编译、链接流程。
    5. gcc编译、链接流程与选项,由于scons默认显示完整的编译、链接流程;还可以参考命令,自己手动修改命令编译,链接;故而实现下面功能
      1. scons完成ROS程序编译
      2. scons完成arm64 RK3588交叉编译
      3. cmake 各种变量/选项,对应的gcc选项
      4. cmake 完成arm64 RK3588交叉编译
    6. 传感器数据的实时性优化极度重要, 保证传感器数据稳定 --> 提高slam定位精度 --> 保证导航准确性 --> 整机自动效果的稳定性
    7. 快速阅读开源代码,由于熟悉gcc和gdb,故下载源码,编译debug版本的程序/库,使用gdb调试,可以快速定位问题,知道运行逻辑,实现原理

    工作小结

    1. 工作的正反馈 --> 提高工作激情

    2. 工作的负反馈 --> 产生消极厌恶情绪,或产生大的心里压力

    3. 实际工作,不可能让你100%从事自己喜欢的工作,如:

      1. 个人喜欢在linux下开发,不喜欢Android下的开发
      2. 个人喜欢机器人产品,能够让机器人动起来,并按指定规定动起来,就会有很大的成就感;
      3. 个人喜欢研发,不喜欢对接,或沟通; 但实际工作 40%确认需求, 20%编码, 40%调试迭代; 现在心态已放平和,对接沟通需求,和组员交流也是工作的一部分内容; 多沟通,减少返工,多交流,保证产品质量,项目产品真正落地交付,开发工作才有价值;
      4. 从事不擅长,不熟悉的领域,如MCU电机控制,蓝牙通讯,BSP内核驱动,算法图像定位导航; 因产品技术更新,人员变动/紧缺,就得去接手掌握一些新技术,新功能,玩成功能开发;放宽心态,向组织/领导表明 技术/工作 不熟悉,需要更多的实际调试开发.
  • 相关阅读:
    猿创征文 |【MySQL数据库一SQL 语句】
    分布式架构与分布式理论
    No hardware target is open (xilinx )
    谈谈我对云原生与软件供应链安全的思考
    vue入门
    网络请求流程简述
    机器学习——支持向量机原理
    数据结构系列-堆排序当中的T-TOK问题
    Blender中的4种视图着色模式
    两个链表的第一个公共结点
  • 原文地址:https://blog.csdn.net/u011326325/article/details/136625156