Software Engineer (Robotics)
Petra's mission is to save money, property, and lives by moving utilities underground. The company is developing technology to efficiently and safely bore through any geology. Petra's innovative technology is faster and more efficient than conventional tunneling methods, making small-diameter infrastructure economically viable.
The Robotics Software Engineer will be a part of the product development group, consisting of Robotics, Mechanical Engineering, and Manufacturing. The primary function of this role is to develop software solutions for controls, interfacing, data communication, and data logging/querying.
You are a self-starter and can tackle challenges in a fast paced, high aptitude, technical working environment. You are enthusiastic about showing your work and collaborating with fellow team members. You are able to adapt and develop quick solutions when one is not readily available. You are skilled in troubleshooting test set ups and wiring issues. You embody a culture of safety and grow that culture within the organization.
- Develop software for monitoring autonomous performance, perception, robotic controls and actuation for deployment on microcontrollers, SOCs, and linux/windows machines.
- Develop user interfaces, algorithms, and communication channels for real-time performance.
- Work with various communication protocols such as serial, TCP/IP, modbus, SPI, CAN, I2C, SBUS, etc.
- Set up databases and develop nodes for populating databases from real-time data generated by sensors and users.
- Create and maintain documentation for robotic systems.
- Work within the robotics team and teams of other disciplines.
- Develop and maintain safety-critical robotic software.
The ideal candidate will have most, if not all, of these requirements:
- B.S or M.S in Robotics, Computer Science, Mechanical Engineering, Electrical Engineering, or equivalent experience.
- 3+ of industry experience in developing production robotics software.
- Fundamental understanding of robotics concepts in perception, localization, planning, controls, and communication.
- Ability to write clean, well-tested, and efficient C++ and Python3 code.
- Strong software fundamentals such as data structures, algorithms, and object oriented programming.
- Familiarity with Git, CI/CD pipelines, build systems, unit testing, and code reviews.
- Experience in developing software in Linux environments.
Bonus Skills & Experience
- Prior experience in working with autonomous systems such as self-driving vehicles, drones, mobile robots, and robotic arms.
- Familiarity with ROS or similar publisher/subscriber middleware.
- Experience in bringing up and debugging new hardware.
- Experience in firmware development for embedded systems.
- Experience in developing software infrastructure tools and maintaining CI/CD pipelines.
- Contribution to the open-source community and projects that we can review.
- The position may require extended hours and weekend work.
- Able to travel domestically for short and extended trips as needed. Up to 50% travel
- Will sometimes be working directly with hardware on the floor and will have to be comfortable with heavy lifting, stooping, bending, and standing
- Competitive salary and equity
- 401K plan
- Employer-sponsored health, dental and vision insurance
- Healthy lunch and snacks provided
- Monthly cell phone reimbursement
- Paid holidays and flexible PTO
- Relocation costs negotiable
Equal Opportunity Employer
Petra is an Equal Opportunity Employer; employment with Petra is governed on the basis of merit, competence and qualifications and will not be influenced in any manner by race, color, religion, gender, national origin/ethnicity, veteran status, disability status, age, sexual orientation, gender identity, marital status, mental or physical disability or any other legally protected status.