swift初心者です。今開発しているアプリケーションはQRコードから現在地と目的地を取得し、ダイクストラで最短経路を求め案内をするというものなのですが、その途中でつまずいています。QRコードから読み取った文字列をNavigationクラスのNavigation関数に渡してその関数内でラベルに表示させたいのですがunexpectedly found nil while unwrapping an Optional valueが出てしまいます。

ViewController.swiftで現在地と目的地をstartとgoalに格納しその値をstep1関数に渡して最短経路を求めています。step1関数が含まれているコードは割愛しています。それと同時にstとglに読み取った現在地と目的地をString型で格納しています。これをNavigationクラスのNavigation()関数に渡し、storyboard上のラベルに表示したいのですがエラーが出てしまい、迷宮入りしてます。どなたかご指摘、アドバイスお願いします

コードは以下の通りです

ViewController.swift

import UIKit
import AVFoundation
class ViewController: UIViewController, AVCaptureMetadataOutputObjectsDelegate {

    @IBOutlet weak var CaptureView: UIView!
    @IBOutlet weak var Label: UILabel!
    @IBOutlet weak var Label2: UILabel!
    @IBOutlet weak var Caution: UILabel!


    var myVideoInput:AVCaptureDeviceInput!
    var myMetadataOutput:AVCaptureMetadataOutput!
    var myVideoLayer: AVCaptureVideoPreviewLayer!
    var start:Int = 0
    var goal:Int = 0
    var st:String = ""
    var gl:String = ""
    let mySession: AVCaptureSession! = AVCaptureSession()
    var myDevice: AVCaptureDevice!
    var a:Int = 0
    var route:[Int] = []

    override func viewDidLoad() {
        super.viewDidLoad()

        Caution.text = "スタート地を選択してください"

        myDevice = AVCaptureDevice.defaultDevice(withDeviceType: .builtInWideAngleCamera, mediaType: AVMediaTypeVideo, position: .back)

        do {
            myVideoInput = try AVCaptureDeviceInput(device:myDevice)
        } catch  {
            print(error)
        }

        if mySession.canAddInput(myVideoInput) {
            mySession.addInput(myVideoInput)
        }

        myMetadataOutput = AVCaptureMetadataOutput()
        mySession.addOutput(myMetadataOutput)
        myMetadataOutput.setMetadataObjectsDelegate(self, queue: DispatchQueue.main)
        myMetadataOutput.metadataObjectTypes = [AVMetadataObjectTypeQRCode]


        self.myVideoLayer = AVCaptureVideoPreviewLayer(session: mySession) as AVCaptureVideoPreviewLayer
        self.myVideoLayer.frame = self.CaptureView.bounds
        self.myVideoLayer.videoGravity = AVLayerVideoGravityResizeAspectFill
        self.CaptureView.layer.addSublayer(self.myVideoLayer)

        func viewDidLayoutSubviews() {
            super.viewDidLayoutSubviews()

            self.myVideoLayer.frame = self.CaptureView.bounds
        }
        // Viewに追加.
        self.view.layer.addSublayer(myVideoLayer)

        mySession.startRunning()
    }

    @IBAction func Start(_ sender: Any) {
        a = 1
        Caution.text = "QRコードをかざしてください"
    }


    @IBAction func Goal(_ sender: Any) {
        a = 2
        Caution.text = "QRコードをかざしてください"
    }

    func captureOutput(_ captureOutput: AVCaptureOutput!, didOutputMetadataObjects metadataObjects: [Any]!, from connection: AVCaptureConnection!) {
        if metadataObjects.count > 0 {
            let qrData: AVMetadataMachineReadableCodeObject  = metadataObjects[0] as! AVMetadataMachineReadableCodeObject
            print(metadataObjects.flatMap { ($0 as AnyObject).stringValue })
            if a == 1{
                Label.text = qrData.stringValue
                start = Int(qrData.stringValue)!
                st = qrData.stringValue
                if start != 0 && goal == 0{
                    Caution.text = "目的地を選択してください"
                }
                else if start != 0 && goal != 0{
                    Caution.text = "案内開始を押してください"
                }
            }
            else if a == 2{
                Label2.text = qrData.stringValue
                goal = Int(qrData.stringValue)!
                gl = qrData.stringValue
                if start == 0 && goal != 0{
                    Caution.text = "スタート地を選択してください"
                }
                else if start != 0 && goal != 0{
                    Caution.text = "案内開始を押してください"
                }
            }
        }

    }

    @IBAction func GuideStart(_ sender: Any) {
        if start != 0 && goal != 0 && start != goal{
            performSegue(withIdentifier: "toVC2", sender: nil)
            let dijkstra = Step1()
            route = dijkstra.step1(start: start, goal: goal)
            print(route)
            print(start,goal)
            let NV = Navigation()
            NV.Navigation(cr: st, gl: gl)
        }

        else if start == goal{
            Caution.text = "同じ地点は選択できません"
        }
        else if start == 0 && goal != 0{
            Caution.text = "スタート地を選択してください"
        }
        else if start != 0 && goal == 0{
            Caution.text = "目的地を選択してください"
        }
    }
Navigation.swift

import UIKit
import AVFoundation

class Navigation : UIViewController {
    @IBOutlet weak var current: UILabel!
    @IBOutlet weak var goal: UILabel!
        func Navigation(cr:String, gl:String){
        current.text = cr
        goal.text = gl
        }
}

ストーリーボードの画面です。見えませんが、ちゃんとラベルとViewは配置しています
ストーリボード
エラー直前のスレッドです
エラー直前のスレッド