Software Engineer

Title:  Software Engineer C++, Linux, ROS
Richmond Hill, Ontario
Department:  Applanix

Position and Orientation Systems (POS™) by Applanix have become the world's industry-standard for airborne, land, marine, and indoor mobile survey operations.  With global reach, unequaled engineering excellence, and worldwide 24/7 customer support, Applanix leads the world in high-productivity in-motion surveying, direct data georeferencing, and robust mobile mapping. 
Applanix technology is now powering new revolutions in both autonomous vehicle technology and mobile mapping in GNSS-denied spaces. 
The Software Engineer’s primary duty would be to engage in the productization of perception solutions intended for the Applanix Autonomy Development Platform. Major components of this platform include the Applanix POS, Applanix’s lidar navigation solution, and interfaces to the above components. Experience working in cross-platform environments (i.e., Linux-based and Windows operating systems), and programming proficiency in C++ are mandatory skillsets. As part of the productization process, the engineer would need to work on tasks including but not limited to the defining the application programming interface, drivers for parsing live data from lidar sensors, creating Robot Operating System (ROS) wrappers for interfaces and drivers, encryption and obfuscation of Applanix’s software using existing third party tools, enforcing coding and documentation standards, unit testing and regression testing as part of a continuous integration framework, and maintenance of related software repositories. The candidate would work closely with a team of roboticists at Applanix and could be given opportunities in algorithm development as a secondary responsibilities depending on candidate’s working or academic background on vehicle navigation and mobile robotics. 
  • Engineer software components (e.g., API, drivers, UX) for the Applanix Autonomy Development Platform
  • Code review for improving algorithm implementation efficiency
  • Enforcing coding standards and documentation
  • Software encryption and obfuscation for product distribution
  • Unit testing and regression testing for navigation system performance
  • Maintenance of repositories and continuous integration
  • Bachelor’s Degree or Higher – in Computer Science, Computer Software Engineering, or related fields. 
  • 3+ year experience in software development and productization
  • Expertise programming in C++. Working experience with any of the following items would be beneficial:
·         Creating multithreaded programs 
·         Socket programming for communication 
·         Creating effective interfaces 
·         GPUs 
  • Programming experience using Python would be a strong asset.
  • Ability to generate effect unit tests for software components and setting up regression testing systems
  • Experience in setting up continuous integration (CI) and maintaining code repositories
  • Familiarity with Robot Operating System (ROS) would be an asset 
  • Possess strong interpersonal and communication skills and being a team player
  • Enthusiasm towards autonomous vehicle technologies
Our Company
Trimble is transforming the way the world works by delivering products and services that connect the physical and digital worlds. Core technologies in positioning, modeling, connectivity and data analytics enable customers to improve productivity, quality, safety and sustainability. From purpose built products to enterprise lifecycle solutions, Trimble software, hardware and services are transforming a broad range of industries such as agriculture, construction, geospatial and transportation and logistics. 
Applanix is committed to an Accessible workplace and provides an Accessible recruitment process. Please note that we can accommodate disabilities upon request. Please let us know if you require any accommodations. Only those applicants selected for an interview will be contacted.  

Want to apply later?

Type your email address below to receive a reminder

Apply to Job

ErrorRequired field
ErrorRequired field
ErrorRequired field
ErrorRequired field
ErrorRequired field
ErrorRequired field
ErrorRequired field
ErrorRequired field
ErrorRequired field