C#: Object reference not set to an instance of an object (Help needed)

I’m quite new to C# and i am currently working on a 3D Point and Click game. I am getting this error in my Unity Console: Object reference not set to an instance of an object MousePOV.Update () (at Assets/Scripts/MousePOV.cs:25). The Problem could be in the GameManager.cs or the MousePOV.cs but it could also be in an another script such as CameraRig.cs. By the way, this is my second game that i have made in Unity.
MousePOV.cs script:

using UnityEngine;
using System.Collections;
[RequireComponent(typeof(CameraRig))]
public class MousePOV : MonoBehaviour {
    public float XSensitivity = 2f;
    public float YSensitivity = 2f;
    public bool clampVerticalRotation = true;
    public float MinimumX = -90F;
    public float MaximumX = 90F;
    public bool smooth;
    public float smoothTime = 5f;
    public bool lockCursor = true;
    private Quaternion yAxis;
    private Quaternion xAxis;
    private CameraRig rig;
    void start(){
        rig = GetComponent<CameraRig> ();
    }
    void Update(){
        if (Input.GetMouseButton(0) && (Input.GetAxis ("Mouse X") != 0 || Input.GetAxis ("Mouse Y") != 0)){
            yAxis = rig.y_axis.localRotation;
            xAxis = rig.x_axis.localRotation;
            LookRotation();
        }
    }
      
    public void LookRotation()
    {
        float yRot = Input.GetAxis("Mouse X") * XSensitivity;
        float xRot = Input.GetAxis("Mouse Y") * YSensitivity;
        yAxis *= Quaternion.Euler (0f, yRot, 0f);
        xAxis *= Quaternion.Euler (-xRot, 0f, 0f);
        if(clampVerticalRotation)
            xAxis = ClampRotationAroundXAxis (xAxis);
        if(smooth)
        {
            rig.y_axis.localRotation = Quaternion.Slerp (rig.y_axis.localRotation, yAxis,
                                                         smoothTime * Time.deltaTime);
            rig.x_axis.localRotation = Quaternion.Slerp (rig.x_axis.localRotation, xAxis,
                                                     smoothTime * Time.deltaTime);
        }
        else
        {
            rig.y_axis.localRotation = yAxis;
            rig.x_axis.localRotation = xAxis;
        }
          
    }
    Quaternion ClampRotationAroundXAxis(Quaternion q)
    {
        q.x /= q.w;
        q.y /= q.w;
        q.z /= q.w;
        q.w = 1.0f;
        float angleX = 2.0f * Mathf.Rad2Deg * Mathf.Atan (q.x);
        angleX = Mathf.Clamp (angleX, MinimumX, MaximumX);
        q.x = Mathf.Tan (0.5f * Mathf.Deg2Rad * angleX);
        return q;
    }
}

GameManager.cs script:

using UnityEngine;
using System.Collections;
public class GameManager : MonoBehaviour {
    public static GameManager ins;
    [HideInInspector]
    public Node currentNode;
    public CameraRig rig;
    //singleton
    void Awake() {
        ins = this;
    }
    void Update() {
        if (Input.GetMouseButtonDown (1) && currentNode.GetComponent<Prop> () != null) {
            currentNode.GetComponent<Prop> ().loc.Arrive ();
        } 
    }
      
}

I guess the problem lies in your start method.
You have to write Start() with upper-case. As it is now it will not get recognised as Start function and the rig is never set.