[{"data":1,"prerenderedAt":322},["ShallowReactive",2],{"content-query-Hoj5yCUffO":3},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"date":10,"cover":11,"type":12,"category":13,"body":14,"_type":316,"_id":317,"_source":318,"_file":319,"_stem":320,"_extension":321},"/technology-blogs/zh/3565","zh",false,"","开源之夏系列 | 基于昇思 MindSpore+ 香橙派的具身智能应用开发","开源之夏，是由中国科学院软件研究所发起，专为高校学生精心打造的活动。旨在鼓励广大学子积极参与开源软件的开发与维护，推动优秀开源软件社区的蓬勃发展。","2024-12-31","https://obs-mindspore-file.obs.cn-north-4.myhuaweicloud.com/file/2025/01/08/54e6023e73494e289d14fef9be1fc2f9.png","technology-blogs","实践",{"type":15,"children":16,"toc":311},"root",[17,25,30,35,43,52,57,62,75,86,91,99,104,112,117,122,127,132,137,142,147,152,157,164,169,177,182,189,194,198,206,211,218,223,230,235,240,248,255,260,268,273,280,285,293,298,306],{"type":18,"tag":19,"props":20,"children":22},"element","h1",{"id":21},"开源之夏系列-基于昇思-mindspore-香橙派的具身智能应用开发",[23],{"type":24,"value":8},"text",{"type":18,"tag":26,"props":27,"children":28},"p",{},[29],{"type":24,"value":9},{"type":18,"tag":26,"props":31,"children":32},{},[33],{"type":24,"value":34},"目前，开源之夏2024已圆满结项！在本届开源之夏中，不少开发者跟随昇思MindSpore一起，在开源的世界里畅游，成功完成项目任务。在此，昇思 MindSpore 开源社区邀请了开源之夏的开发者们，分享他们在本次活动中的宝贵经验与心得。我们希望通过这些精彩的项目经历和实战技巧，能够激发更多创意火花，帮助大家提升技术能力。本文为昇思MindSpore 开源之夏项目经验分享系列第7篇。",{"type":18,"tag":26,"props":36,"children":37},{},[38],{"type":18,"tag":39,"props":40,"children":42},"img",{"alt":7,"src":41},"https://obs-mindspore-file.obs.cn-north-4.myhuaweicloud.com/file/2025/01/03/68c7aed5c45d4be8a3328117ae81b500.png",[],{"type":18,"tag":26,"props":44,"children":45},{},[46],{"type":18,"tag":47,"props":48,"children":49},"strong",{},[50],{"type":24,"value":51},"项目基本介绍",{"type":18,"tag":26,"props":53,"children":54},{},[55],{"type":24,"value":56},"1、项目名称：基于昇思 MindSpore+ 香橙派的具身智能应用开发",{"type":18,"tag":26,"props":58,"children":59},{},[60],{"type":24,"value":61},"2、项目导师：邓牧野",{"type":18,"tag":26,"props":63,"children":64},{},[65,67],{"type":24,"value":66},"3、项目链接：",{"type":18,"tag":68,"props":69,"children":73},"a",{"href":70,"rel":71},"https://summer-ospp.ac.cn/org/prodetail/24c6d0538?lang=zh&list=pro",[72],"nofollow",[74],{"type":24,"value":70},{"type":18,"tag":26,"props":76,"children":77},{},[78,80],{"type":24,"value":79},"项目PR：",{"type":18,"tag":68,"props":81,"children":84},{"href":82,"rel":83},"https://github.com/mindspore-courses/internship/pull/2",[72],[85],{"type":24,"value":82},{"type":18,"tag":26,"props":87,"children":88},{},[89],{"type":24,"value":90},"4、项目描述：本项目要求产出基于昇思MindSpore的具身智能项目代码并在香橙派上完成部署，配合相关机器人外设，完成一个具身智能项目。最初的项目目标为为实现六自由度机械臂和平行夹爪在对于自然语言指令的控制下对固定场景的物体实现抓取。目前已经实现的部分包括对于硬件的搭建和部署，对于场景的理解和物体位姿提取部分。关于平行爪的夹取位姿生成的部分还有待进一开发和部署。",{"type":18,"tag":26,"props":92,"children":93},{},[94],{"type":18,"tag":47,"props":95,"children":96},{},[97],{"type":24,"value":98},"项目选择初衷",{"type":18,"tag":26,"props":100,"children":101},{},[102],{"type":24,"value":103},"我从本科阶段就一直有参与到开源项目的想法，也尝试申请过之前的开源之夏项目，可惜一直没有缘分遇到合适的项目。而这一次的昇思MindSpore开源社区发布的” 基于昇思 MindSpore+ 香橙派的具身智能应用开发”与我的研究生生涯的研究方向和研究兴趣正好非常相符合，让我有了能在自己的研究兴趣的基础上对开源社区做出一些贡献的绝佳机会。",{"type":18,"tag":26,"props":105,"children":106},{},[107],{"type":18,"tag":47,"props":108,"children":109},{},[110],{"type":24,"value":111},"项目方案介绍",{"type":18,"tag":26,"props":113,"children":114},{},[115],{"type":24,"value":116},"在项目申请书的原计划中，本预计使用 shadow hand 作为主要外设完成相关抓取任务。但是后续因为灵巧手过于脆弱发生损坏，设备返英国原厂维修，并且因为产权问题，不再能被本项目使用。于是使用了结构更加简单的开源六自由度夹爪机械臂作为替换。但是项目的基本方案还是与原先保持了一致，方案流程图见图1。项目目标可以划分为多个子任务:",{"type":18,"tag":26,"props":118,"children":119},{},[120],{"type":24,"value":121},"• 对开源六自由度夹爪机械臂的构建",{"type":18,"tag":26,"props":123,"children":124},{},[125],{"type":24,"value":126},"• 对六自由度夹爪机械臂控制代码的构建和部署",{"type":18,"tag":26,"props":128,"children":129},{},[130],{"type":24,"value":131},"• 对自然语言指令的理解和解析",{"type":18,"tag":26,"props":133,"children":134},{},[135],{"type":24,"value":136},"• 对深度相机传感器的部署和配置",{"type":18,"tag":26,"props":138,"children":139},{},[140],{"type":24,"value":141},"• 对点云场景进行理解和分割",{"type":18,"tag":26,"props":143,"children":144},{},[145],{"type":24,"value":146},"• 对抓取位姿的生成",{"type":18,"tag":26,"props":148,"children":149},{},[150],{"type":24,"value":151},"• 对抓取位姿场景模拟器的构建",{"type":18,"tag":26,"props":153,"children":154},{},[155],{"type":24,"value":156},"• 对真实抓取的测试和部署",{"type":18,"tag":26,"props":158,"children":159},{},[160],{"type":18,"tag":39,"props":161,"children":163},{"alt":7,"src":162},"https://obs-mindspore-file.obs.cn-north-4.myhuaweicloud.com/file/2025/01/03/27c37338e3794645a577a4a43877aa3c.png",[],{"type":18,"tag":26,"props":165,"children":166},{},[167],{"type":24,"value":168},"图1",{"type":18,"tag":26,"props":170,"children":171},{},[172],{"type":18,"tag":47,"props":173,"children":174},{},[175],{"type":24,"value":176},"硬件部分",{"type":18,"tag":26,"props":178,"children":179},{},[180],{"type":24,"value":181},"完成了对开源六自由度机械手臂和平行夹爪的搭建，使用stm32作为机械手臂的主控芯片， 与香橙派通过串口通讯对机械手臂进行控制。机械手臂实物图见2。",{"type":18,"tag":26,"props":183,"children":184},{},[185],{"type":18,"tag":39,"props":186,"children":188},{"alt":7,"src":187},"https://obs-mindspore-file.obs.cn-north-4.myhuaweicloud.com/file/2025/01/03/89959605ebd14773853bdb79508daf97.png",[],{"type":18,"tag":26,"props":190,"children":191},{},[192],{"type":24,"value":193},"图2",{"type":18,"tag":195,"props":196,"children":197},"h2",{"id":7},[],{"type":18,"tag":26,"props":199,"children":200},{},[201],{"type":18,"tag":47,"props":202,"children":203},{},[204],{"type":24,"value":205},"自然语言识别部分",{"type":18,"tag":26,"props":207,"children":208},{},[209],{"type":24,"value":210},"根据项目要求，本项目需要系统能对自然语言指令给出相对应的反应，所以特意引入了自然语言处理模块，该模块直接调用 mindnlp 中预训练好的 ChatGM4 聊天机器人。由于该模型不具有记忆模型的功能，需要通过提前嵌入好的提示词判断用户输入的语句中是否带有抓取指令的暗示，如果具有抓取指令的暗示，则回复特定的语句，通过判断回复的类型可以简单得出是否需要开启下一步的检测定位程序。图3和图4，给出了回复为一正一反的两个示例。",{"type":18,"tag":26,"props":212,"children":213},{},[214],{"type":18,"tag":39,"props":215,"children":217},{"alt":7,"src":216},"https://obs-mindspore-file.obs.cn-north-4.myhuaweicloud.com/file/2025/01/03/a96d5001854d417cbc6220d4e0e6e5c6.png",[],{"type":18,"tag":26,"props":219,"children":220},{},[221],{"type":24,"value":222},"图3",{"type":18,"tag":26,"props":224,"children":225},{},[226],{"type":18,"tag":39,"props":227,"children":229},{"alt":7,"src":228},"https://obs-mindspore-file.obs.cn-north-4.myhuaweicloud.com/file/2025/01/03/11936fed1f574988b2e857f192121736.png",[],{"type":18,"tag":26,"props":231,"children":232},{},[233],{"type":24,"value":234},"图4",{"type":18,"tag":26,"props":236,"children":237},{},[238],{"type":24,"value":239},"对于场景中的物体进行分割和追踪的前提往往是定位出一个具体法范围来使得模型能进行匹配，在这一步中本项目采用了 GroundingDINO 方法，这是来自于 ECCV2024 的新发布的最新的定位方法。而对于物体检测程序本项目使用到了较为简单的模式——通过已有的目标物体的模型进行匹配，这使得检测配准变得较为简单，但是为了保持后续扩展该项目时仍然可以做到模型无关的最终目的，项目中选取了来自 CVPR 的 FoundationPose 这一方法，既可以应对具有物体模型的场景进行精准匹配，也可以对没有模型的场景进行猜测重构，从而进行匹配。 在本项目中，虽然使用到了目标物体的模型，但是由于设备受限，只能采集物体模型的几何信息，不能得到特征贴片，所以仍然缺乏颜色信息，在物体的追踪过程中，可以会出现对于一些对称结构的物体，发生过度矫正而产生的晃动，旋转，偏移这样的现象。所以在该项目中，尽量使用了几何特征纹理复杂，且对形变的鲁棒性较高的玩偶模型来进行追踪，图5为实验中对玩偶的位姿的检测和追踪。",{"type":18,"tag":26,"props":241,"children":242},{},[243],{"type":18,"tag":47,"props":244,"children":245},{},[246],{"type":24,"value":247},"点云检测和追踪",{"type":18,"tag":26,"props":249,"children":250},{},[251],{"type":18,"tag":39,"props":252,"children":254},{"alt":7,"src":253},"https://obs-mindspore-file.obs.cn-north-4.myhuaweicloud.com/file/2025/01/03/bedf4f29e78d4da68d4a6f66aa80ed30.png",[],{"type":18,"tag":26,"props":256,"children":257},{},[258],{"type":24,"value":259},"图5",{"type":18,"tag":26,"props":261,"children":262},{},[263],{"type":18,"tag":47,"props":264,"children":265},{},[266],{"type":24,"value":267},"位姿生成",{"type":18,"tag":26,"props":269,"children":270},{},[271],{"type":24,"value":272},"抓取位姿的生成，对于夹爪机械手来说比对于灵巧手来说要简单很多，很多不引入神经网络的早期方法，已经可以基于对物体几何形状的力学计算得出较为合理的抓取位姿。但是这样的方法往往需要大量的计算时间，难以做到实时，所以不适合本项目。本项目最后采用了较为富有盛名的基于数据驱动的位姿生成方法 anygrasp, 该方法能基于复杂场景的点云给出一个较好的平行夹爪的抓取位姿势，图6给出了该方法在真实场景下的生成的抓取实例。",{"type":18,"tag":26,"props":274,"children":275},{},[276],{"type":18,"tag":39,"props":277,"children":279},{"alt":7,"src":278},"https://obs-mindspore-file.obs.cn-north-4.myhuaweicloud.com/file/2025/01/03/c7af361254094e998bff3f97b66f4475.png",[],{"type":18,"tag":26,"props":281,"children":282},{},[283],{"type":24,"value":284},"图6",{"type":18,"tag":26,"props":286,"children":287},{},[288],{"type":18,"tag":47,"props":289,"children":290},{},[291],{"type":24,"value":292},"项目后续工作",{"type":18,"tag":26,"props":294,"children":295},{},[296],{"type":24,"value":297},"本项目流程较长，项目涉及的各个模型较为复杂并且对算力有比较高的要求，所以目前算法暂时都只是跑在云端，还未真实部署到香橙派上。在之后的时间中，我将继续完成对项目在真实硬件上的部署，跑通整个流程，完成对模拟环境的构建并持续进行对项目仓库的更新。",{"type":18,"tag":26,"props":299,"children":300},{},[301],{"type":18,"tag":47,"props":302,"children":303},{},[304],{"type":24,"value":305},"项目总结",{"type":18,"tag":26,"props":307,"children":308},{},[309],{"type":24,"value":310},"本次项目是我首次参与开源项目，由于项目本身的复杂性，以及我对于MindSpore框架不太熟悉，我花费了比较长的时间在探索和学习上，可惜并没有在项目期限内完完全全的实现项目初期设定的目标。但是我依然感觉在项目开发过程中学到了很多， 无论是对于自行完成对于复杂项目的规划，还是对于开源框架的学习熟悉，再或者是对于不熟悉的硬件设备的搭建和各类问题的解决，都使得我感觉自己一直在学习一直在进步。也感谢我的导师在整个过程中对我的支持鼓励和指导，对我持续努力完成项目起到了莫大的积极作用。在项目结束之后，我也很愿意继续投入时间精力完善这一项目，完成我自己真正对开源社区能有所贡献的愿望。",{"title":7,"searchDepth":312,"depth":312,"links":313},4,[314],{"id":7,"depth":315,"text":7},2,"markdown","content:technology-blogs:zh:3565.md","content","technology-blogs/zh/3565.md","technology-blogs/zh/3565","md",1776506131171]