ROS Software Engineer job opening with Solidus Technical Solutions:
Solidus is searching for a Software Engineer to design, develop, test, and integrate software modules and algorithms for autonomous ground vehicles. The group develops software and algorithms enabling unmanned air, ground, and maritime vehicles to operate in complex environments with reduced levels of human control and supervision.
Scope and Responsibilities:
- Domains: Autonomous systems; autonomous vehicles; artificial intelligence; autonomy; software development; software engineering; robotic perception and planning; Robot Operating System (ROS); embedded systems; self-driving cars.
- Own the development of ROS-based software modules that provide core autonomy capabilities for unmanned robotic ground vehicles. Write well-crafted, well-tested, and maintainable code.
- Analyze, document, and upgrade existing software modules to use the ROS2 software framework
- Leverage software engineering best practices to ensure code quality, such as creating units tests, participating in design and code reviews, and producing effective documentation.
- Work with roboticists and other stakeholders to build user stories, communicate progress and issues with the team, and coordinate integration activities.
- Integrate software modules within a large autonomy software library, create and execute integration-level tests in simulation, and support field testing on robotic hardware.
Considering candidates at the following levels:
- PhD plus 5 years minimum experience, or MS plus 8 years minimum experience.
- MS plus 3 years minimum experience, or BS plus 5 years minimum experience.
- BS plus 1 year minimum relevant experience.
- US Citizenship and ability to obtain a DoD Security Clearance
- Extensive programming experience in C++ or Python with a focus on embedded or “systems” applications in a Linux environment.
- Experience with the Robot Operating System (ROS) software framework and build system (catkin). In lieu of ROS experience, experience with the design and implementation of production-quality modular reusable software components using other publish/subscribe interface frameworks.
- Experience comprehending, using, and modifying large-scale software libraries and frameworks.
- In-depth experience with the application of software engineering best practices, such as writing testable code, creating unit tests, performing static code analysis, conducting code reviews, and producing design documentation.
- Knowledge of agile development practices and tools used for bug reporting, configuration management, and coordination across distributed teams.
- Ability to effectively communicate the elements and attributes of a design, approach, or decision at a high-level in written, verbal, and presentation formats.
- Ability to work effectively in a collaborative small-team environment.
- Git, C++ or Python
- Active Secret Clearance
- Robot Operating System (ROS) and ROS Version 2 (ROS2) software frameworks and build systems (catkin, ament, colcon).
- Data Distribution Service (DDS) middleware. Knowledge of DDS security features.
- Visual or physics-based software simulation systems, such as Gazebo, Unity3D, AirSim, or OpenAI Gym.
- Knowledge of autonomy, machine learning, and computer vision algorithms, data structures, and sensor data commonly used in autonomous vehicles. Examples include occupancy grid maps, Extended Kalman Filters (EKF), rapidly-exploring random tree (RRT).
- Demonstrated ability to build, test, and deliver robust autonomous vehicle software capabilities in complex real-world environments.
- Real-time computing, GPU-based computing (e.g. CUDA), or deep learning (e.g. TensorFlow).
- C++ and Python, ROS, ROS2, CMake, gcc