Error "Screen position out of view frustum (screen pos nan, nan, nan) (Camera rect 0 0 1170 2532) UnityEngine.Camera:ScreenToWorldPoint (UnityEngine.Vector3)"

I can’t find the solution for this error message “Screen position out of view frustum (screen pos nan, nan, nan) (Camera rect 0 0 1170 2532)
UnityEngine.Camera:ScreenToWorldPoint (UnityEngine.Vector3)”

For details, I can run my scene with AR Foundation Remote at the first time when I open the unity project. Also I can install this scene into ios device and it works fine. But from second time I runned it, it outs this error every frame everytime.
I can understand nan value is continuously into the ScreentoWorldPoint() but wonder if first time running is always success. So I want to know how to keep the first time condition at least.

my env info
macbook pro 2019 15inch
unity 2021 3.18.f1
using AR Foundation Remote 1.4.30-release.2
using HandPoseBarracuda

following code is one of the main script in my project.

private void updateHandPose()
        {
            for (int i = 0; i < HandPipeline.KeyPointCount; i++)
            {
                if(i == 3 || i == 4 || i == 9 || i == 12 || i == 17 || i == 20 || i == 8)
                {
                    var position = _pipeline.GetKeyPoint(i);
                    // Debug.Log("position: " + position);
                    var keyPoint = (HandPipeline.KeyPoint)i;
                    int paramIndex = 0;

                    switch (currentFilterType)
                    {
                        case FilterType.Kalman:
                            paramIndex = 0;
                            // カルマンフィルタを適用
                            foreach (float noise in kalmanParameters)
                            {
                                _kalmanFilters[keyPoint].SetKalmanParameter(noise, processNoise);
                                var kalmanPosition = _kalmanFilters[keyPoint].UpdateEstimate(position);
                                if (kalmanPositions.Count <= paramIndex)
                                {
                                    kalmanPositions.Add(new List<Vector3>());
                                }
                                kalmanPositions[paramIndex].Add(kalmanPosition);
                                
                                paramIndex++;
                            }
                            break;

                        case FilterType.EMA:
                            paramIndex = 0;
                            // EMAフィルタを適用
                            foreach (float factor in emaParameters)
                            {
                                _emaFilters[keyPoint].SetEMAParameter(factor);
                                var emaPosition = _emaFilters[keyPoint].UpdateEstimate(position);
                                if (emaPositions.Count <= paramIndex)
                                {
                                    emaPositions.Add(new List<Vector3>());
                                }
                                emaPositions[paramIndex].Add(emaPosition);
                                paramIndex++;
                            }
                            break;

                        case FilterType.OneEuro:
                            paramIndex = 0;
                            // 1ユーロフィルタを適用
                            foreach (float beta in oneEuroParameters)
                            {
                                _oneEuroFilters[keyPoint].SetOneEuroParameters(beta, fc_min);
                                var oneEuroPosition = _oneEuroFilters[keyPoint].UpdateEstimate(position);
                                if (oneEuroPositions.Count <= paramIndex)
                                {
                                    oneEuroPositions.Add(new List<Vector3>());
                                }
                                oneEuroPositions[paramIndex].Add(oneEuroPosition);
                                paramIndex++;
                            }
                            break;
                    }
                    if (i == 8)
                    {
                        List<string> dataForSmoothingList = new List<string>
                        {
                            framecount.ToString(),
                            position.x.ToString()
                        };

                        List<List<Vector3>> currentFilterPositions = null;

                        switch (currentFilterType)
                        {
                            case FilterType.Kalman:
                                currentFilterPositions = kalmanPositions;
                                break;
                            case FilterType.EMA:
                                currentFilterPositions = emaPositions;
                                break;
                            case FilterType.OneEuro:
                                currentFilterPositions = oneEuroPositions;
                                break;
                        }
                        
                        if (currentFilterPositions != null)
                        {
                            foreach (var posList in currentFilterPositions)
                            {
                                dataForSmoothingList.Add(posList[posList.Count - 1].x.ToString());
                                
                            }

                            dataForSmoothingList.Add("");
                            dataForSmoothingList.Add(position.y.ToString());

                            foreach (var posList in currentFilterPositions)
                            {
                                dataForSmoothingList.Add(posList[posList.Count - 1].y.ToString());
                            }

                            dataForSmoothingList.Add("");
                            dataForSmoothingList.Add(position.z.ToString());

                            foreach (var posList in currentFilterPositions)
                            {
                                dataForSmoothingList.Add(posList[posList.Count - 1].z.ToString());
                            }
                        }

                        csvExporter.SaveToCSV(dataForSmoothingList.ToArray());
                    }
                    Vector3 smoothing_position;
                    switch (currentFilterType)
                    {
                        case FilterType.Kalman:
                            smoothing_position = kalmanPositions[0][kalmanPositions[0].Count - 1];
                            break;
                        case FilterType.EMA:
                            smoothing_position = emaPositions[0][emaPositions[0].Count - 1];
                            break;
                        case FilterType.OneEuro:
                            smoothing_position = oneEuroPositions[0][oneEuroPositions[0].Count - 1];
                            break;
                        default:
                            smoothing_position = position; // または適切なデフォルト値
                            break;
                    }
                    //ワールド座標に変換する
                    float xPos = Screen.width * normalize(smoothing_position.x, -0.5f, 0.5f);
                    float yPos = Screen.height * normalize(smoothing_position.y, -0.5f, 0.5f);
                    // Debug.Log("width" + Screen.width);
                    // Debug.Log("height" + Screen.height);
                    float zPos = 0.3f + smoothing_position.z;

                    Vector3 cameraPos = new Vector3(xPos, yPos, zPos);
                    // Debug.Log($"cameraPos: {cameraPos}");
                    // if (Camera.main != null && !float.IsNaN(cameraPos.x) && !float.IsNaN(cameraPos.y) && !float.IsNaN(cameraPos.z) && !float.IsInfinity(cameraPos.x) && !float.IsInfinity(cameraPos.y) && !float.IsInfinity(cameraPos.z))
                    // {
                        var screenPosition = Camera.main.ScreenToWorldPoint(cameraPos);
                        // それぞれの手のパーツに座標を代入
                        _handJoints[keyPoint].transform.position = screenPosition;
                    // }

                    // // ここで、zPosに基づいて、関節の大きさを調整します
                    // float scaleFactor = 1.0f / (zPos + 1); 
                    // _handJoints[keyPoint].transform.localScale = Vector3.one * scaleFactor;
                    //  人差し指のSphereの位置と向きを基にレイを生成
                    if (indexTipSphere)
                    {   
                        Vector3 currentPosition = indexTipSphere.transform.position;
                        Vector3 direction = (currentPosition - Camera.main.transform.position).normalized;
                        Vector3 endPos = currentPosition + direction * rayDistance; 
                        Debug.DrawLine(currentPosition, endPos, Color.green, 2f);

                        // 人差し指の先端からのレイキャスティングを行う
                        // Debug.Log(isTriggeredwithThumb);
                        raycastingScript.CastRayFromIndexFinger(currentPosition, direction, i);
                    }
                }
                
            }
        }```