Software Engineering · Full-time
Ann Arbor, MI, USA
USD 125k-145k / year
Our team has spent decades building airborne and spaceborne imaging instruments. They spot wildfires and pollution from the air, and we are building one for NASA to study the weather on Mars. That research continues, and it now feeds our first commercial products.
We are hiring an embedded software engineer to build and improve the software that runs our instruments. It controls the cameras and motors, time-tags images from GPS, and passes messages between the processors on board. It has already flown on aircraft. Next it goes to space, where reliability requirements are much stricter.
We are also integrating new components and changing the hardware architecture. You will help set the software direction for this work.
You will report to the CTO and be the primary developer on a small team, working with the engineer who designed the software.
The same software runs all of our instruments. In your first year, we expect you to bring up the new boards, get the software ready for pilot units of our commercial products, and make solid progress on the Mars instrument.
Shape the embedded software architecture and keep its documentation current
Write code another engineer can read, review and maintain
Write requirements and tests for the software, and add the diagnostics and fault handling needed for space use
Add features in real-time C++ for camera control, motor control, image processing and MQTT messaging
Help with the hardware redesign: review board designs, bring up new boards, and do hands-on wiring in the lab
Support lab and flight tests, and diagnose problems on the bench
6+ years writing embedded C++ on Linux and/or microcontrollers
BS in Computer Engineering, Electrical Engineering or Computer Science, or equivalent experience
Designing or substantially reworking the architecture of an embedded codebase
Aerospace, automotive or medical device software, or work at a small company or startup, is a plus
Finding timing problems in hard real-time, state-machine-driven code and in soft real-time embedded Linux
Writing software that drives hardware: cameras, motors, sensors and the buses between them
Designing message-based software across several processors
Debugging on target hardware with GDB, an oscilloscope and a logic analyzer
Writing automated unit and integration tests for embedded software
Reading schematics and reviewing board designs
Working with MQTT, CAN motor control, GenICam or UVC cameras, or GPS/PPS time-tagging
Automating hardware-in-the-loop tests in Python
Writing software to high-reliability standards, such as for space
You make architecture decisions on the software, with the freedom to decide how the work gets done. We settle technical questions by discussing them openly, and we want you to push back. We offer profit sharing after your first year, paid time off, federal holidays, a flexible schedule, and dental and vision coverage.
We do not currently offer health or retirement benefits; however, we are planning to offer these benefits in the near future as we continue scaling up.
Based in Ann Arbor, Michigan. Hybrid: on site as much as the lab and hardware work needs. Travel to field and flight tests is possible but not expected. Send your resume and a few sentences about a timing or hardware bug you tracked down to careers@xiomas.com.
This role involves technology subject to U.S. export controls (ITAR and/or EAR) and requires U.S. person status: a U.S. citizen or national, lawful permanent resident, asylee, or refugee. Any offer is contingent on confirming U.S. person status. No security clearance is required.
Xiomas is committed to providing equal employment opportunities to all individuals, regardless of any protected status, including veterans and individuals with disabilities. To request a reasonable accommodation during the application process, contact careers@xiomas.com.