小米Cyberdog源码开源啦!

2022-08-05 11:49:38 浏览数 (1)

我到处说小米没开源,我真没素质,其实人家已经开源了...不过是20个月前开的,是我的锅.

小米机械狗CyberDog云体验 其实在当时我已经写一个这样的与体验的文章,听着群里面的怂恿还在微博上面私信了雷军(真的是属于教唆犯罪了),结果当然是没有尿我啦~

不过之后也有读者加我给我展示他买的狗子,哈哈哈,翻跟头的声音有点大了,之后AirLAB实验室也有一只狗子,不过我也没有去摸了,遗憾~

好了,闲话不多说让我们开始今天的这个文章主题.Cyberdog主要使用了MIT的开源代码Mini Cheetah(也就是MPC) 以及 ROS 2的开源平台制作的一个机器人.

原版就是这样,其实这个更有科技感

总之人家就是开源的啦

方案是英伟达的进行算,全志的来下达这个CMD

传感器包括:Intel Realsense D450深度摄像头、AI交互相机、双目超广角相机、TOF传感器、环境光传感器、超声波传感器、惯性测量单元、GPS模组、地磁传感器、光流计、6MIC环型阵列、触摸传感器.

CyberDog全身的自由度是12,单腿的自由度是3,即每只脚大腿关节处有两个电机,小腿关节处有一个电机,共12个电机。

12个电机的组合让CyberDog可以自由地做出奔跑、跳跃、空翻等高难度动作。据悉,这12个伺服电机均由小米自研,单个最大扭矩达32N·m,最大转速为220rpm,可以让这只14KG重的CyberDog以11.5km/h的速度前进.

CyberDog“小脑”使用的国内知名芯片设计厂商全志科技的Allwinner MR813。MR813将负责MPC算法的执行、运动控制、电源系统管理和OTA系统管理等工作。即CyberDog的四只脚以及上面的12个伺服电机,都将在MR813的控制下有序地行动,让CyberDog不会出现顺拐或者“扑街”。也就是说通过全志MR813芯片对全身的运动模块进行控制。

MR813是全志针对运动机器人市场推出的高性能SoC,4核A53架构,主频高达1.6GHz,拥有丰富的音视频接口和运动驱动接口。

MR系列芯片已经在在扫地机器人产品上被广泛应用,其中包括小米、石头、追觅等。

蓝色的全志的东西

就是这样

Github上面的话是发现了一个新的库,是关于电机控制的固件的,我还没有看代码,不知道是什么样的.

好了,今天的主角是Cyberdog.一开始的代码其实是小米自己的Gitlab服务器(应该是),在后面的时候迁移到Github上面.

我们从软件的构架图开始代码的研究之旅,你也不要问我有没有用,因为没有人写,写也是论文的解读,个人觉得做产品最可贵的事情就是把论文变成代码.可能这些文章就像老师说的一样,由于你的没有耐心没有写下去,但是总归是有用的.

这个是软件的构架图

系统框图

这个看的可能更清晰

注意,这里两个板子之间的通讯使用网口。

这个是在左上角的一部分节点,作用是使用手机的APP控制,至于蓝牙是模块实现了:注册蓝牙GATT service,发送BLE广播,等待手机APP连接成功后,接收APP发送的Wifi信息,实现Wifi的联网操作,并返回联网结果,以及通过APP提供的命令,实现蓝牙手柄的扫描,连接,达到通过手柄控制CyberDog的目的。

手机这里我也没有用过,按照这个写法,应该是可以在手机这里实时的看到狗子回传的画面,使用的RTSP,这个具体的控制使用的是GRPC.SHM是什么?我不知道,有同学可以给我解读一下.

CAN是这里使用的通信方式,至于是什么作用,这里就看命名方式就行

就像这样Node的作用,自己看名字吧,没什么好说的

灯传感器,语音助手,触摸检测,Intel的相机都是单独的节点

这个是电池,还有语音功能,远程的控制命令

定位,建图,追踪的功能在这里

上面的所有服务都集成到DDS,做统一的处理

目前要读的源码就是这些,太多了,朋友

核心的库目前就是这三个

最核心的事情都放在这里,ROS2

通用类:

athena_bringup:启动系统相关,在ROS 2的Launch启动系统上设计了更简约的启动项管理,对启动脚本(Python3)和启动内容进行了隔离。通过简单的参数配置,新的节点或新的进程便可被添加到启动项,而无需修改脚本内容。同时也支持参数管理、调试和开关等功能。

athena_grpc:机器人与外部通讯的媒介,目前与手机App进行连接是基于GRPC的。

athena_utils:本项目的通用功能仓,包括基于cascade_lifecycle修改的LifecycleNode基类,和传感器相关节点共用的基类等。

media_vendor:多媒体相关应用需要使用的CMake配置项。

toml11_vendor:toml11的桥接包。

感知类

athena_bms:CyberDog上的电池管理模块,主要负责电池信息的接收与分发。

athena_body_state:该模块实现了整机运动状态的感知功能,并通过BodyState上报posequat和speed_vector两种message的数据(posequat表示整机姿态四元数;speed_vector表示整机运动的瞬时速度,单位:m/s)。

athena_lightsensor:该模块创建了机器人感知系统中Light Sensor的service和publisher,当机器人需要感知周围环境光的强度时,可通过上层决策层启动该service和publisher,获取环境光照度信息。

athena_obstacledetection:该模块创建了机器人感知系统中Ultrasonic Sensor的service和publisher。

athena_scenedetection:该模块为机器人提供场景检测功能,通过定位芯片获取当前位置信息,同时通过卫星信号质量判断机器人当前处于室内或室外。

交互类:

bluetooth:该模块实现了:注册蓝牙GATT service,发送BLE广播,等待手机APP连接成功后,接收APP发送的Wifi信息,实现Wifi的联网操作,并返回联网结果,以及通过APP提供的命令,实现蓝牙手柄的扫描,连接,达到通过手柄控制CyberDog的目的。

wifirssi:该模块的主要功能是创建定时任务,实时查询当前已连接Wifi的信号强度,并通过ros2的topic通讯进行传输。

audio_base:该模块用于播放多段或单段不定长PCM音频数据、wav格式音频文件,其底层实现为SDL2与SDL_mixer。

audio_interaction:该模块用于实现整个音频模块的交互部分,主要包括与其它模块之间关于通用播放的交互、语音助手相关控制与交互功能和与APP(grpc)之间关于音量调解的交互功能。

athena_audio

athena_camera:该模块基于NVIDIA Argus和ROS 2实现了相机的基础功能,包括拍照和录像等,并为其他模块(视觉SDK、图传等)提供调用接口。

athena_led:该模块用于统一决策系统所有的LED灯效请求,基于ROS2 Service以及sensor_utils类实现,通过定义不同client的LED消息优先级以及timeout来实现对CyberDog头灯和尾灯的控制显示功能。

athena_livestream

athena_touch:该模块提供了topic为TouchState的publisher, 继承于athena_utils::LifecycleNode.

目前支持单指单击报LPWG_SINGLETAP_DETECTED 和单指长按3s报LPWG_TOUCHANDHOLD_DETECTED事件。

athena_wireless

决策类:

athena_decisionmaker:面向业务层,负责实现具体业务功能。目前提供了automation_manager、ception_manager、interaction_manager和motion_manager。分别用于自动化功能、感知功能、人机交互功能和运动功能的管理和决策。该四个模块均继承cascade_manager,并在基础上根据业务功能稍作改动。

athena_decisionutils:决策相关功能的基类和工具类集合,负责实现通用功能。目前提供了cascade_manager,该模块继承于athena_utils::LifecycleNode,具备级联/并联和单点控制的功能,可以快速管控其作用域下的节点的启动和关闭。

接口类:

athena_interfaces:接口总抽象包。

automation_msgs:自动化功能相关接口。

cascade_lifecycle_msgs:级联节点相关接口。

ception_msgs:感知功能相关接口。

interaction_msgs:交互功能相关接口。

motion_msgs:运动功能相关接口。

这个是开源的电机接口

SDK开放了电机驱动器和机身IMU传感器接口,配合cyberdog 1.0.0.94及以上版本使用,方便用户进行运动控制的二次开发。

具体的一个接口

通用的接口

在电机的内部还有很多的数据结构

电机的控制信息

今天太晚了,明天继续写。不过有一说一,这个1W的狗是真的不贵,求个大佬给我玩玩狗。

代码语言:javascript复制
https://jishuin.proginn.com/p/763bfbd63f1a
代码语言:javascript复制
https://www.bilibili.com/video/av45112508/
代码语言:javascript复制
https://partner-gitlab.mioffice.cn/cyberdog/athena_automation
代码语言:javascript复制
https://partner-gitlab.mioffice.cn/cyberdog/athena_vision
代码语言:javascript复制
https://partner-gitlab.mioffice.cn/cyberdog/athena_cyberdog
代码语言:javascript复制
https://github.com/MiRoboticsLab

0 人点赞