Consulting ethics:

For most of the last 25 years I have worked in a consultative capacity; during that time I have come to a set of principals that define what I consider an ethical frame work as a consultant.

Honesty: Time, Talent and Tools

In all interactions with a client honesty is the foremost byword. This shows up in three areas.

Image result for three Ts

Time: Projects take time. Estimating how long a project takes is a skill that develops with experience. When providing an estimate to a client always use your best judgement as to how long the project will take enumerating the tasks to be completed and the potential unknowns. If an accurate estimate is not possible due to a lack of understanding you should consider if this is the correct type of project for you to be working on.

Image result for Talent

Talent: When I speak about talent I am thinking about the sum of the things that you or people you work with have a strong understanding of. When starting a project my rule of thumb is that my team should understand at least 80% of the project scope. Why 80% though and not 100%? My assumption is that for any project, outside of turn key implementations, there is project specific knowledge that my customer has that my group will need to learn to best help out. A critical early part of any project is coming to terms with that unknown 20%.

Tools: There an old saying “when all you have is a hammer, everything looks like a nail”. Selecting the correct tool for any job is important. Not forcing a tool because you work for a company or it is something you are familiar with is ethical. In the end select tools being aware of the cost (both of the tool and in time spent to work with the tool) versus the functionality (what percentage of the issue does the tool address.

Image result for when all you have is a hammer

Understand what customer needs…

Image result for microscope telescope

A story I have often told is about the first consulting contract I worked on over 20 years ago. The customer requirements were well written, scoping things out fully. I had the required skill set to implement what they requested and the tools were available “in-house” for the customer. After 200 hours of work (out of an estimated 220) I handed over the finished product and the customer went away happily. However, in hindsight what the customer asked me to do wasn’t what they needed me to do; I solved the symptom, not the problem.

There are two things to take from this, first during the initial interview it is critical to get to a solid understanding of what the root issue the customer is trying to solve. Second it is important to be able to convey to the customer why a proposed solution may not address the underlying problem. (If you already know how to solve the problem then you are hiring a temporary employee, not a consultant).

Stand behind what you deliver

For most consulting projects the works is completed within a handful of months. The customer will continue to use what you to taught them and delivered to them for years. In the 25 years I have been working I have always been ready to speak with old customers about what I did to help them with the unexpected curves they hit.

Math! Solving problems, making friends…

A few months ago there was an interesting article about AlphaGo and deep learning.  What made the solution interesting is that AlphaGo determined a new strategy for playing Go, e.g. it wasn’t just replicating the best of current players, it was creating something new.

Image result for AI something new

So this got me thinking about sensor placement. Let’s say you are building an autonomous vehicle; you give it radar, LIDAR, cameras, heck even and a person walking 5 feet in front of the car with a red flag. But how do you know what the best configuration of those sensor is? This is where math and deep learning can come to the rescue.

It’s research, dam the budget!

With research vehicles it is common to go high end with the sensors and processors. Often the number of sensors are far in excess of what the final vehicle will have; the question then becomes “If you train your controller using 10 sensor and the final vehicle will only have 3 do you have to retrain?”

So here is the insight, in regression there is the concept of a synthetic variable. E.g. you can take the raw data X and put X^2 into the equation. What if, for sensor data, you optimize for sensor position?

Image result for multiple angles
Trig and Geometry!

Step 1: Train your model using the full set of sensors. Train it until you reach the highest confidence level you can.

Step 2: Define the set of equations that will take your original sensor data and use them to create “artificial” sensor at arbitrary locations. E.g. if you have 10 LIDAR sensors, then it could be that
AS_1 = func(X1,Y1,Z1) = func(L1,L2,L4,L6)
AS_2 = func(X2,Y2,Z2) = func(L3,L4,L7)
AS_3 = func(X3,Y3,Z3) = func(L2,L6,L9,L10)

Step 3: Using the already trained data train the new sensor array

Step 4: Optimize the models as a function of the sensor placement and number of sensors

Sensor fusion before the sensors…

I think of this approach as “sensor fusion before the sensors”. What is interesting about this approach is that it is possible that we could discover a combination of sensors (and yes this should be done with multiple sensors) that has a higher accuracy and lower costs than we expect.

Image result for sensor fusion

11111100010 to 11111100011 Every bit makes a difference

Welcome to the year 2019, the first post of the year (or last post of the year) generally are places for retrospectives/forward looking visions. I shall keep to the form.

Excited: 2018

There are multiple things to be excited about this year, the following are what I a found most exciting

  1. . Simplified methods for integrating C with models: MATLAB and Simulink added new functionality to improve the integration of C code and Models, either by including code in the model (C-Caller block) or by simplifying the function interface definition.
  2. Projects, data dictionaries and testing: MathWorks continues to work on the integration between Simulink Projects and the supporting tool chain, these improvements coupled with version control software integration make the tool powerful for team based development
  3. String support: For better or for worse, strings are a part of control systems, after many years Simulink has native support.
Image result for excited puppy
The corgi of excitement remembers the past

Looking forward: 2019

Related image
The lemur of happiness looks towards the future
  1. Machine learning: Ok, sure I just got started but already there are a number of interesting question (and lovely math) that I am enjoying.
  2. Systems of systems: The scope of Model-Based Design projects continues to expand, the analysis of system of systems is an area I’m excited to move into.
  3. Statistical validation: As our systems become more complex statistical analysis (DOE) becomes more and more important