Software Engineer

Date:03 29, 2018

To apply, send resume and if applicable, a portfolio of your work to

 

Job Description
1. Implement robotics algorithms.
2. Integrate libraries and other software with robotic systems.
3. Ensure software-related functions are stable and reliable.


Position Requirements

1. Experience working in Linux development environments.
2. Strong software engineering skills and capable of adhering to particular coding styles.
3. Experienced working with Git.
4. Very skilled with C++ and knowledge of new standards such as C++11 and C++14. Should be familiar with following functions:
- Pointer and smart pointer
- Memory alignment and memory management
- STL, Boost
- OOP
- C++ templates
- Linux management tools; able to write some simple shell scripts
- Toolchain and development environment setup; able to write and modify Makefiles

 

Preferred Qualifications
- Familiar with robotics
- Familiar with robotics software frameworks and libraries such as ROS, Moveit, Gazebo, OpenRave, KDL, PCL, OpenCV, etc.
- Familiar with template meta-programming and generic programming
- Familiar with functional programming
- Familiar with some machine-learning methods
- Familiar with compilation pipelines
- Skilled with compiler options
- Skilled with Emacs, Vi, or vim
- Familiar with GDB and debug tools
- Familiar with a dynamic programming language such as Python, Lua, Scheme, etc.
- Familiar with network programming, multithread programming, or parallel programming such as CUDA, MPI, OpenMP, etc.
- Familiar with OpenCL
- Familiar with CPU instruction set optimization (SIMD, AVX)
- Involvement in open-source coding projects
- Programming/robotics blogger