萤火虫创想 发表于 2024-11-19 19:15:34

小白机器人Newbot开源ROS机器人

本帖最后由 萤火虫创想 于 2024-11-19 19:20 编辑

# 一、项目背景



相信大家都知道超能陆战队中的大白,拥有一台能行走,能看,能听会说,会思考的机器人,一定是很多科技爱好者的愿望,随着人工智能的发展,以及供应链和加工制造业的完善,离普通人造一台属于自己的大白机器人不再那么遥远。



由于时间关系和技术水平有限,所以本项目尽量简化了机器人的机械结构,设计了一台外观简约但是功能强大的桌面机器人,并且发挥我本职工作算法调包侠的优势,让他拥有了一颗聪明的AI大脑。



对于这个机器人的外观,有的人说像墨水瓶,有的人说像电饭锅,有的人说像托马斯小火车,有的人说像赛尔号,还有说像地雷的。我把它取名为“小白”,首先这个名字来源于电影中的“大白”,而它的外观小巧并且是白色的,其次“小白”在现代汉语中也有新手、初学者的意思,用来提醒自己要拓宽视野不断学习,也提醒机器人的AI模型要不断学习。

为了和大家一起交流和进步,现在将小白机器人的软硬件所有资料全部开源。下面分硬件、结构、软件三个方面向大家汇报一下小白机器人的技术细节。

# 二、硬件

## 1.硬件总体设计

做硬件,首先要确定一下小白机器人的核心CPU,有近些年火热的ESP32和昂贵的Linux SOC两种选择,最终还是选择了能跑Linux的RK3566芯片,虽然价格昂贵、功耗高、发热重、体积大,但是在Linux系统下编程更加自由,功能更加容易扩展,有大量的开源项目可供使用,不必自己重新造轮子,例如下文中会提到的强大的ros系统。
确定了处理器之后,机器人上肯定少不了一块液晶屏,为的是和用户进行人机交互,显示个表情包啥的,提供必要的情绪价值。
要想让机器人能看见这个世界,必须需要安装一个摄像头;要机器人能听会说,麦克风和扬声器也是必须要的;要实现机器人能走路,最简单的方式就是安装两个差速轮,并且为了支持它到处跑,电池供电也是必不可少的。
另外为了机器人在室内环境中能够避障和导航,我还为小白机器人的顶部配备了单线激光雷达;为了实现机器人常见的离线命令词控制,内置了离线语音芯片;为了实现待机充电,在机器人内部做了电源切换和充电电路。

最后确定下来的硬件整体框架如下:

!(//image.lceda.cn/oshwhub/c4f46dd861374a51a98a6138872107c2.png)

## 2.采购清单

硬件采购清单如下,仅供参考(以下不包括底盘PCB单面SMT用到的元器件,如果两面全手工焊接需要根据原理图另行购买元器件):

!(//image.lceda.cn/oshwhub/d7175dba2a314c57a387299946d64447.png)

## 3.原理图和PCB

主板采用了现成的香橙派3B,而STM32控制板需要在嘉立创打样完成,主要是用于电源管理和移动底盘控制:

!(//image.lceda.cn/oshwhub/017e760fa359483ab2df00e319116d87.png)

!(//image.lceda.cn/oshwhub/6b14379899a440c4a5d6b0f51887676b.png)

!(//image.lceda.cn/oshwhub/6ccb8154313948c3a4e6ed38ccedf737.png)

!(//image.lceda.cn/oshwhub/96c4e6e9a0bb4bc08eee6673f55e0130.png)

另外还有比较简单的电池盒转接板、USB线转接板、USB串口板:

!(//image.lceda.cn/oshwhub/de0e6b13345b4dcba5f932f4422e97b5.png)

!(//image.lceda.cn/oshwhub/07fdff3b36364b5d8188ed0eb8d76133.png)

!(//image.lceda.cn/oshwhub/024ca51b779a40889ab31ed79582dde4.png)

## 4.硬件参数

|   项目   |                  参数                  |
| :----------: | :----------------------------------------: |
|   产品型号   |               newbot1.0                  |
|主芯片SOC   |            Rockchip RK3566               |
|   CPU      |         四核64位Cortex-A55 1.8GHz          |
|   NPU      | 1T算力 支持TensorFlow/ONNX/PyTorch模型转换 |
|   VPU      |         H.264/H.265/JPEG硬件编解码         |
|   RAM      |               LPDDR4 2GB               |
|   ROM      |               eMMC 32GB                  |
|Wi-Fi+蓝牙|               Wi-Fi 5+BT 5.0               |
| 控制芯片MCU|               STM32F103C8T6                |
|   电池容量   |          两节18650共7000mAh 3.7V         |
|机器人尺寸|            直径12cm 高度约10cm             |
| 摄像头分辨率 |               1280x800 30FPS               |
|   屏幕尺寸   |             1.28寸SPI圆形屏幕            |
|   操作系统   |                Ubuntu20.04               |
|   ROS版本    |                ROS1 Noetic               |



# 三、结构

## 1.外观设计

对于结构部分,小白机器人的外壳采用工业界常用的Solidworks软件进行绘制。

**注意**:3D打印采用光固化打印,没有尝试过普通的FDM打印机。

!(//image.lceda.cn/oshwhub/b44a1cd3fbaa4ca7bde6213a0f62bd02.png)

!(//image.lceda.cn/oshwhub/1049d93154044eddaa60e96002f6a590.png)

## 2.内部结构设计

小白机器人充分利用了壳体内的空间,在直径12厘米的圆柱体内,从下至上大致分成了电机、电池、主板、激光雷达四层空间,做到了体积小巧但功能丰富。

!(//image.lceda.cn/oshwhub/76c7c6a8109f49bb8325017996cee814.png)



## 3.激光雷达的安装

目前支持YDLidar X2、M1C1_MINI、乐动LD14等多款雷达,YDLidar X2的雷达孔位,也适用于顶部有个小红点的乐动LD14,但是M1C1_MINI的孔位距离更长,具体细节可参考雷达手册。

小白机器人的接口线序和组装详细步骤也放到了项目主页,您可以从零开始一步步组装好机器人的每一个零件。

**注意**:根据激光雷达的类型不同,孔位位置不同,要选用不同的上壳结构:

!(//image.lceda.cn/oshwhub/bdc129f6d0f64a4f9916d6e7a4f758ba.png)

!(//image.lceda.cn/oshwhub/0d2caeaef8384e17be7c4679017ddc63.png)



# 四、软件

## 1.软件整体框架

### (1)ROS系统简介

ROS(机器人操作系统,Robot Operating System),是专为机器人软件开发所设计出来的一套电脑操作系统架构。小白机器人的软件在ROS框架下构建,需要掌握ROS基本的命令行工具、可视化工具、工程编译方法、ROS Launch文件、C++和Python语言等ROS开发基础。

推荐ROS入门课程:

ROS官方教程https://wiki.ros.org/cn

古月居GYH [【古月居】古月·*ROS*入门21讲 | 一学就会的*ROS*机器人入门教程](https://www.bilibili.com/video/BV1zt411G7Vn/)

机器人工匠阿杰 [机器人操作系统 *ROS* 快速入门教程](https://www.bilibili.com/video/BV1BP4y1o7pw/)



ROS包括了通信机制、开发工具、应用功能和生态系统四个部分:

!(//image.lceda.cn/oshwhub/3dad8f9594b14501aa902e68e56196f2.png)



ROS的通信机制主要有Topic、Service、Action三大方式,最常用的是Topic:

!(//image.lceda.cn/oshwhub/23638d5b9efd460994f4cbd950288759.png)

ROS常用的可视化工具有rviz、rqt、rqt_image_view、rqt_graph、rqt_plot等,ROS主要应用于移动机器人底盘(SLAM、NAV)、机械臂(MoveIt)和底盘与机械臂结合的复合机器人。

!(//image.lceda.cn/oshwhub/2050593692c64196b0b412dbea888d16.png)

### (2)本系统的主要软件功能

这是本项目的三大主要软件功能,包括了语音交互、图像识别、移动导航。

!(//image.lceda.cn/oshwhub/cff787b40eac4ad6b4ce1f24ec3a8359.png)

### (3)本系统的ROS节点图

左侧是图像的采集处理流程,先读取USB相机原始的JPEG格式数据,然后解码和缩放,送入yolov6处理模块,处理得到检测框和绘制了检测框的图像,然后送入跟踪模块,得到绘制了跟踪结果的图像,最后送到JPEG编码节点,发布出去方便电脑或手机接收查看。

注意这里的解码、缩放以及最后的编码都是调用了RK3566的硬件编解码能力,而yolov6使用了RK3566 RKNN的AI加速能力。

!(//image.lceda.cn/oshwhub/6072cb5b6f494e2dbe09a3d5ff66aff4.png)

右侧是其他处理流程,包括了底盘控制节点base_control,雷达驱动节点/m1c1_mini,离线唤醒命令处理节点wakeup_process,纯python编写的语音处理节点audio,精确移动和旋转命令执行节点/move_client_cmd和/move_server。下文会对核心的几个节点做简单介绍。

!(//image.lceda.cn/oshwhub/c63872cee22d4064ba9964cb8b7f5ab6.png)


# 项目主页

(https://newbot.readthedocs.io)

备用地址:(https://gitee.com/cv-robot/newbot/tree/master/readthedocs)



# 嘉立创硬件开源

(https://oshwhub.com/lw95/newbot)



# gitee软件开源

(https://gitee.com/cv-robot/newbot)



# B站视频链接

[【开源】如何手工打造一台理想中的机器人?](https://www.bilibili.com/video/BV1LWUYYjEUg)

[电饭锅们出来军训了ʕ ᵔᴥᵔ ʔ](https://www.bilibili.com/video/BV1TTDBYnE8H)

RRoy 发表于 2024-11-20 09:08:50

{:5_154:} 太强了

木子呢 发表于 2024-11-20 10:24:18

欢迎大佬!!!

zoey不种土豆 发表于 2024-11-20 10:26:50

{:6_215:} 关注啦!

muzyli 发表于 2024-11-20 10:38:03

{:6_209:}好强好有用

杨饭团 发表于 2024-11-20 10:41:17

收藏了 谢谢大佬分享 整套下来大概要多少呀

blueee 发表于 2024-11-20 10:41:22

强!能多分享几个类似的精彩项目不

粒子 发表于 2024-11-20 10:53:00

厉害了! 感谢大佬分享{:5_128:}
页: [1]
查看完整版本: 小白机器人Newbot开源ROS机器人