Job Desc
Background:
We are a pioneering robotics company at the forefront of technological innovation in mushroom harvesting. Our mushroom harvesting robot solves a critical labour problem in the mushroom-growing industry. Our team is comprised of passionate individuals who thrive in a dynamic, collaborative environment where innovation is the norm. As we continue to grow, we are seeking an exceptional Senior System Software Developer to join our team.
Team Focus and Goals:
We need experienced developers in a variety of software roles to help take our farm-proven robotics products to market. The Senior System Software Developer – Computer Vision is a critical team member responsible for the development, integration and configuration of the on-robot software services that supports our Machine Learning/Deep Learning vision models.
Responsibilities Include:
- Collaborate in an agile software development environment with Developers, Designers, and Project Managers.
- Fuse output of multiple vision Machine Learning models using OpenCV.
- Use your expertise in debugging C++ code on Linux platforms to identify and resolve complex technical issues efficiently.
- Design, develop, and maintain software applications that leverage middleware messaging services for seamless communication between distributed systems.
- Collaborate with ML/DL engineers to integrate vision models into the robot’s software ecosystem, ensuring seamless operation and real-time performance.
- Develop and maintain APIs and services for on-robot vision processing.
- Optimize existing computer vision algorithms for speed and accuracy.
- Work closely with hardware teams to tailor software solutions for specific edge devices and industrial PCs.
- Naturally build upon the work of others, especially with respect to leveraging Open-Source software.
- Provide technical leadership and mentorship to junior developers, guiding them in software design and coding standards.
- Conduct code reviews to ensure code quality, adherence to coding standards, and the implementation of best practices.
Skills And Qualifications Include:
- Product-focused creative thinking.
- Bachelor’s degree in computer engineering or computer science or equivalent experience.
- 5+ years of professional software development experience.
- Experience in building containerized microservices with Docker.
- Experience with developing and deploying software on robotic systems or embedded platforms.
- Proficient in programming languages such as C++, Python, and experience with computer vision libraries (e.g., OpenCV, TensorFlow, PyTorch), as well as deep knowledge of CUDA for GPU programming and ONNX for model exchange.
- The ability to visualize the interactions and interfaces between software and electro-mechanical systems.
- Experience with Git and the Linux command line.
- Strong proficiency in middleware messaging services, such as: Gazebo Transport, ZeroMQ.
- Familiar with Protocol Buffers.
- Expert debugging skills, for example: with Valgrind, gdb and gdbserver.
- Excellent problem-solving skills and the ability to work as part of a dynamic team.
This position is to relocate to Salmon Arm in British Columbia, Canada. Start remote and then relocate.
ription…