diff --git a/sensor_gen.py b/sensor_gen.py
new file mode 100755
index 0000000..bedf4f8
--- /dev/null
+++ b/sensor_gen.py
@@ -0,0 +1,43 @@
+#!/usr/bin/env python
+
+import os
+import yaml
+import argparse
+from mako.template import Template
+import contextlib
+
+if __name__ == '__main__':
+    script_dir = os.path.dirname(os.path.realpath(__file__))
+    parser = argparse.ArgumentParser()
+    parser.add_argument(
+        "-f", "--filename",
+        default='occ_sensor.yaml',
+        help="Input File Name")
+    parser.add_argument(
+        "-i", "--input-dir",
+        dest='inputdir',
+        default=script_dir,
+        help="Input directory")
+
+    args = parser.parse_args()
+
+    # Default to the one that is in the current.
+    yaml_dir = script_dir
+    yaml_file = os.path.join(yaml_dir, 'occ_sensor.yaml')
+
+    if args.inputdir:
+        yaml_dir = args.inputdir
+
+    if args.filename:
+        yaml_file = os.path.join(yaml_dir, args.filename)
+
+    with open(yaml_file, 'r') as fd:
+        ifile = yaml.safe_load(fd)
+
+        # Render the mako template
+        template = os.path.join(script_dir, 'occ_sensor.mako.hpp')
+        t = Template(filename=template)
+        with open('occ_sensor.hpp', 'w') as fd:
+            fd.write(
+                t.render(
+                    occDict=ifile))
