从事软件开发十多年,主要用c++、c, Java开发,熟悉Linux操作系统,ucosII,FreeRTOS实时操作系统。曾经在ARM A9,M0/M4 芯片架构下做研发工作,熟悉I.MAX6D/6Q平台,STM32平台,LPC4xxx 平台,DSP28335 以及28377D芯片的开发。UI开发主要使用Qt工具,可使用QWidget、QML做开发工作。移植过Canopen。基于UWB方案实施室内定位。开源工业以太网协议EtherCat到MCU,算法方面主要从事过:机械臂正逆运动学算法,多机器人调度以及路径规划算法,PVT方式控制elmo驱动器。
以下提及内容都是我自己亲自参与实现的,不包括整个项目组的工作。
1.长城Haval系列汽车全液晶仪表开发,硬件采用MPU(ARM A9)+MCU(V850 M0/4)架构,软件基于Ubuntu系统开发。主要负责MPU一侧汽车报警的探测与显示。汽车传感器采集到的数据通过MCU上的实时操作系统QNX串口传输到MPU一侧,MPU根据报警的不同级别分别作逻辑处理。
2.主导并实现AGV机器人控制终端,基于I.MX6D平台+Qt+Ubuntu开发,通过WIFI与AGV机器人建立通信机制,采集机器人的传感器信息,控制机器人的移动,导航,以及开门关门...,从而在展会上令参观者可以随意操作机器人。
3.主导并实现机械臂终端控制器,基于CPU+DSP硬件架构开发,CPU一侧主要基于X86+Qt+Ubuntu平台开发,DSP芯片使用28377D,核1主要采集CPU一侧发送过来的串口信息,主要包括六轴角度,以及经过正逆运动学运算需要发送给各驱动器的CAN数据。核2主要负责做正逆运动学运算。CPU一侧主要负责以下工作:3.1 Yacc+Lex机械臂编程语言解释器。 3.2 Qt实现的UI界面 3.3与DSP的通信协议实现 3.4 机械臂操作控制逻辑功能实现,主要包括通过程序示教机器人实施抓取,移动,放下等系列运动。
3.5 触摸屏驱动的移植,以及按键驱动的编写。
4. 舒尔公司ANIUSB音频路由项目开发。基于ARM M0/M4 +FreeRTOS 开发音频管理功能模块,基于公司的音频网络协议将网络上不同Micphone输入的音频引导到对应的网络上的Speaker设备上,并且ANIUSB设备通过POE接入网络后可以自动被网络上的其他设备探测到。Mute Sync功能模块的实现,勾选此功能选项,可以通过网络上任意的Controller控制设备(ANIUSB、P300)来Mute/Unmute 网络上的被动控制的设备(Micphone,Speaker)。
5. 多机器人调度/路径规划系统,X86+Windows+Qt,UWB 定位系统可以往MQTT的一个topic里面实时广播标签tag的位置,从而系统可以利用此标签的位置给出机器人的目标点,在有多台机器人在网络中的情况下,要通过合理的路径规划避免机器人在窄通道相撞,或者相互阻塞的情况发生
角色 | 职位 |
负责人 | 高级嵌入式软件工程师 |
队员 | 后端工程师 |