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.
In this role, the Embedded Software 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 mobile, memory- and computationally-constrained devices
Assisting in developing automation tools for our continuous integration framework
Requirements
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
- Expertise in C/C++
- Fundamental understanding of real-time embedded systems and control architectures
- Familiar with one or more CPU instruction sets, in particular ARM Cortex-M processors
- Familiar with at least one RTOS
- Familiar with Linux kernel, peripheral driver, operating system development, POSIX APIs, and middleware development
- Good understanding of microprocessor internals (mostly the registers)
- Understanding of memory regions and their uses (heap, stack, IVT, code)
- Understanding of the different kinds of memory (RAM, ROM, Flash), the differences between them and how they are read, written, accessed
- Ability to use a debugger to perform at least simple operations such as setting breakpoints, single stepping, examining variable values, examining memory, examining registers
- Ability to read and understand datasheets, and produce driver code for a given device based on the information contained in its datasheet
- Native Level Japanese language proficiency
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
- Proficient with Python
- Familiarity with Docker, CI/CD, ROS1, and ROS2
- Experience debugging complex distributed or multi-CPU systems
- Proficient programming and debugging experience in assembly and bare-metal C/C++
- Ability to read and understand schematics
- Ability to effectively use a multimeter, Oscilloscope, and Logic Analyzer
Benefits
- Competitive salary
- International working environment
- Bleeding edge technology
- Working with exceptionally talented engineers
rapyuta.io
1/
C /C++
1CPUARMCortex-M
1RTOS
Linux kernelPOSIX API
IVT
RAMROM
PythonDockerCI / CDROS1ROS2
CPU
C/C++