Our Tokyo Engineering team is changing gears to meet the growing needs of our customers - from a handful of robots to hundreds of robots; from a small team to multiple squads. The team works closely with some of the premier enterprise customers in Japan to build state-of-the-art robotics solutions by leveraging rapyuta.io, our cloud robotics platform, and the surrounding ecosystem. The team’s mission is to pioneer scalable, collaborative, and flexible robotics solutions.
Requirements
In this role, the Embedded Software/Systems Engineer will be:
- Working closely with robotic software developers in supporting new features, services, and releases
- Applying skills in robotic systems design, embedded software development, and general engineering principles to develop mobile robotic systems
- Assisting in developing device drivers for various sensors, actuators, memory units, and computational units
- Implementing intra and inter-processor communication pipelines on memory and computationally constrained devices
- Assisting in developing automation tools for our continuous integration framework
Minimum qualifications
- A bachelor’s degree in EEE, Computer Engineering, Computer Science, a similar technical field of study, or equivalent practical experience with an outstanding track record
- At least 1 year of experience in product development and/or supporting operations
- C and C++ programming
- Microcontrollers, or MCUs
- Real-time Operating Systems (RTOS)
- Device drivers, including Linux
- Linux operating system
- Communication Protocols
- Interface buses like I2C and SPI
- General-purpose input/output, or GPIOs
- Microprocessor technology, including the latest processors
- Software optimizations skills at the System on a Chip (SoC) level
- Understanding of design patterns and embedded system design patterns
- Debugging skills
- Ability to work with existing codebases
- Interrupt-driven design
- Assembly programming language
- Hardware test equipment: oscilloscope, logic analyzer
- Experience in or ability to learn communication protocols. Relevant protocols to have at least an understanding of include I2C, Serial Peripheral Interface (SPI), USB, General-purpose input/output (GPIOs), Controller Area Network (CAN bus), Recommended Standard 232 (RS232), one-wire, Recommended Standard 485 (RS485)
- Ability to read a schematic
- Understanding of data structures
In general, embedded systems engineers should have similar technical skills as embedded software engineers. But they should also have additional skills.
Additional technical skills an embedded systems engineering should have include:
- Deep experience with both hardware and software
- Understand design patterns and embedded system design patterns
- GNU Project debugger, including both local and remote debugging
- Design patterns
- Multiprocessor design
- Multi-subsystem issues
- Open-source software
- Wireless connectivity, including Wi-Fi and Bluetooth low energy (BLE)
- Unified Modeling Language
Preferred qualifications
- A Master’s degree in Computer Engineering, Computer Science, a similar technical field of study, or equivalent practical experience with an outstanding track record
- Python programming language
- Familiarity with Docker, CI/CD, ROS1, ROS2 and micro-ROS
- Participation in robotic competitions, e.g. RoboCup, DARPA Grand Challenge
- Skills in design for graphical user interfaces (GUI)
- Japanese language proficiency
Benefits
- Competitive salary
- Stock options
- International working environment
- Bleeding edge technology
- Working with exceptionally talented engineers
rapyuta.io
- RTOS
- Linux
- Linux
- I2CSPI
- GPIOs
- GNU Project
- Wi-FiBluetooth Low EnergyBLE
- UML
- Python
- DockerCI/CDROS1ROS2micro-ROS
- RoboCupDARPA Grand Challenge
- GUI