The Sr. Software / Firmware Engineer is a member of the underwater robotics development team. This position requires an in depth understanding of computer software architecture, firmware best practices and electronic control systems. Projects include C#-VS.NET, C++ Embedded Linux, GUI Qt Widgets, and Arm / PIC / AVR programming. Assignments include Windows/Linux Applications, Multi-threaded programs on RTOS, or C/C++ state machines on bare metal. All projects rely heavily on experience with Ethernet and serial communications such as I2C, RS232/RS485, and SPI.
Essential Duties and Responsibilities include the following. Other duties may be assigned.
- Development and implementation of software architecture using Agile methodologies.
- Create Software Requirement Specifications, UML diagrams, and flowcharts.
- Implement designs based on Software Design Patterns, Object Oriented Design, State Machine Design.
- Robot Operating System (ROS), RTOS, Embedded Linux and Bare Metal C/C++ programming.
- Development of Ethernet communication stacks using TCP and UDP for broadband communication systems.
- Development of Digital Filters, and implementation of vector math sensor fusion for IMU GPS aided navigation.
- Documentation of software interface specifications and module implementation.
- Use of software project management systems for coordination of development efforts among team members implementing revision control, and code release.
- Writing Code, testing, documentation and re-factoring.
- Use of firmware development tools: Compilers, In-Circuit Emulators / De-buggers, Data Analyzers, Logic Analyzers.
- Taking a project leadership role within a small work group consisting of firmware engineers, electronic engineers and outside consultants.
- Development of test cases for Software Validation and Verification testing.
- Technical support for the sales and production test engineering group.
To perform this job successfully, an individual must be able to perform each essential duty satisfactorily. The requirements listed below are representative of the knowledge, skill, and/or ability required. Reasonable accommodations may be made to enable individuals with disabilities to perform the essential functions.
- Bachelor’s degree in Computer Science, ElectricalEngineering, Physical Science or other equivalent discipline. A Master’s degree is a plus.
- Minimum 8years of directly related experience.
- Experienced with Visual Studio.NET- C#, C/C++, MPLABX, KEIL (ARM) Compilers, Linux & Qt.
- Knowledge of software management and revision control software including subversion.
- Experienced with embedded Communication: Ethernet, USB, SPI, I2C, CAN, RS-485 and Asynchronous Serial.
- Use of firmware development tools: Compilers, In-Circuit Emulators / De-buggers, Data Analyzers, Logic Analyzers, Wireshark, IPERF.
- Use of electronic test equipment such as Oscilloscopes, Function Generators and DVMs.
- Motion control design experience a plus (digital control, power, feedback) .
- Working knowledge of broadband communication systems including GB Ethernet and VDSL using fiber optic and copper transmission media.
- Strong analytical and applied math skills are required.
- An engineer with a background or interest in robotics is ideal in this position.
- Must possess U.S. citizenship or be a "U.S. Person". (A U.S. Person is defined as a person who is a lawful permanent resident “Green Card holder” as defined by 8 U.S.C. 1101 (a)(20) or who is a ”Protected Individual” as defined by 8 U.S.C. 1324b(a)(3).)
Requisition ID 2017-4399