OpenEmber æ¯äžäžªé¢åæºåšäººäžæºèœè®Ÿå€çè¿è¡æ¶ïŒRuntimeïŒèœ¯ä»¶æ¡æ¶ïŒå®è¿è¡åš Linux ç³»ç»ä¹äžïŒæäŸç»äžçé信骚æ¶ãLinux å€è®Ÿ I/OïŒLPIOïŒäžèç¹è¿è¡æºå¶ïŒåž®å©åŒåè 髿æå»ºå€æçåµå ¥åŒæºèœç³»ç»ã
OpenEmber çæ žå¿äœ¿çš C/C++ çŒåïŒéçš Kconfig + CMake + FetchContent æå»ºç³»ç»ãå ROS2 类䌌ïŒOpenEmber 乿¯ååžåŒæ¶æïŒèç¹æš¡åå¯éè¿âååž-订é ïŒpub/subïŒâæºå¶è¿è¡æ¶æ¯éä¿¡ãè¯¥æ¡æ¶å å«è®Ÿå€ç«¯åºçšçšåºåžžè§çæš¡åïŒå æ¬æ¶æ¯éä¿¡ã讟å€ç®¡çãæ°æ®ééãå议解æãç¶æçæ§ãé 眮管çãæ¥å¿è®°åœãè¿çšå级ãåŸåœ¢çé¢çåèœæš¡åãæš¡åä¹éŽéçšæ¶æ¯éä¿¡æºå¶è¿è¡åæ¥ïŒå€©çæ¯æååžåŒéšçœ²ïŒä¹å°±æ¯è¯ŽïŒåèœæš¡åå¯ä»¥éšçœ²åšäžåç硬件平å°ïŒå æ¬åŒæå€æ žå¹³å°ïŒã
OpenEmber æ¥æè¯å¥œçæ¡æ¶è®Ÿè®¡åæ§èœïŒå¯ä»¥äœäžºæºåšäººãæ 人æºãæºèœè®Ÿå€ã蟹çŒè®¡ç®çãå·¥äžæ§å¶åšãå®é²ç³»ç»ãå®¶åºå©æç产åç蜯件起ç¹ãäœ è¿å¯ä»¥äœ¿çš OpenEmber å®ç°äžå¥èªå·±ç AI AgentïŒç±»äŒŒäº OpenClawïŒïŒç±äº OpenEmber éæäºç¡¬ä»¶æäœæ¥å£ïŒå æ¬äŒ æåšãæ§è¡åšãéä¿¡åè®®çïŒïŒå æ€å®çåèœå®é äžå¯ä»¥åå°æŽåŒºïŒæ¯äžå¥ Embodied Agent Runtime æ¡æ¶ã
æä»¬æŸç»çš Linux ç³»ç»åè¿è®žå€åµå ¥åŒ/ç©èçœé¡¹ç®ïŒå æ¬å·¥äžæ§å¶è®Ÿå€ãéä¿¡ç»ç«¯ãæ°æ®éé仪ãé«ç²ŸäŒ æåšãç©èçœã蜊èçœçãåšå€æ¬¡éå€åŒåä¹åïŒè§åŸæå¿ èŠå°äžäºéçšçåèœæš¡åæœè±¡åºæ¥ïŒæ¹äŸ¿å€§å®¶å€çšïŒå éåŒåæŽå€æè¶£ç项ç®ãå æ€ïŒæä»¬åå»ºäº OpenEmber 项ç®ã
OpenEmber äžåªæ¯ Robot Application FrameworkïŒèæ¯äžäžªéçšç Middleware FrameworkïŒçè³æ¯ Next-generation Intelligent Edge Middlewareã
ââââââââââââââââââââââââââââââââââââââââââââââââââ
â Applications â
â demos / tools / robot apps / launch entry â
ââââââââââââââââââââââââââââââââââââââââââââââââââ
â
âŒ
ââââââââââââââââââââââââââââââââââââââââââââââââââ
â Modules â
â drivers / bridges / app modules â
ââââââââââââââââââââââââââââââââââââââââââââââââââ
â
âŒ
ââââââââââââââââââââââââââââââââââââââââââââââââââ
â Core / Runtime â
â Node / Topic / Service / Parameter / Lifecycle â
â Launch / Executor / Diagnostics / Introspectionâ
ââââââââââââââââââââââââââââââââââââââââââââââââââ
â
âŒ
ââââââââââââââââââââââââââââââââââââââââââââââââââ
â Components â
â logging / algorithm / transport / config â
â containers / sqlite / utility libraries â
ââââââââââââââââââââââââââââââââââââââââââââââââââ
â
âŒ
ââââââââââââââââââââââââââââââââââââââââââââââââââ
â Platform â
â osal / hal / thread / timer / can / uart â
ââââââââââââââââââââââââââââââââââââââââââââââââââ-
äžäžªä»åºä»¥ ç°ä»£ C++ 䞺䞻线å®ç°æ žå¿èœåïŒå¹¶éè¿çš³å®ç C ABI 蟹çæäŸâæé对æ§ç C æ¯æâïŒäŸåŠ MISRA åéåºæ¯çæ¥å ¥æš¡æ¿ïŒã
API å Œå®¹çé®é¢éè¿æ¬ä»åºçå·¥çšç»æåå·¥å ·éŸè®Ÿè®¡æ¥è§£å³ïŒäŸåŠé¡¶å±ç CMake 讟计ïŒä» 瀺æïŒïŒ
option(OPENEMBER_ENABLE_CPP "Enable C++ runtime" ON) option(OPENEMBER_ENABLE_C_ADAPTER "Enable C ABI adapter" OFF)
åœçšæ·éæ© âC æ¥å ¥æš¡æ¿â æ¶ïŒé信骚æ¶/transport çèœååªå è®žéæ© C å¯çŽæ¥éŸæ¥çå®ç°ïŒäŸåŠ NNG/LCM/libzmq ç C 䟧æ¥å£ïŒïŒé¿å 绎æ€âå䞻线åæå®ç°âçå€æåºŠã
-
æ¯æäžç§åŒåæ¹åŒïŒ
- çšæ·å¯ä»¥çŽæ¥ clone æ¬ä»åºïŒæ·»å èªå·±çåèœæš¡åïŒäœåç»å级 OpenEmber æ¡æ¶æ¯èŸéº»çŠïŒ
- 䜿çšèææ¶å·¥å
·
ember newçæå¹²åç OpenEmber å·¥çšïŒçšæ·çŽæ¥åšè¯¥æš¡æ¿å·¥çšäžè¿è¡åŒåïŒ - çŽæ¥çæ OpenEmber çåºæä»¶ïŒå¹¶å®è£ å°ç³»ç»ïŒçšæ·åç»å¯ä»¥çŽæ¥éè¿ CMake åŒçš OpenEmber åºïŒç¶ååç¬åŒåå绎æ€èªå·±çæš¡å/èç¹ä»£ç ã
-
äŸèµåºç®¡çïŒæ¯æ FetchContent / Vendor / System äžç§æš¡åŒïŒéè¿
OPENEMBER_THIRD_PARTY_MODEæ§å¶ïŒïŒä»¥äŸ¿åºå®çæ¬ãå¯äžèœœãå¯å级ãFETCHïŒæå»ºæ¶äžèœœåºå®çæ¬å°æå»ºç®åœVENDORïŒäœ¿çšä»åºåthird_party/çå·²èœåºçæ¬SYSTEMïŒäŒå 䜿çšç³»ç»å·²å®è£ äŸèµïŒYocto/äŒäžåºæ¯ïŒ
-
éè¿æä»¶å讟计ïŒå®ç°åºå±äŸèµåºç忢ïŒäŸåŠæ¯æ pub-sub çé信骚æ¶ïŒåºå±å¯èœæ¯ ZeroMQãLCM æ NNGïŒéèŠä¿è¯ API äžåïŒéè¿é 眮æ¹ååºå±è°çšã
openember/ â âââ apps/ â âââ smart_device_demo/ # æå°äº§ååºçšåèå ¥å£ â âââ user_app/ # 产åæçšæ·é¡¹ç®å ¥å£ â âââ system/ # launch_managerãlog_service çç³»ç»èç¹ â âââ services/ # web_consoleãota_agent çå¯éæå¡ â âââ examples/ # hello_nodeãpubsub 瀺äŸäžåèå®ç° â âââ references/ â âââ modules/ â âââ transport/ â â âââ nng/ â â âââ zmq/ â â âââ lcm/ â â â âââ drivers/ â â âââ imu/ â â âââ lidar/ â â âââ motor/ â â â âââ bridges/ â âââ components/ â âââ algorithm/ â âââ logging/ â âââ container/ â âââ database/ â âââ serialization/ â âââ transport/ â âââ core/ â âââ inc/ # æ¡æ¶å ¬å ±å€Žæä»¶ïŒçæé¡¹äž openember.h çïŒ â âââ platform/ â âââ os/ â â âââ linux/ â â â âââ lpio/ â âââ uart/ â âââ spi/ â âââ can/ â âââ gpio/ â âââ third_party/ âââ vendor/ âââ configs/ âââ tools/
smart_device_demo é»è®€ä»¥ Link auto æš¡åŒå¯åšïŒäŒå
äœäžºæ¬æº router çå¬
tcp/127.0.0.1:7447ïŒåŠæè¯¥ç«¯å£å·²æ OpenEmber/Zenoh routerïŒåèªåšåæ¢äžº
client æ¥å
¥ãä¹å¯ä»¥éè¿ --router æ --client æŸåŒæå®æš¡åŒã
OpenEmber v0.1 å°±éçšïŒ
- Fetch é»è®€
- Vendor å¯é
- System å¯é
- Transport æä»¶å
- æ žå¿å±é¶äŸèµ
è¿äŒè®©é¡¹ç®äžåŒå§å°±å ·å€å·¥äžçº§æ°èŽšã
| èç¹åç§° | åç±» | 诎æ |
|---|---|---|
system/launch_manager |
system | å¯åš/çŒæå ¥å£ïŒå WorkflowïŒïŒèŽèŽ£æèµ·ååèç¹äžè¿è¡æ¶åè°ã |
system/log_service |
system | æ¥å¿æå¡èç¹ïŒèŽèŽ£æ¥å¿ééäžæä¹ åã |
system/config_service |
system | é 眮æå¡èç¹ïŒèŽèŽ£é 眮ååäžäžåã |
system/device_manager |
system | 讟å€ç®¡çèç¹ïŒèŽèŽ£è®Ÿå€æ³šåãç¶æç®¡çäžçåœåšæåè°ã |
system/health_monitor |
system | å¥åº·çæ§èç¹ïŒèŽèŽ£ç¶æå·¡æ£äžåèŠã |
services/ota_agent |
services | OTA æå¡èç¹ïŒèŽèŽ£åšçº¿/犻线å级æµçšã |
services/web_console |
services | Web 仪衚çæå¡ïŒæäŸè¿è¡ç¶æå¯è§åäžäº€äºå ¥å£ã |
examples/hello_node |
examples | æå°ç€ºäŸèç¹ïŒçšäºéªè¯è¿è¡ç¯å¢äžæ¥å£è°çšã |
examples/references/sensor_data_reference |
references | åèå®ç°èç¹ïŒæŒç€ºæ°æ®ééèç¹çéçšç»ç»æ¹åŒã |
- é«é¢æ°æ®ïŒiceoryx
- èç¹æ§å¶éä¿¡ïŒZeroMQ / LCM / NNG
- å ¶ä»ïŒRPC
- ç»äžæœè±¡å±
See TODO
OpenEmber éçšäºéèŠé¿æè¿è¡çæºèœè®Ÿå€ïŒè¿äºè®Ÿå€éåžžæè¿äºç¹ç¹ïŒ7Ã24 è¿è¡ïŒæç¶æãæé çœ®ïŒæš¡åé¿æåšçº¿ïŒéèŠè¿çšè¿ç»ŽïŒå级ãçæ§ãæ¥å¿æ¯âç®åŸå¿«âæŽéèŠãäŸåŠæ 人åŒå®ç»ç«¯ïŒæŽè¡£ / å çµ / åšç©ïŒãå·¥äžçœå ³ïŒModbus / CAN / OPC UA èåïŒçã
äžé¢æ¯äžäºå®¢æ·æ¡äŸïŒ
- å·¥äžè®Ÿå€æ§å¶åš
- 蜮åŒ/è ¿è¶³åŒæºåšäºº
- æºèœäŒ æåšïŒæ¿å é·èŸŸïŒ
- èŸ¹çŒ AI 讟å€
- æºèœå塿º
- æºèœå®¶å± æ§å¶åš
- ç¯ä¿æ°é仪
- èªå©æŽèœŠæº
- é£å èªåšç§°é计莹æ§å¶åš
- æºèœè倩æºåšäººïŒAI AgentïŒ
- æºèœååŸåæ¶æº
åŠå€ïŒOpenEmber å¯äœäžº ROS çâ硬件é犻å±âïŒROS éè¿ OpenEmber çéä¿¡æš¡åæ¿æ°æ®ãæ§å¶ç¡¬ä»¶ã