使用聲網 SDK 構建 Piloteer 助盲服務平臺的最佳實踐

聲網發表於2022-12-15

前言

在今年聲網主辦的「RTE2022 程式設計挑戰賽」中,數支隊伍經過一個多月的努力開發,很多優秀的作品最終突出重圍,斬獲大獎。本文由RTE2022程式設計挑戰賽獲獎者之一李新春撰寫,他主要圍繞獲獎作品「Piloteer助盲服務平臺」分享了開發的構思過程、實踐經驗。

01 為什麼要做這件事

因為工作原因,在一些溝通中接觸了不少養老相關的專案需求,在資訊化高度發展的社會,老年人的生活卻變得不那麼舒服,特別是在疫情期間以及健康碼常態化的今天,老年人以及推而廣之的視障人員的生活會更加的不方便。因此,考慮到視障人員更不方便,所以以視障人員為目標人群,以人工智慧、聲網音影片技術、智慧硬體裝置和人性化服務為依託,進行了該解決方案的設計和系統開發。

02 專案介紹

專案口號:讓我成為你的眼,讓我領航前行路

專案介紹:科技在飛速發展,而部分人被落在了後面,讓我們協助弱勢群體,為他們在新時代領航。新技術讓人們的生活更加便利,而視障群體無法看清世界、老年群體無法快速學習進而無法有效的享受科技帶來的便利生活。本專案利用人工智慧、音影片傳輸技術、智慧硬體等為他們提供一套音影片領航服務方案,協助他們在熟悉周邊環境、道路導航、輔助食品/藥品辨別等場景下更從容、更舒心。

專案地址:

https://github.com/AgoraIO-Community/RTE-2022-Innovation-Challenge/tree/main/Application-Challenge/專案89-領航者-Piloteer服務平臺

03 如何做這個專案

需求調研

有了這個想法,那首先還是要看看視障人員有沒有這個需求。

在我國有 8500 萬殘疾人¹,這其中超 1700 萬是視障人群²。其中 23.5% 是 30 歲以下的年輕人,而在視障網民中,80、90 後佔比 75%。

在我國有 30% 的視障者基本呆在家中不出門,大部分人出行是需要家人朋友陪同的。完全不需要家人朋友出行的視障人士比例很低,而且大部分不是全盲人。

因此,從資料上看,有一定學歷又不經常出門的視障者有不少人群,那他們出門用什麼裝置呢?粗略統計一下得到如下內容:

  • 導盲犬:導盲犬是一種工作犬,主要工作是代替視障人士的眼睛,為他們領路。訓練導盲犬的原理是利用動物的自我保護本能,行走避開障礙物,透過訓練將導盲犬的保護機制擴大到視障者,使導盲犬能帶著主人躲避障礙物。
  • 超聲波導盲儀:超聲波導盲儀是以發射超聲波和接收障礙物反射回波的方式來定位的,它從回波中得到障礙物資訊。
  • 穿戴式導盲儀器:將導盲裝置穿戴在身上,透過簡單的導盲語音來進行安全行進。比如腰帶式行動輔具。能夠透過引導的方式使盲人躲避障礙物,將盲人作為半被動式接受躲避障礙物命令的輔助工具。
  • 移動式機器人:移動式機器人是具有多種監測器、強大計算能力和高度智慧化障礙物躲避系統的機器人。
  • AI智慧裝置:透過視障人士攜帶的影像採集單元採集環境影像;將所述環境影像與預設的立體地圖進行對比,以確定所述視障人士的當前位置;根據所述當前位置和立體地圖,向所述視障人士發出導航提示。

以上這些裝置各有各的優勢也各有劣勢,綜合考慮來看隨著技術的發展,利用智慧化裝置、AI 識別、音影片高效傳輸才是未來真正解決問題的方向。

04 解決方案

綜合來看,還是考慮依託新技術來實現降低成本,輔助出行的目的。透過可移動的攝像頭解決人員移動過程中視角差的問題,如果使用手機影片,需要舉著才能獲得第一視角,而利用 OTG 和 UVC 攝像頭,可以佩戴到眼鏡上,更加方便。

圖片

05 系統架構

圖片

從系統架構中可以清楚的看到,在設計過程中應用瞭如下技術:

  • UVC 攝像頭:利用安卓手機以及安卓系統硬體的 OTG 特性,設計可掛載攝像頭,以第一視角進行導引。
  • 影片中臺:主要利用聲網音影片傳輸技術,實現 1V1 對話,群組對話等實時通訊功能,實現單人指導和多人協助的功能以及後臺的針對音影片質量、接入時間以及裝置的管理。
  • AI 中臺:是以 AI 演算法為核心的能力中臺,目前主要依託於 Yolo 演算法,實現各類車輛、行人、動物等的識別。
  • 平臺功能:平臺功能依託賦能中臺,提供基礎的三維地圖導航、接入裝置管理、導航業務管理以及資料分析等功能,未來根據客戶需要進行模組化調整。

06 專案開發實踐

開發環境準備

安卓平臺

開發平臺:android studio 2021.2.1

安卓版本:6.0.1

一般支援 OTG 攝像頭的系統即可使用,當前未作機型適配。

Windows平臺

當前測試系統使用的是:win10

CPU:I7 7700K

GPU:GTX1050TI

記憶體:16G

開發平臺:Unity3D 2021.2.14AI

演算法:Yolo v3

其他:雲虛擬主機

聲網 SDK 應用

Unity3D C#開發

開發工具:Unity3D 2021.2.4 SDK 版本、RTM 1.4+、RTC 3.7+學習 Demo 場景。在如下場景中,首先要註冊登陸聲網開發者控制檯 console.agora.io 並且建立專案獲得的 AppID,點選執行即可進入影片房間,關於獲得聲網 AppID 的過程,建議在聲網官網瀏覽一下,有非常豐富的文件,如下連結。

https://docs.agora.io/cn/Agora%20Platform/get_appid_token

圖片

圖片

下面簡單介紹幾個重要函式

1、開啟指令碼“TestHelloUnityVideo”這裡面的“loadEngine”即為聲網引擎重要的初始化步驟。

 public void loadEngine(string appId)
    {
        // start sdk
        Debug.Log("initializeEngine");
 
        if (mRtcEngine != null)
        {
            Debug.Log("Engine exists. Please unload it first!");
            return;
        }
 
        // init engine
        mRtcEngine = IRtcEngine.GetEngine(appId);
 
        // enable log
        mRtcEngine.SetLogFilter(LOG_FILTER.DEBUG | LOG_FILTER.INFO | LOG_FILTER.WARNING | LOG_FILTER.ERROR | LOG_FILTER.CRITICAL);
    }

2、加入房間,“join”函式,為使用者加入房間以及各種回撥函式的設計,也是未來我們系統中進行實時溝通對話的開始。

public void join(string channel)
    {
        Debug.Log("calling join (channel = " + channel + ")");
 
        if (mRtcEngine == null)
            return;
 
        // set callbacks (optional)
        mRtcEngine.OnJoinChannelSuccess = onJoinChannelSuccess;
        mRtcEngine.OnUserJoined = onUserJoined;
        mRtcEngine.OnUserOffline = onUserOffline;
 
        // enable video
        mRtcEngine.EnableVideo();
        // allow camera output callback
        mRtcEngine.EnableVideoObserver();
 
        // join channel
        mRtcEngine.JoinChannel(channel, null, 0);
    }

3、完成點對點導航後,“leave”函式,切記在程式退出時記得關閉。

public void leave()
    {
        Debug.Log("calling leave");
 
        if (mRtcEngine == null)
            return;
 
        // leave channel
        mRtcEngine.LeaveChannel();
        // deregister video frame observers in native-c code
        mRtcEngine.DisableVideoObserver();
    }

4、因為我們使用的是 OTG 外部攝像頭,因此在開發過程中要使用聲網的外部影片推送能力。

安卓端程式碼如下

protected void preview(boolean start, SurfaceView view, int uid) {
    if (start) {
        mSource = new AgoraVideoSource();
        mRender = new AgoraVideoRender(uid, false);
        rtcEngine().setVideoSource(mSource);
        rtcEngine().setLocalVideoRenderer(mRender);
       // rtcEngine().startPreview();
    } else {
       // rtcEngine().stopPreview();
    }
}

07 專案主要功能

移動端

安卓端主要包含使用者登入和音視訊通話,為方便視障人員使用,儘量做了簡化

圖片

Win 服務端

包含資料大屏、裝置管理、工單管理、導航管理等模組

資料大屏

展示運營資料分析,裝置使用資訊,服務質量等內容,如使用者年齡分佈、周服務排名、當前呼叫資訊、日活使用者分佈等資料問題。

圖片

導航管理

以衛星圖、街道圖為服務人員提供導航服務,可以進行初步的線路規劃,實時影片對話、RTM 及時信令控制等。

圖片

裝置管理

採購裝置的企業、單獨購買的使用者,透過集中註冊或者個人註冊的方式,將自身裝置註冊到系統平臺上,透過該介面對裝置的使用者基本資訊進行編輯。

圖片

工單管理

系統採用了 AI 輔助識別功能,因此係統設計支援透過網頁端(非 AI)和本地端(AI 輔助)進行系統登入和遠端服務,包含導航資訊的獲取、檢視、檢索等功能。

圖片

08 未來擴充

“十四五”規劃和 2035 年遠景目標綱要中提出要加快數字化社會建設,我們需要考慮到不同群體的數字化需求,特別是老年群體。

上海是國內最早進入人口老齡化且老齡化程度最深的大型城市有將近 400 萬老年人,近年來上海積極探索“社群嵌入式養老服務”,讓社群老人在熟悉的環境中實現“老有所養”。因而,利用我們已開發完成的這套系統和服務模式,可以在多方面輔助老年人的生活。

圖片

以上是 Piloteer 助盲服務平臺作品在 RTE2022 程式設計挑戰賽期間的實踐分享,更多資訊和作品可以訪問官方渠道。

Piloteer服務平臺:

https://github.com/AgoraIO-Community/RTE-2022-Innovation-Challenge/tree/main/Application-Challenge/專案89-領航者-Piloteer服務平臺

大賽作品倉庫:

https://github.com/AgoraIO-Community/RTE-2022-Innovation-Challenge

相關文章