2 PERMANENT FULL-TIME POSITIONS
Terramera is actively seeking two Embedded Software Engineers to join our Robotics and Machine Learning Team. The successful candidate will contribute to the revolutionary solution as part of the world-renowned Soil Carbon program - aimed to bring together farmers and clean technology to turn climate change, economic crisis, and food insecurity into opportunities.
The Embedded Software Engineer must have strong low-level software experience and beginner to intermediate hardware technical background.
Strong analytical, problem-solving, and communication skills are essential, and the ability to deliver results in a rapidly evolving environment.
Why join us?
You will be joining a solid team involved in a variety of design applications that will challenge you and give you a broad engineering perspective.
In addition, you will be joining a team of experts who will push you to be your best, a team that is a core part of Terramera’s engineering business and is willing to make a difference in the world we live in and the way Agriculture is providing our food.
Design and develop embedded code for drones, autonomous rovers, robotics arms, and IoT devices while working on heterogeneous mixes of microcontroller and microprocessors boards, wired and wireless network communications, in-house and off-the-shelf sensors, power management boards, and actuators.
Reporting to the Senior Embedded System Manager, the Embedded Software Engineer will work closely with our Automated Systems, Machine Learning, GIS, and Data Engineering teams as part of our interdisciplinary workforce.
Develop embedded software in C / C++ and assembly for RTOS and / or bare-metal environments
Participate in the entire life cycle of development from planning to deployment and maintenance stages
Develop highly reliable embedded software for Autonomous platforms
Work closely with hardware and systems engineers to support board-bring up and design of control algorithms
Lead the development of a multi-architecture (Arm64, Arm32, Amd64) docker based CI / CD and OTA update using tools like Jenkins, Artifactory and Mender
Develop DevOps practices
Write software employing Python and C / C++ SDKs to enable functional, real-time systems that facilitate state-of-art research for the company
Lead the programming of multiple hardware platforms such as microcontrollers, microprocessors embedded into systems, and writing firmware
Explore and introduce new features, testing and verifying features, updating legacy software, and fault finding on the existing software stack
Research, investigate and identify new technology areas to enhance existing use cases or new product directions; re-evaluate the design and implementation of current source code
Design and develop solutions from concept to production; this requires detailing requirements and specifications based on product and system requirements, working in concert with project managers, technical leaders, and R&D groups of scientists and engineers
Create and execute software unit tests to verify design has been met; this includes simulated tests and debugging target hardware.
Design and implement IoT systems to optimize R&D in growth chambers and outdoor field experiments
Orient the technical choices of the PCBs designers around new technologies and new components
Analyze and enhance efficiency, stability, and scalability of system resources
Partner with our Hardware System Team and Machine Learning team to put platforms into production
Coordinate workflow on multi-disciplinary projects with the wider multi-disciplinary Research & Development team
Performs other related duties and tasks as required
Post-secondary degree in Computer Engineering, Computer Science, or related discipline
3 to 5+ years of relevant professional experience in embedded software development using the C / C++ language
Experience developing software using embedded SDKs and frameworks
Understanding of low-level software, micro-controllers, and middleware
Experience with hands-on development and troubleshooting on embedded targets
Experience interacting with embedded devices using methods such as Syslog, serial console, and SSH
Experience in one or more of the following areas : Linux kernel networking stack knowledge (Netdevice, SKB, IP Conntrack, OVS) Linux network device driver / data-path performance expertise Strong competence and experience in Layer 2, Layer 3 networking, QoS Network and / or application security expertise (L2 / L3 firewall, DPI, IDS, IPS) Experience in 802.
11 Wi-Fi systems, standards, and protocols. Development of ROS 2 Node for interfacing hardware to the ROS ecosystem Cluster technology like Kubernetes, Prometheus / Grafana, GlusterFS Experience with FreeRTOS or Zephyr
Proven knowledge of testing embedded systems
Experience in building custom distribution system with Yocto
Embedded microcontroller design experience, including ARM processors and DSPs
Experience with standard communication protocols (SPI, UART, I2C, CAN, USB)
Solid understanding of power management; and different types of memory, including RAM, ROM, and Flash
QUALITIES WE’RE LOOKING FOR
Aptitude for interdisciplinary collaboration
Highly conscientious with strong follow-through
Matured communication and critical thinking ability to influence and propose analytics strategies that challenge status quo thinking
Capable of performing research on best practices and communicating results to a non-expert audience
Able to apply domain knowledge to ambiguous and novel situations