Lead Software Engineer - Firmware
Austin-based Apptronik (https://apptronik.com/) is developing world-class robots to do the work humans don't want to do. We believe robots have the potential to reshape our existence and we are pushing the limits to make this a reality. We are a full-stack robotics company focused on building innovative, forward thinking products that solve major real-world problems.
Our culture emphasizes passion, creativity, and collaboration to help us overcome existing technological barriers in the industry to create truly innovative technologies. We are growing quickly with a vision to build and deliver products to the world with a continuous emphasis on fielding systems and iterative development.
We’re seeking a Senior Firmware Engineer with an interest in developing flexible and robust software for robotic systems. As a Firmware Engineer at Apptronik, you will be responsible for developing and maintaining the firmware running on our embedded actuator controllers. This includes design, implementation, optimization, and testing of sensor drivers, comms protocols, filters, and real-time feedback control systems. Additionally, you will assist with the development and execution of bringup processes, system integration, validation, and debugging embedded controller and actuator hardware as it comes online. The embedded actuator controllers are a core component enabling Apptronik robots, including humanoids and mobile manipulators, to perform useful labor tasks across a variety of different applications.
Requirements
- BS/MS/PhD in Computer Science, Computer Engineering, or equivalent experience
- 5+ years of software engineering experience (excluding academic training) developing production-grade embedded software in C/C++
- Experience designing and developing reliable software for embedded devices, edge applications, or robotics with critical, real-time performance requirements
- Experience testing, validating, and managing firmware deployments for fielded products
- Very comfortable with C and C++ development in a Linux environment
- Familiarity with Git / similar version control systems
- Familiarity with software testing, profiling, and optimization methodologies and tools
- Familiarity with collaborating on a team using an Agile process, including participating in sprint planning, design reviews, and code reviews
- Strong communication skills and willingness to learn robotics concepts as needed
Nice to Have
- Experience working with robotics technologies such as:
- Communication protocols (SPI, EtherCAT, Ethernet, UART, CAN, etc.)
- Actuation, motors (BLDC), motor controllers, field-oriented control
- Sensing (incremental and absolute encoders, analog sensors, IMUs)
- Real-time feedback control, especially implementing and debugging on hardware
- Strong background in digital signal processing, linear systems, estimation, and/or control theory
- Experience with BLDC FOC motor control concepts, Park/Clarke transformations, current control
- Knowledge of real time operating system concepts and prior experience with an RTOS
- Understanding of distributed computing / multi-threaded / multi-process design and debugging concepts
- Experience with industrial control systems, industrial robotics, or process automation
- Familiarity with safety critical embedded system design, e.g. ANSI/RIA R15.06
- Knowledge of modern C++(14/17) best practices
- Comfortable scripting in Python / Bash
- Experience with ROS
Qualities
- Creative, curious, analytical, and disciplined
- A passion for building things. Fellow tinkerers are encouraged to apply.
Perks
- Competitive base w/ benefits
- Highly motivating equity incentive package
- Hybrid work schedule (i.e. work from home in some capacity)
- Flexible work hours policy
- Professional development opportunities
- Unlimited Paid Time Off (PTO)
- 401k plan