Location: Natick, MA.
Job type: Full-time.
Our client is an American manufacturer of machine vision systems, software and sensors used in automated manufacturing to inspect and identify parts, detect defects, verify product assembly, and guide assembly robots.
This position is in the Algorithm team, which is responsible for designing and developing the most sophisticated industrial barcode readers in the world.
The team focuses on developing advanced vision algorithms tailored to custom hardware and is responsible for optimizing the speed and robustness of these readers.
The Algorithm team is seeking a talented developer with creative and strategic approaches in developing high performance algorithms on current and future hardware platforms. In this role, the successful candidate will design, develop and test software modules in to achieve high throughput in time critical real-time applications and enable demanding vision applications. These embedded systems are complex vision systems with integrated optics, lighting, networking, sensing and computing.
- Design, implement and test software modules of high performance embedded vision systems. Examples include but not limited to high bandwidth data management, inter-core assignment and synchronization, asynchronous event handling, etc.
- Optimize and integrate algorithm modules to leverage computing resource in heterogenous multi-processor architecture. Benchmark overall system performance, identify and address bottlenecks.
- Develop testing and debugging infrastructure to allow for troubleshooting in the embedded software environment.
- Create, modify, and maintain software toolchains for development team.
Requirements / Skills:
Passionate about developing embedded vision systems to solve real world vision problems.
- Strong C/C++ programming skills required.
- Strong debugging and problem-solving skills required.
- Strong embedded programming experience (e.g. ARM NEON instruction set, FPGA HLS) required. Experience with embedded vision systems is a plus.
- Experience with multi-processor embedded systems desired.
- Experience with professional team software programming projects (development processes, source code control, formal bug tracking, etc.) required
- A positive, ‘glass half-full’ personality who is always looking for areas of improvement.
- Creative, motivated, and looking to work hard for an aggressive growth company.
Minimum education and work experience required:
- MS or PhD from a top engineering school in EE, CS or equivalent.
- 2-5 years relevant, high tech experience