|
5 | 5 | <div align=center>
|
6 | 6 | <img src="./doc/image/XRobot.jpeg" height="100">
|
7 | 7 | <p>
|
| 8 | + |
8 | 9 | 是时候使用现代化的方式来进行嵌入式开发了!
|
9 | 10 | <p>
|
| 11 | + |
10 | 12 | <img src="https://img.shields.io/github/license/xrobot-org/XRobot.svg"/>
|
11 | 13 | <img src="https://img.shields.io/github/repo-size/xrobot-org/XRobot.svg"/>
|
12 | 14 | <img src="https://img.shields.io/github/last-commit/xrobot-org/XRobot.svg"/>
|
13 | 15 | <img src="https://img.shields.io/badge/language-c/c++-F34B7D.svg"/>
|
14 | 16 |
|
| 17 | +<p> |
| 18 | + |
15 | 19 | <img src="https://github.com/xrobot-org/XRobot/actions/workflows/build_publish.yml/badge.svg"/>
|
16 | 20 | <img src="https://github.com/xrobot-org/XRobot/actions/workflows/publish_repo.yml/badge.svg"/>
|
17 | 21 |
|
|
31 | 35 |
|
32 | 36 | 提起嵌入式开发,绝大多数团队或者公司都在以一种效率极其低下的方式来拼凑逻辑和功能,很难将现代的软件开发的思想融入到当中去。当然,其中不乏有优秀的项目和例子,其规范的代码风格,先进的架构和编译系统都值得深究。但他们往往都局限于某种平台或者应用,例如PX4专注于无人机系统,主要支持ROS和Nuttx。而那些主要面向MCU的框架,例如ESP-IDF、BabyOS等,自身都有较大的局限性。所以是否能有一种方式,既能实现现代化的开发,又能完美兼容裸机到RTOS再到Linux,甚至是运动学仿真呢?这就是我们的尝试——XRobot。
|
33 | 37 |
|
34 |
| -## 性能 |
| 38 | +## 获取源代码 |
| 39 | + |
| 40 | +[github主仓库](https://github.com/xrobot-org/XRobot.git): `git clone https://github.com/xrobot-org/XRobot.git` |
| 41 | + |
| 42 | +[gitee镜像](https://gitee.com/x-robot/XRobot.git): `git clone https://gitee.com/x-robot/XRobot.git` |
| 43 | + |
| 44 | +## 性能、空间与开发效率兼得 |
| 45 | + |
| 46 | +最小32k flash + 8k ram即可运行完整demo。 |
35 | 47 |
|
36 | 48 | ### MCU
|
37 | 49 |
|
38 | 50 | > can总线微动模块
|
39 | 51 |
|
40 | 52 | 使用STM32F103C8,通过CAN总线上报多个微动开关状态。自带命令行更改CAN ID与上报频率。SRAM占用4.35kb,Flash占用46.3kb。
|
41 | 53 |
|
| 54 | +> 双canfd转uart模块 |
| 55 | +
|
| 56 | +使用STM32G0B1,实现两路canfd(5mbps)转uart,保证不丢包的前提下,两路canfd总线可以跑到满速。SRAM占用5.2kb,Flash占用45.6kb。 |
| 57 | + |
| 58 | +> canfd九轴imu模块 |
| 59 | +
|
| 60 | +使用STM32G431KB,传感器为icm42688+mmc5603。USB命令行实现陀螺仪零偏与磁力计椭圆校准,uart和canfd接口最高1000hz发送数据,数据包含四元数、欧拉角、加速度、角速度和磁场。SRAM占用28.5kb,Flash占用91kb。 |
| 61 | + |
42 | 62 | > 工程机器人
|
43 | 63 |
|
44 |
| -使用STM32F407IG,单板实现控制底盘、抓取机构等十五个电机和三个can总线微动模块。同时接收自定义控制器/裁判系统/遥控器数据,绘制自定义UI,板载陀螺仪AHRS姿态解算,命令行和日志打印。SRAM占用30.6k,CCMRAM占用64k,flash占用197.5k。 |
| 64 | +使用STM32F407IG,单板实现控制底盘、抓取机构等十五个电机和三个can总线微动模块。同时接收自定义控制器/裁判系统/遥控器数据,绘制自定义UI,板载bmi088陀螺仪AHRS姿态解算,命令行和日志打印。SRAM占用30.6k,CCMRAM占用64k,flash占用197.5k。 |
45 | 65 |
|
46 | 66 | ### Linux
|
47 | 67 |
|
|
53 | 73 | * VSCode/CLion一键编译调试与ClangTidy代码检查
|
54 | 74 | * 完善的[文档](https://xrobot-org.github.io)与入门教程
|
55 | 75 | * CI/CD自动构建和固件发布
|
| 76 | +* 应用层全部使用C++编写,代码复用率高 |
56 | 77 | * 兼容多开发板和操作系统(Linux/Webots仿真/FreeRTOS/裸机)
|
57 | 78 | * 图形化/命令行参数配置
|
58 | 79 | * 命令行界面(CLI)与消息订阅发布
|
@@ -101,61 +122,74 @@ XRobot基本部分是一套开发板与功能模块的管理系统,能够让
|
101 | 122 |
|
102 | 123 | > 成品模块
|
103 | 124 |
|
104 |
| -* 六轴CAN总线IMU模块 |
| 125 | +* 六轴/九轴CAN总线IMU模块 |
105 | 126 | * CAN转UART模块
|
106 | 127 | * BLE配网模块
|
107 | 128 | * CAN总线微动检测模块
|
108 |
| -* 诸多商业产品案例 |
| 129 | +* ... |
| 130 | + |
| 131 | +> 上市产品 |
| 132 | +
|
| 133 | +* 敬请期待 |
| 134 | + |
| 135 | +## 机器人展示 |
| 136 | + |
| 137 | +<div align=center> |
| 138 | + |
| 139 | +| | | | |
| 140 | +| ---------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | |
| 141 | +| <img src="./doc/image/rmuc.jpg" height="210" width="265"> | <img src="./doc/image/rmuc1.jpg" height="210" width="265"> | <img src="./doc/image/rmuc2.jpg" height="210" width="265"> | |
109 | 142 |
|
110 |
| -| | | | |
111 |
| -| -------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | |
112 |
| -| `<img src="./doc/image/rmuc.jpg" height="210" width="265">` | `<img src="./doc/image/rmuc1.jpg" height="210" width="265">` | `<img src="./doc/image/rmuc2.jpg" height="210" width="265">` | |
113 | 143 |
|
114 |
| -<img src="./doc/image/rmuc3.jpg" height="600" width="800"> |
| 144 | +<img src="./doc/image/rmuc3.jpg" height="640" width="960"> |
115 | 145 |
|
116 | 146 | `以上机器人均使用XRobot驱动`
|
117 | 147 |
|
| 148 | +</div> |
| 149 | + |
118 | 150 | ## 硬件支持
|
119 | 151 |
|
120 |
| -| MCU | Board | Image | |
121 |
| -| ----------- | --------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- | |
122 |
| -| STM32F407IG | [Robomaster C型开发板](https://www.robomaster.com/zh-CN/products/components/general/development-board-type-c/info) | `<img src="doc/image/rm-c.png" width="500" height="220">` | |
123 |
| -| STM32F302CB | [IMU-DEV-BOARD](https://xrobot-org.github.io/1.hardware/3.IMU-DEV.html) | `<img src="doc/image/IMU-DEV-1.jpg" width="350" height="200">` | |
124 |
| -| STM32F446RE | [C-Mini](https://xrobot-org.github.io/1.hardware/1.C-MINI.html) | `<img src="doc/image/C-MINI-1.jpg" width="350" height="250">` | |
125 |
| -| STM32F103 | [F103 CAN](https://xrobot-org.github.io/1.hardware/4.F103_CAN.html) | `<img src="doc/image/f103_can.jpeg" width="350" height="250">` | |
126 |
| -| ESP32-C3 | [ESP32C3-Core](https://xrobot-org.github.io/1.hardware/2.ESP32C3-Core.html) | `<img src="doc/image/esp32c3-core-1.jpeg" width="260" height="200">` | |
127 |
| -| Linux x86 | [Intel NUC](https://www.intel.cn/content/www/cn/zh/products/details/nuc.html) | `<img src="doc/image/nuc.jpg" width="350" height="200">` | |
128 |
| -| Linux arm | [Raspberry pi 4B](https://www.raspberrypi.com/) | `<img src="doc/image/raspi.png" width="350" height="200">` | |
129 |
| -| Linux arm | [mCore-R818](https://mangopi.org/mcorer818) | `<img src="doc/image/mCore-R818.jpg" width="200" height="200">` | |
| 152 | +| MCU | Board | Image | |
| 153 | +| ----------- | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------ | |
| 154 | +| STM32F407IG | [Robomaster C型开发板](https://www.robomaster.com/zh-CN/products/components/general/development-board-type-c/info) | <img src="doc/image/rm-c.png" width="500" height="220"> | |
| 155 | +| STM32F302CB | [IMU-DEV-BOARD](https://xrobot-org.github.io/1.hardware/3.IMU-DEV.html) | <img src="doc/image/IMU-DEV-1.jpg" width="350" height="200"> | |
| 156 | +| STM32F446RE | [C-Mini](https://xrobot-org.github.io/1.hardware/1.C-MINI.html) | <img src="doc/image/C-MINI-1.jpg" width="350" height="250"> | |
| 157 | +| STM32F103 | [F103 CAN](https://xrobot-org.github.io/1.hardware/4.F103_CAN.html) | <img src="doc/image/f103_can.jpeg" width="350" height="250"> | |
| 158 | +| ESP32-C3 | [ESP32C3-Core](https://xrobot-org.github.io/1.hardware/2.ESP32C3-Core.html) | <img src="doc/image/esp32c3-core-1.jpeg" width="260" height="200"> | |
| 159 | +| Linux x86 | [Intel NUC](https://www.intel.cn/content/www/cn/zh/products/details/nuc.html) | <img src="doc/image/nuc.jpg" width="350" height="200"> | |
| 160 | +| Linux arm | [Raspberry pi 4B](https://www.raspberrypi.com/) | <img src="doc/image/raspi.png" width="350" height="200"> | |
| 161 | +| Linux arm | [mCore-R818](https://mangopi.org/mcorer818) | <img src="doc/image/mCore-R818.jpg" width="200" height="200"> | |
130 | 162 |
|
131 | 163 | ## 图片展示
|
132 | 164 |
|
133 |
| -`VSCode与openOCD联合调试` |
| 165 | + `VSCode与openOCD联合调试` |
134 | 166 |
|
135 | 167 | 
|
136 | 168 |
|
137 |
| -`Windows使用Mingw64原生开发` |
| 169 | + `Windows使用Mingw64原生开发` |
138 | 170 |
|
139 | 171 | 
|
140 | 172 |
|
141 |
| -`Windows11使用CLion在WSL下开发` |
| 173 | + `Windows11使用CLion在WSL下开发` |
142 | 174 |
|
143 | 175 | 
|
144 | 176 |
|
145 |
| -`XRobot作为外部控制器在Webots进行运动学仿真` |
| 177 | + `XRobot作为外部控制器在Webots进行运动学仿真` |
146 | 178 |
|
147 | 179 | 
|
148 | 180 |
|
149 |
| -`利用命令行查看log、校准陀螺仪、监控电机运行数据和机器人参数配置` |
| 181 | + `利用命令行查看log、校准陀螺仪、监控电机运行数据和机器人参数配置` |
150 | 182 |
|
151 | 183 | 
|
152 | 184 |
|
153 |
| -`自定义UI框架` |
| 185 | + `自定义UI框架` |
154 | 186 |
|
155 | 187 | 
|
156 | 188 |
|
157 | 189 | ## 相关依赖
|
158 | 190 |
|
159 |
| -订阅发布/日志相关功能由[OneMessage](https://github.com/Jiu-xiao/OneMessage.git)提供:`一个基于发布-订阅模型的跨平台消息框架,纯C语言编写,性能和灵活性极高` |
| 191 | +订阅发布/日志相关功能由[OneMessage](https://github.com/Jiu-xiao/OneMessage.git)提供: `一个基于发布-订阅模型的跨平台消息框架,纯C语言编写,性能和灵活性极高` |
| 192 | + |
| 193 | +命令行/文件系统相关功能由[MiniShell](https://github.com/Jiu-xiao/mini_shell.git)提供: `无需操作系统与动态内存分配的嵌入式Shell` |
160 | 194 |
|
161 |
| -命令行/文件系统相关功能由[MiniShell](https://github.com/Jiu-xiao/mini_shell.git)提供:`无需操作系统与动态内存分配的嵌入式Shell` |
| 195 | +Flash数据库由[MiniFlashDB](https://github.com/Jiu-xiao/MiniFlashDB.git)和[EasyFlash](https://github.com/armink/EasyFlash.git)提供。 |
0 commit comments