我到處說(shuō)小米沒(méi)開(kāi)源,我真沒(méi)素質(zhì),其實(shí)人家已經(jīng)開(kāi)源了...不過(guò)是20個(gè)月前開(kāi)的,是我的鍋. 小米機(jī)械狗CyberDog云體驗(yàn) 其實(shí)在當(dāng)時(shí)我已經(jīng)寫一個(gè)這樣的與體驗(yàn)的文章,聽(tīng)著群里面的慫恿還在微博上面私信了雷軍(真的是屬于教唆犯罪了),結(jié)果當(dāng)然是沒(méi)有尿我啦~ 不過(guò)之后也有讀者加我給我展示他買的狗子,哈哈哈,翻跟頭的聲音有點(diǎn)大了,之后AirLAB實(shí)驗(yàn)室也有一只狗子,不過(guò)我也沒(méi)有去摸了,遺憾~ 好了,閑話不多說(shuō)讓我們開(kāi)始今天的這個(gè)文章主題.Cyberdog主要使用了MIT的開(kāi)源代碼Mini Cheetah(也就是MPC) 以及 ROS 2的開(kāi)源平臺(tái)制作的一個(gè)機(jī)器人.
傳感器包括:Intel Realsense D450深度攝像頭、AI交互相機(jī)、雙目超廣角相機(jī)、TOF傳感器、環(huán)境光傳感器、超聲波傳感器、慣性測(cè)量單元、GPS模組、地磁傳感器、光流計(jì)、6MIC環(huán)型陣列、觸摸傳感器.
CyberDog全身的自由度是12,單腿的自由度是3,即每只腳大腿關(guān)節(jié)處有兩個(gè)電機(jī),小腿關(guān)節(jié)處有一個(gè)電機(jī),共12個(gè)電機(jī)。
12個(gè)電機(jī)的組合讓CyberDog可以自由地做出奔跑、跳躍、空翻等高難度動(dòng)作。據(jù)悉,這12個(gè)伺服電機(jī)均由小米自研,單個(gè)最大扭矩達(dá)32N·m,最大轉(zhuǎn)速為220rpm,可以讓這只14KG重的CyberDog以11.5km/h的速度前進(jìn).
CyberDog“小腦”使用的國(guó)內(nèi)知名芯片設(shè)計(jì)廠商全志科技的Allwinner MR813。MR813將負(fù)責(zé)MPC算法的執(zhí)行、運(yùn)動(dòng)控制、電源系統(tǒng)管理和OTA系統(tǒng)管理等工作。即CyberDog的四只腳以及上面的12個(gè)伺服電機(jī),都將在MR813的控制下有序地行動(dòng),讓CyberDog不會(huì)出現(xiàn)順拐或者“撲街”。也就是說(shuō)通過(guò)全志MR813芯片對(duì)全身的運(yùn)動(dòng)模塊進(jìn)行控制。
MR813是全志針對(duì)運(yùn)動(dòng)機(jī)器人市場(chǎng)推出的高性能SoC,4核A53架構(gòu),主頻高達(dá)1.6GHz,擁有豐富的音視頻接口和運(yùn)動(dòng)驅(qū)動(dòng)接口。
MR系列芯片已經(jīng)在在掃地機(jī)器人產(chǎn)品上被廣泛應(yīng)用,其中包括小米、石頭、追覓等。
藍(lán)色的全志的東西
就是這樣
Github上面的話是發(fā)現(xiàn)了一個(gè)新的庫(kù),是關(guān)于電機(jī)控制的固件的,我還沒(méi)有看代碼,不知道是什么樣的.
好了,今天的主角是Cyberdog.一開(kāi)始的代碼其實(shí)是小米自己的Gitlab服務(wù)器(應(yīng)該是),在后面的時(shí)候遷移到Github上面. 我們從軟件的構(gòu)架圖開(kāi)始代碼的研究之旅,你也不要問(wèn)我有沒(méi)有用,因?yàn)闆](méi)有人寫,寫也是論文的解讀,個(gè)人覺(jué)得做產(chǎn)品最可貴的事情就是把論文變成代碼.可能這些文章就像老師說(shuō)的一樣,由于你的沒(méi)有耐心沒(méi)有寫下去,但是總歸是有用的.
這個(gè)是軟件的構(gòu)架圖
系統(tǒng)框圖
這個(gè)看的可能更清晰
注意,這里兩個(gè)板子之間的通訊使用網(wǎng)口。
這個(gè)是在左上角的一部分節(jié)點(diǎn),作用是使用手機(jī)的APP控制,至于藍(lán)牙是模塊實(shí)現(xiàn)了:注冊(cè)藍(lán)牙GATT service,發(fā)送BLE廣播,等待手機(jī)APP連接成功后,接收APP發(fā)送的Wifi信息,實(shí)現(xiàn)Wifi的聯(lián)網(wǎng)操作,并返回聯(lián)網(wǎng)結(jié)果,以及通過(guò)APP提供的命令,實(shí)現(xiàn)藍(lán)牙手柄的掃描,連接,達(dá)到通過(guò)手柄控制CyberDog的目的。
手機(jī)這里我也沒(méi)有用過(guò),按照這個(gè)寫法,應(yīng)該是可以在手機(jī)這里實(shí)時(shí)的看到狗子回傳的畫面,使用的RTSP,這個(gè)具體的控制使用的是GRPC.SHM是什么?我不知道,有同學(xué)可以給我解讀一下.
CAN是這里使用的通信方式,至于是什么作用,這里就看命名方式就行
就像這樣Node的作用,自己看名字吧,沒(méi)什么好說(shuō)的
燈傳感器,語(yǔ)音助手,觸摸檢測(cè),Intel的相機(jī)都是單獨(dú)的節(jié)點(diǎn)
這個(gè)是電池,還有語(yǔ)音功能,遠(yuǎn)程的控制命令
定位,建圖,追蹤的功能在這里
上面的所有服務(wù)都集成到DDS,做統(tǒng)一的處理
目前要讀的源碼就是這些,太多了,朋友
核心的庫(kù)目前就是這三個(gè)
最核心的事情都放在這里,ROS2
通用類:
athena_bringup:?jiǎn)?dòng)系統(tǒng)相關(guān),在ROS 2的Launch啟動(dòng)系統(tǒng)上設(shè)計(jì)了更簡(jiǎn)約的啟動(dòng)項(xiàng)管理,對(duì)啟動(dòng)腳本(Python3)和啟動(dòng)內(nèi)容進(jìn)行了隔離。通過(guò)簡(jiǎn)單的參數(shù)配置,新的節(jié)點(diǎn)或新的進(jìn)程便可被添加到啟動(dòng)項(xiàng),而無(wú)需修改腳本內(nèi)容。同時(shí)也支持參數(shù)管理、調(diào)試和開(kāi)關(guān)等功能。
athena_grpc:機(jī)器人與外部通訊的媒介,目前與手機(jī)App進(jìn)行連接是基于GRPC的。
athena_utils:本項(xiàng)目的通用功能倉(cāng),包括基于cascade_lifecycle修改的LifecycleNode基類,和傳感器相關(guān)節(jié)點(diǎn)共用的基類等。
media_vendor:多媒體相關(guān)應(yīng)用需要使用的CMake配置項(xiàng)。
toml11_vendor:toml11的橋接包。
感知類
athena_bms:CyberDog上的電池管理模塊,主要負(fù)責(zé)電池信息的接收與分發(fā)。
athena_body_state:該模塊實(shí)現(xiàn)了整機(jī)運(yùn)動(dòng)狀態(tài)的感知功能,并通過(guò)BodyState上報(bào)posequat和speed_vector兩種message的數(shù)據(jù)(posequat表示整機(jī)姿態(tài)四元數(shù);speed_vector表示整機(jī)運(yùn)動(dòng)的瞬時(shí)速度,單位:m/s)。
athena_lightsensor:該模塊創(chuàng)建了機(jī)器人感知系統(tǒng)中Light Sensor的service和publisher,當(dāng)機(jī)器人需要感知周圍環(huán)境光的強(qiáng)度時(shí),可通過(guò)上層決策層啟動(dòng)該service和publisher,獲取環(huán)境光照度信息。
athena_obstacledetection:該模塊創(chuàng)建了機(jī)器人感知系統(tǒng)中Ultrasonic Sensor的service和publisher。
athena_scenedetection:該模塊為機(jī)器人提供場(chǎng)景檢測(cè)功能,通過(guò)定位芯片獲取當(dāng)前位置信息,同時(shí)通過(guò)衛(wèi)星信號(hào)質(zhì)量判斷機(jī)器人當(dāng)前處于室內(nèi)或室外。
交互類:
bluetooth:該模塊實(shí)現(xiàn)了:注冊(cè)藍(lán)牙GATT service,發(fā)送BLE廣播,等待手機(jī)APP連接成功后,接收APP發(fā)送的Wifi信息,實(shí)現(xiàn)Wifi的聯(lián)網(wǎng)操作,并返回聯(lián)網(wǎng)結(jié)果,以及通過(guò)APP提供的命令,實(shí)現(xiàn)藍(lán)牙手柄的掃描,連接,達(dá)到通過(guò)手柄控制CyberDog的目的。
wifirssi:該模塊的主要功能是創(chuàng)建定時(shí)任務(wù),實(shí)時(shí)查詢當(dāng)前已連接Wifi的信號(hào)強(qiáng)度,并通過(guò)ros2的topic通訊進(jìn)行傳輸。
audio_base:該模塊用于播放多段或單段不定長(zhǎng)PCM音頻數(shù)據(jù)、wav格式音頻文件,其底層實(shí)現(xiàn)為SDL2與SDL_mixer。
audio_interaction:該模塊用于實(shí)現(xiàn)整個(gè)音頻模塊的交互部分,主要包括與其它模塊之間關(guān)于通用播放的交互、語(yǔ)音助手相關(guān)控制與交互功能和與APP(grpc)之間關(guān)于音量調(diào)解的交互功能。
athena_audio
athena_camera:該模塊基于NVIDIA Argus和ROS 2實(shí)現(xiàn)了相機(jī)的基礎(chǔ)功能,包括拍照和錄像等,并為其他模塊(視覺(jué)SDK、圖傳等)提供調(diào)用接口。
athena_led:該模塊用于統(tǒng)一決策系統(tǒng)所有的LED燈效請(qǐng)求,基于ROS2 Service以及sensor_utils類實(shí)現(xiàn),通過(guò)定義不同client的LED消息優(yōu)先級(jí)以及timeout來(lái)實(shí)現(xiàn)對(duì)CyberDog頭燈和尾燈的控制顯示功能。
athena_livestream
athena_touch:該模塊提供了topic為TouchState的publisher, 繼承于athena_utils::LifecycleNode.
目前支持單指單擊報(bào)LPWG_SINGLETAP_DETECTED 和單指長(zhǎng)按3s報(bào)LPWG_TOUCHANDHOLD_DETECTED事件。
athena_wireless
決策類:
athena_decisionmaker:面向業(yè)務(wù)層,負(fù)責(zé)實(shí)現(xiàn)具體業(yè)務(wù)功能。目前提供了automation_manager、ception_manager、interaction_manager和motion_manager。分別用于自動(dòng)化功能、感知功能、人機(jī)交互功能和運(yùn)動(dòng)功能的管理和決策。該四個(gè)模塊均繼承cascade_manager,并在基礎(chǔ)上根據(jù)業(yè)務(wù)功能稍作改動(dòng)。
athena_decisionutils:決策相關(guān)功能的基類和工具類集合,負(fù)責(zé)實(shí)現(xiàn)通用功能。目前提供了cascade_manager,該模塊繼承于athena_utils::LifecycleNode,具備級(jí)聯(lián)/并聯(lián)和單點(diǎn)控制的功能,可以快速管控其作用域下的節(jié)點(diǎn)的啟動(dòng)和關(guān)閉。
接口類:
athena_interfaces:接口總抽象包。
automation_msgs:自動(dòng)化功能相關(guān)接口。
cascade_lifecycle_msgs:級(jí)聯(lián)節(jié)點(diǎn)相關(guān)接口。
ception_msgs:感知功能相關(guān)接口。
interaction_msgs:交互功能相關(guān)接口。
motion_msgs:運(yùn)動(dòng)功能相關(guān)接口。
這個(gè)是開(kāi)源的電機(jī)接口
SDK開(kāi)放了電機(jī)驅(qū)動(dòng)器和機(jī)身IMU傳感器接口,配合cyberdog 1.0.0.94及以上版本使用,方便用戶進(jìn)行運(yùn)動(dòng)控制的二次開(kāi)發(fā)。
具體的一個(gè)接口
通用的接口
在電機(jī)的內(nèi)部還有很多的數(shù)據(jù)結(jié)構(gòu)
電機(jī)的控制信息
審核編輯 :李倩
-
傳感器
+關(guān)注
關(guān)注
2545文章
50445瀏覽量
751031 -
開(kāi)源
+關(guān)注
關(guān)注
3文章
3215瀏覽量
42310 -
機(jī)械狗
+關(guān)注
關(guān)注
0文章
18瀏覽量
4823
原文標(biāo)題:小米Cyberdog源碼開(kāi)源啦!
文章出處:【微信號(hào):TT1827652464,微信公眾號(hào):云深之無(wú)跡】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論