RC Car ML Model Development with an Ouster OS1 Lidar

The purpose of this project was to develop a Machine Learning model to enable an RC car to autonomously navigate a race track using an Ouster OS1 lidar sensor as the primary sensor input. The model is an end-to-end Convolutional Neural Network (CNN) that processes intensity image data from the lidar and outputs a steering command for the RC car.

This is inspired by the Udacity Self Driving Car “behavior cloning” module as well as the DIY Robocars races. This project builds upon earlier work developing a similar model using color camera images from a webcam to autonomously navigate the RC car.

This post covers the development of a data pipeline for collecting and processing training data, the compilation and training of the ML model using Google Colab, and the integration and deployment of the model on the RC car using ROS.

RC Car Lidar-based ML Model Deployment
RC Car Lidar-based ML Model Deployment

Continue reading

Streamlining Our Team Sync

The time of senior leadership on a team is precious and expensive but so is the cost of poor decision making and inefficient execution due to misalignment between teams. The Engineering organization I support runs a 50 minute sync every two weeks to provide status updates, escalate issues, and review business updates that may impact our team specifically. In the spirit of continuous improvement, we took time to reflect on the format of the current meeting to make it more effective and efficient. This post is a summary of the lessons learned and where we landed in case it’s helpful to other teams facing similar challenges of respecting people’s time but also ensuring the team leads have the best context in order to enable their individual decision making.

Continue reading

The Value of Externalizing Your Thinking

John Cutler’s “Data-Informed Product Cycle” resonates with me as a depiction of a strong product development process. In the post, he says,

The most successful teams 1. Have a strategy 2. Translate that into models 3. Add minimally viable measurement 4. Identify leverage points 5. Explore options 6. Run experiments

He provides the image below which shows the process as well as the various feedback loops.

John Cutler’s Data-Informed Product Cycle

It’s critical that the design, product, and engineering teams are aligned at each step in this cycle. I’ve found that externalizing our thinking in various forms helps build a state of shared understanding amongst the group. This enables better product decision making, and ideally more successful product outcomes.

Continue reading

TPM and Engineering Lead Execution Coordination

I was in a meeting with several of my peers today and someone was looking for feedback regarding gantt chart tools. They were frustrated that the current tooling they were using was fairly rigid and not easy to manipulate live during a working meeting. They wanted to be able to add and remove items, adjust timelines, and assess the impact in real time. They also wanted something that would be easy for Engineering to adopt, since Engineering would need to maintain task state and metadata information.

After the meeting, someone asked me what tools I use for my team in these scenarios. My response was “strong engineering leaders.” It was a bit of a flippant response, but it is true. I’m not saying it’s the ideal situation to always delegate the majority of the tactical execution. But, it’s where I’ve settled for now given my team’s maturity and where I think my focus should be during planning and execution to have the biggest impact. There are two main considerations that come to mind when determining how involved I get in the tactical planning for my teams:

  1. Are we aligned on overall strategy and confident that the project we are reviewing will get us closer to our goals?
  2. Are the Engineering leaders capable and willing to handle the project management of their team?

Continue reading

Product: Starting from Scratch

In 2020, I was given the opportunity to lead the Product team at Ouster. This post details the process and framework I used to define the core functions of the team and figure out where to start.

Product Team Vision
Product Team Vision

Ouster’s core business is the design and manufacture of high-resolution lidar sensors supporting a wide variety of robotics applications. As a result of the unique digital lidar architecture taken at Ouster, we’re able to develop lidar systems that are smaller, lighter, and less expensive without sacrificing on core performance. Ouster currently has 600 customers and recently launched it’s second generation lidar sensors. The product offering expanded beyond the original OS1 lidar sensor to include the OS0, optimized for short range performance, and the OS2, which supports applications regarding longer ranges.

Continue reading

Cloud Infrastructure Expenses – A Tragedy of the Commons

I was reading the section in the book, “Thinking in Systems” about the tragedy of the commons and thought some of the recommendations might apply to software teams trying to manage their cloud infrastructure spending. When companies are young, they may optimize for development speed and flexibility and not focus on financial efficiency, This prioritization can lead to significant negative business impacts if left unchecked. We can take frameworks used to evaluate tragedy of the commons scenarios from systems thinking to identify practical solutions for managing cloud infrastructure expenses.

Continue reading