Rich Schupbach

ADAS/Autonomous Driving

Introduction

I spent roughly 14 years in software development at General Motors. I worked in the areas of body controls, propulsion system controls, and ADAS.

In my most recent role at GM, I was part of the Software Architecture team responsible for Super Cruise and CoPilot. When I joined the team in 2017, Super Cruise was already mature and the team was planning to re-use much of the IP for CoPilot, an emergency braking system deployed in GM’s first autonomous vehicle, headed by Cruise Automation. I was assigned to architect software re-use for CoPilot.

ADAS at GM

As a Software Architect in ADAS I worked at a system level on things like:

  • Assigning CPU cores to meet ASIL requirements
  • Choosing software components to meet feature requirements
  • Software component decomposition

I also worked closely with software component owners in areas like Sensor Fusion and Vehicle Path, to learn feature functionality.

Forum discussion

Both Super Cruise and CoPilot use GM’s 3rd generation External Object Calculation Module (EOCM3), which makes use of GM’s Global B system definition. AUTOSAR is used as the basis for Global B. I gained a lot of experience with AUTOSAR. I became familiar with the RTE strategy and many of the interfaces associated with it.

Forum discussion

GM Tools

Most of my software development assignments at GM involved hand-coding C for embedded applications. I also modified Simulink models in response to engineering change requests (CRs).

The tools I used at GM include:

  • MATLAB/Simulink
  • dSPACE ControlDesk
  • ETAS/INCA/MDA
  • IBM Rational Tools (DOORS, Rhapsody, Synergy)
  • RiBeTT (unit testing)
  • Lauterbach (in-circuit emulator)
  • Vector Tools (CANoe, CANalyzer, CANape)
  • ASPEN (Interface management)
  • NeoVI (CAN)
  • CPP Unit (unit testing)
Forum discussion
Forum discussion

The EOCM is heavily dependent upon serial communication. It communicates via CAN with various sensors (e.g. LRR, SRR, Cameras) and controllers (e.g. ECM for propulsion, EBCM for braking, EPS for steering). One of my responsibilities was using VECTOR CANoe to locate available bytes/bits in existing messages for new signals and modifying build and parse functions in embedded C source code.

Forum discussion

Other Software Development at GM

I also have experience developing low-level firmware and software, for such things as interrupt vector tables, timers, external interrupts, interrupt service routines, watchdog timers, bootloader, memory manager, and the Signal Processing Engine (SPE) of various Freescale microcontrollers.