Symbotic is looking to solve the problem of warehouse automation and robotics by designing, developing, and supporting a functional safety system for increased efficiency, speed, and flexibility.
Requirements
- Experience with Object Oriented design using C++. C/C++ coding skills and design pattern, suitable for real time environments.
- Experience with software process and version control tools.
- Familiarity with networking protocols and control systems.
- Strong background in Linux shell scripting (especially Python and bash), familiarity with grep, regex and parsing; and file system command line utilities.
- In-depth knowledge of real-time operating systems (e.g., VxWorks, FreeRTOS, Sciopta), threading and communication issues related to RTOS (for mobile robotics or control systems strongly preferred).
- POSIX multi-threading (thread priority, thread arbitration), synchronization mechanisms (mutexes, semaphores), shared memory, event and signal handling, and inter-process communications.
- Low level communication protocols and sockets implementations, UDP, TCP/IP, TCP/NFS, and related alignment and packing issues.
Responsibilities
- Design and develop software strategies for near real time environments in C++.
- Implement object-oriented software using up-to-date programming methodologies.
- Implement, document and maintain real-time embedded code and shell scripts (Bash, Python).
- Understand, document and maintain existing code (C/C++, Python, etc).
- Support system testing of components and subsystems.
- Troubleshoot system problems in production or design by investigating issues related to product performance or production difficulties, primarily through log analysis.
- Evaluate and process engineering change requests.
Other
- Bachelor's degree in a related engineering discipline (i.e., Computer Science/ Engineering, Mathematics, Electrical Engineering, etc.).
- Minimum of 5 years of professional experience developing real-time embedded software and device drivers.
- Up to 10% travel required.
- Ability to work in a fast-paced environment and support unscheduled events.
- Expert-level communication (oral and written) and documentation skills; must be comfortable explaining complex software systems and programming concepts.