The Software Engineer III (Embedded) has the opportunity to develop a variety of innovative unmanned and robotic systems for multiple defense and commercial applications. The 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 lifecycle development as well as a need to use existing software code base to expand the capabilities to match specific program requirements.
- 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
- Assists in writing of system requirements, system test plans, diagnostic tools, and in validation testing of software. Assists with hardware selection and recommend processing, memory and storage needs of systems
- Development will often support 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
- Effectively provides development updates and estimate milestone dates to help track progress and ensure project requirements are met on schedule
- Trouble-shoots complex systems from a software perspective with hardware diagnostics required. Supports flight test operations.
- 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 support design reviews
- Works on complex issues where analysis of situations or data requires an in-depth knowledge of variable factors. Exercises judgment in selecting methods, techniques and evaluation criteria for obtaining results
- Other duties as assigned
U.S. Citizenship is required. Must be willing to work on government contracts and have ability to obtain security clearance
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 of 5 - 8 years of relevant experience
- Experienced trouble-shooting complex systems is required and is an expert 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.
- Experience with STM32 family of processors highly desired and additional experience working with RTOS systems (such as C/OS, freeRTOS) on those processors is desired
- Experience using Video 4 Linux and modifying and compiling Ubuntu Linux Kernels is desired
- Experience developing drivers for Linux/ARM and Robot Operating System (ROS) is desired
- Experience working with Ardupilot or PX4 open source autopilots desired
- Hands on design/build experience is desired; UAV or R/C aircraft or other lightweight miniature robotic systems
- Demonstrates effective interpersonal and communication (written and verbal) skills
- Demonstrates strong listening, questioning, clarifying and summarizing skills to effectively communicate in one-on-one and small group settings.
- Able to excel in a fast-paced, deadline-driven environment, where small teams share a broad variety of duties
- Displays strong initiative and drive to accomplish goals and meet company objectives
- Takes ownership and responsibility for current and past work products
- Is committed to learning from mistakes and driven to improve and enhance performance of oneself, others, and the company
- Focuses on teamwork and puts the success of the team above one's own interests
- Ability to work in an office and R&D environment (Constant)
- Required to sit and stand for long periods; talk, hear, and use hands and fingers to operate a computer and telephone keyboard (Frequent)
Associated topics: .net, algorithm, backend, back end, c++, java, php, sde, sdet, software programmer