Worker Type
Regular
Job Description
Summary
The Senior Staff Embedded Software Engineer has the opportunity to lead and develop a variety of innovative unmanned and robotic systems for multiple defense and commercial applications. The Senior Staff Embedded Software Engineer writes functional software for deployment on embedded devices and systems like aircraft and payloads and have the opportunity to test out those devices in flight test environments. This requires the engineer to design, develop, code, test and debug system software as well as analyze and enhance efficiency, stability and scalability of the software on particular devices. There is a mix of full life-cycle development as well as a need to use existing software code base to expand the capabilities to match specific program requirements.
Position Responsibilities
Writes and tests software to support integration of sensors and embedded processors into aircraft (such as autopilots, payloads, software defined radios or other functional components) or other robotic systems
Designs and implements software for prototypes and products using established AeroVironment and industry developed tools and practices. Ensure good configuration control and management of software
Leads in writing of system requirements, system test plans, diagnostic tools, and in validation testing of software. Assist with hardware selection and recommend processing, memory and storage needs of systems
Leads development of rapid prototyping and conceptual level testing and will require estimating time to develop software and scoping the depth of the development with project/program management to fit timeline and budget constraints
Works closely with other engineering disciplines. Focused on getting the job done
Leads and supports transition of development software to production environments and to certification. Participates in multi-disciplinary development teams
Develops proof of concept capability demonstrations. Conducts and supports design reviews
Contributes to AV's software development process in developing quality code
Works on significant and unique issues where analysis of situations or data requires evaluation of intangibles
Other duties as assigned
Basic Qualifications (Required Skills & Experience)
A BS degree in Computer Science/Engineering, Electrical Engineering, Aerospace, Mechanical Engineering or related field is required or equivalent combination of education, training, and experience
Minimum 12 - 15 years of experience years of relevant experience
Experienced trouble-shooting systems is required and is proficient with Python, C, C++11,C++ STL and/or OpenCL
Demonstrated knowledge of Visual Studio, Eclipse or similar IDE as well as defect tracking tools
Experienced working with common protocols such as RS-485, RS-232, CAN, I2C, SPI, USB
Demonstrated mathematical and analytical skills are required
Periodic travel will likely be required in support of testing equipment at approved flying locations
Periods of development may require long irregular hours around deadlines, weekends and some holidays and in field test environments
Other Qualifications & Desired Competencies
Advanced degree is preferred
Demonstrates competency in contributing to the design, coding, documenting and testing software
Experience with Test Driven Development (TDD) along with unit testing software
Understanding of automated build environments along with automated test and deployment
Demonstrated knowledge of object-oriented programming and multi-threaded design such as JIRA and source code control tools such as SVN, Bitbucket or GitLab
Experience with STM32 family of processors and working with RTOS systems (such as µC/OS, freeRTOS) on those processors
Experience using Video 4 Linux and modifying and compiling Embedded Linux systems
Experience developing drivers for Linux/ARM is required, familiarity with Robot Operating System (ROS) is a plus
Demonstrates electronics knowledge and use of lab…