BMW TechWorks
Remote Jobs
1 Jobs
Role Description Software-in-the-Loop testing is a state-of-the-art technology and an essential part of the software delivery chain. Our team provides a “Virtual Car” to support ADAS development for our feature teams. We develop and maintain the simulation components required to simulate the ADAS stack, such as low-level and high-level sensor models, restbus components, and the vehicle model. The role includes: - Designing and evolving the software architecture of simulation components. - Creating new components and adapting existing ones. - Supporting the integration of the ADAS stack in close collaboration with other teams. - Making adaptations to the simulation framework, which acts as the integration layer between environment simulation, models, and the BMW function stack. - Refining requirements and driving the further development of features and infrastructure for the “Virtual Car”. Qualifications - B.Tech (or preferably M.Tech/PhD) in Informatics, Electrical and Computer Engineering, Robotics or a related subject. - At least 3 years of extensive professional experience in the field of software development mainly with Embedded C++. Experience with Python is an added value. - Experience in automated driving software: Behavior Planning, Motion Planning, SAE Level2-4 Functions. - Experience in middleware, vehicle dynamics and coordinate transformations. - Experience in SW development tools and CI systems (e.g. Git, Bazel, Zuul). - Understanding of concepts and practical experience in software engineering, modelling, modern C++ (11, 14 or 17) and design patterns, as well as clean code and documentation. - Proven experience with test driven development. - Ability to Review Code fulfilling automotive SW quality standards e.g. MISRA. - Independent work and team and communication skills. Requirements - Development of C++ tooling software for closed-loop reprocessing, bug fixes, performance optimizations and validation of the tooling software. - Deep validation of the virtual software behavior versus the real-world software behavior. - Identification of differences between virtual and real-world behavior and derivation of tooling improvements. - Apply best practices including optimal algorithms as well as comply with the coding standards. - Ownership of the assigned activities and ensure timely deliveries including documentation. - Alignment of requirements, changes and roadmap with stakeholders to deliver complex and successful solutions.