心心念的大疆 RoboMaster 機(jī)器人,終于以教小孩子編程的理由淘了一臺回來。大疆的 RoboMaster EP 套裝在 2023 年底停售了,而且也太貴,原價12000,于是在網(wǎng)上淘了一套二手的,不到3000塊。孩子玩起來還愛不釋手,還能順便學(xué)編程。
在 Rust 群里得知有一個 Dora-rs (https://dora-rs.ai/) 框架,而其作者也是用 Robomaster S1 進(jìn)行的演示,所以就趁孩子睡覺的時候,開始嘗試搗鼓一下 RoboMaster SDK。
為了快速切換炮塔模式和機(jī)械臂模式,我單獨(dú)買了一個喇叭,一個攝像頭和一個 S1 的主控,安裝在炮塔上,而原來的配件安裝在機(jī)械臂和擴(kuò)展支架上。
為了讓 S1 可以使用 SDK 訪問,需要 hack / root 進(jìn) S1 進(jìn)行一些修改。所以如果你擁有或者買了 S1,盡量不要升級。因為大疆升級固件會進(jìn)行封堵。網(wǎng)上能找到的破解方案在 ( https://github.com/collabnix/robomaster/ ),但是對于2023年3 月以后的固件,已經(jīng)不能直接使用了。如果是較新的固件,還需要經(jīng)過一些嘗試和修改方可 root。
因為大疆還在銷售 S1,目前社區(qū)傾向于不公開 root 的過程/代碼,盡量不讓大疆再針對性更新固件。修改并不難,所以還是自己嘗試一下吧。
大疆的 RoboMaster SDK ( https://github.com/dji-sdk/RoboMaster-SDK )最新更新已經(jīng)是兩年前了,要求 Python 3.10 以前的版本和 FFMPEG 4.x.x 的版本。我這里使用了 Python 3.8.18 和 FFmpeg 4.4.5。如果使用其他版本組合出現(xiàn)問題,可以按照我的版本來安裝。
這里只描述一些包的配置安裝,但是軟件編譯還需要一些編譯器和其他庫的依賴,我自己的電腦已經(jīng)安裝過了,請讀者自己按需安裝。如果本機(jī)的版本符合RoboMaster SDK對應(yīng)的版本要求,也不需要單獨(dú)安裝。
假設(shè)我在某個目錄下,例如 `/home/username/` 建立一個目錄,比如 `RoboMaster`,下面我就以`ROOT` 指代這個目錄`/home/username/RoboMaster`。
我使用的 Debian 12,只提供了 Python 3.11,所以要自己編譯 Python。
從 Python.org 下載 Python 3.8.18 的源代碼包,解壓至`ROOT/`,進(jìn)入 `ROOT/Python 3.8.18`,執(zhí)行
# 注意這里 ROOT 要替代成你實際的路徑configure --prefix=ROOT/local --enable-optimizationsmake -j`nproc`make install
下載 FFmpeg 4.4.5 ( https://www.ffmpeg.org/releases/ffmpeg-4.4.5.tar.xz ),同樣解壓到 `ROOT/`,進(jìn)入 `ROOT/ffmpeg-4.4.5`,執(zhí)行
./configure--enable-shared--prefix=$(dirname$PWD)/local#這里dirname$PWD的結(jié)果應(yīng)該還是ROOTmake -j`nproc`make install
注意這里一定要加 `--enable-shared`,為了使用其他的優(yōu)化 FFmpeg 的配置參數(shù),請自行添加對應(yīng)參數(shù)。
環(huán)境準(zhǔn)備好了,開始正式安裝 `RoboMaster SDK`
因為我選擇在 `ROOT/local` 下安裝了所需要的 Python 和 ffmpeg ,所以下面的執(zhí)行和之后的運(yùn)行都需要先設(shè)置一些環(huán)境變量。可以每次輸入也可以編輯一個 shell 腳本通過 `source` 或者 `.` 來導(dǎo)入環(huán)境。
ROOT=/home/username/RoboMasterexport PATH=$ROOT/local/bin:$PATHexport LD_LIBRARY_PATH=$ROOT/local/lib:$LD_LIBRARY_PATH
我使用 `pipenv` 管理我的 python 環(huán)境,你可以使用其他自己熟悉的工具
pipenv --python 3.8pipenv shell
在 `ROOT` 下執(zhí)行
git clone https://github.com/dji-sdk/RoboMaster-SDK.gitcd RoboMaster-SDK/lib/libmedia_codec
編輯 `setup.py` 文件,為 `cmake_args` 增加:
'-DCMAKE_PREFIX_PATH=' + 'ROOT/local'
注意符合 Python 語法以及注意替換 ROOT 為你實際的路徑
修改`CMakeLists.txt`,為 `IF (CMAKE_SYSTEM_NAME MATCHES "Windows")` 一句的 `ELSE()` 增加:
target_include_directories(libmedia_codec PRIVATE "ROOT/local/include"))target_link_directories(libmedia_codec PUBLIC "ROOT/local/lib")
同樣注意 CMake 語法和替換 ROOT 路徑。
仍然在 `libmedia_codec` 目錄下
python setup.py buildpython setup.py bdist_wheelpython setup.py install
如果沒有出錯誤,可以使用命令
ldd build/lib.linux-x86_64-cpython-38/libmedia_codec.cpython-38-x86_64-linux-gnu.so
檢查一下鏈接的 FFmpeg 庫,比如 `libavcodec.so.58` 是否指向了我們自己編譯的版本 (比如路徑是 `ROOT/lib/libavcodec.so.58`,如果指向了系統(tǒng)的版本,可能會由于版本不兼容導(dǎo)致無法運(yùn)行。
此時退回 `ROOT/RoboMaster-SDK` 目錄,執(zhí)行
python setup.py install
在我的機(jī)器上,它執(zhí)行 numpy 安裝失敗了,需要再手動執(zhí)行
pip install numpy
再執(zhí)行
python setup.py install
才能安裝成功。
如果一切安裝順序,下面可以運(yùn)行 SDK 帶的 demo 為驗證一下。在 Linux 下,一般會啟動防火墻,使得主機(jī)到 S1/EP 控制器連接失敗,簡單地方式就停掉防火墻,或者只需要開啟 45678 端口的 udp及 tcp 的訪問。
之后修改 `ROOT/RoboMaster-SDK/examples/01_robot/05_sta_conn_helper.py` 中 WiFi 路由器的 SSID 及密碼,然后使用 python 運(yùn)行此腳本,用機(jī)器人掃描二維碼,應(yīng)該就可以正確連接了。如果執(zhí)行不成功,可以考慮關(guān)閉所有防火墻再測試一下。
好了, SDK 已經(jīng)可以正確執(zhí)行,可以快樂的編程了。后面我會嘗試使用 `dora-rs` 框架和 `ROS2` 來控制,編程機(jī)器人。
審核編輯 黃宇
-
Linux
+關(guān)注
關(guān)注
87文章
11457瀏覽量
212766 -
SDK
+關(guān)注
關(guān)注
3文章
1065瀏覽量
47672 -
RoboMasters
+關(guān)注
關(guān)注
2文章
9瀏覽量
9047
發(fā)布評論請先 登錄
linux下使用cyusbserial SDK錯誤怎么解決?
為什么S32DS-S32平臺無法加載SDK?
S32DS軟件編譯報錯,安裝SDK報錯的原因?
如何通過S32 Design Studio IDE安裝S32SDK_S32K1xx_RTM_4.0.2 SDK擴(kuò)展?
DLPNIRSCANEVM SDK安裝完后,提示需要運(yùn)行一個setup.sh文件,在哪里下載?
在Linux下安裝軟件有哪些方法
技術(shù)洞見丨視耀S1直播機(jī)的頂尖性能與多元化功能
排查并處理共享站點S1用戶面路徑不可用告警

linux下服務(wù)器穩(wěn)定性壓?測試?具stress安裝使?介紹

Walker S1助力極氪達(dá)成40萬臺汽車下線里程碑
用戶手冊 | 全志T113-S3開發(fā)板——SDK編譯指南

評論