我到处说小米没开源,我真没素质,其实人家已经开源了...不过是20个月前开的,是我的锅. 小米机械狗CyberDog云体验 其实在当时我已经写一个这样的与体验的文章,听着群里面的怂恿还在微博上面私信了雷军(真的是属于教唆犯罪了),结果当然是没有尿我啦~ 不过之后也有读者加我给我展示他买的狗子,哈哈哈,翻跟头的声音有点大了,之后AirLAB实验室也有一只狗子,不过我也没有去摸了,遗憾~ 好了,闲话不多说让我们开始今天的这个文章主题.Cyberdog主要使用了MIT的开源代码Mini Cheetah(也就是MPC) 以及 ROS 2的开源平台制作的一个机器人.
传感器包括: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及以上版本使用,方便用户进行运动控制的二次开发。
具体的一个接口
通用的接口
在电机的内部还有很多的数据结构
电机的控制信息
审核编辑 :李倩
-
传感器
+关注
关注
2551文章
51084浏览量
753434 -
开源
+关注
关注
3文章
3342浏览量
42490 -
机械狗
+关注
关注
0文章
18浏览量
4836
原文标题:小米Cyberdog源码开源啦!
文章出处:【微信号:TT1827652464,微信公众号:云深之无迹】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论