0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

机器人ChatGPT应用:设计原则和模型能力

大象机器人科技 来源:大象机器人科技 作者:大象机器人科技 2023-03-14 09:54 次阅读

本文转载自微软发布的关于chatGPT扩展到机器人领域的能力。以下内容选择部分内容,关于chatGPT控制机械臂,以完成绘制微软徽标的过程。

我们将 ChatGPT 的功能扩展到机器人,并通过语言直观地控制机器人手臂、无人机和家庭助理机器人等多个平台。

你有没有想过用你自己的话告诉机器人该怎么做,就像你对人类一样?只是告诉你的家庭助理机器人:“请加热我的午餐”,然后让它自己找到微波炉,这不是很神奇吗?尽管语言是我们表达意图的最直观方式,但我们仍然严重依赖手写代码来控制机器人。我们的团队一直在探索如何改变这一现实,并使用OpenAI的新AI语言模型ChatGPT实现自然的人机交互。

ChatGPT 是一种在大量文本和人类交互语料库上训练的语言模型,使其能够对各种提示和问题生成连贯且语法正确的响应。我们这项研究的目标是看看ChatGPT是否可以超越文本思考,并推理物理世界来帮助完成机器人任务。我们希望帮助人们更轻松地与机器人互动,而无需学习复杂的编程语言或有关机器人系统的详细信息。这里的关键挑战是教 ChatGPT 如何解决考虑物理定律、操作环境背景以及机器人的物理动作如何改变世界状态的问题。

事实证明,ChatGPT 可以自己做很多事情,但它仍然需要一些帮助。我们的技术论文描述了一系列设计原则,可用于指导语言模型解决机器人任务。这些包括但不限于特殊的提示结构、高级 API 和通过文本的人工反馈。我们相信,我们的工作只是我们开发机器人系统方式转变的开始,我们希望激励其他研究人员进入这个令人兴奋的领域。继续阅读有关我们的方法和想法的更多技术细节。

当今机器人技术面临的挑战,以及 ChatGPT 如何提供帮助

当前的机器人管道始于工程师或技术用户,他们需要将任务的要求转换为系统代码。工程师坐在循环中,这意味着他们需要编写新的代码和规范来纠正机器人的行为。总的来说,这个过程很慢(用户需要编写低级代码),昂贵(需要具有深厚机器人知识的高技能用户)和低效(需要多次交互才能使事情正常工作)。

ChatGPT 解锁了一种新的机器人范式,并允许(潜在的非技术)用户坐在循环中,在监控机器人性能的同时向大型语言模型 (LLM) 提供高级反馈。通过遵循我们的设计原则,ChatGPT 可以为机器人场景生成代码。无需任何微调,我们就利用LLM的知识来控制各种任务的不同机器人外形。在我们的工作中,我们展示了ChatGPT解决机器人难题的多个示例,以及在操纵,空中和导航领域的复杂机器人部署。

使用ChatGPT的机器人技术:设计原则

催生法学硕士是一门高度实证的科学。通过反复试验,我们构建了一种方法和一套设计原则,用于编写机器人任务的提示:

pYYBAGQP0-WAIrzUAABn2v4nQh0333.png

1. 首先,我们定义一组高级机器人 API 或函数库。该库可以特定于特定的机器人,并且应映射到机器人的控制堆栈或感知库中的现有低级实现。为高级 API 使用描述性名称非常重要,这样 ChatGPT 就可以推理它们的行为;

2. 接下来,我们为 ChatGPT 编写一个文本提示,描述任务目标,同时明确说明高级库中的哪些函数可用。提示还可以包含有关任务约束的信息,

3. 或者 ChatGPT 应该如何形成它的答案(特定的编码语言,使用辅助解析元素);用户通过直接检查或使用模拟器来评估 ChatGPT 的代码输出。如果需要,用户使用自然语言向 ChatGPT 提供有关答案质量和安全性的反馈。

4.当用户对解决方案感到满意时,可以将最终代码部署到机器人上。

理论够了...ChatGPT到底能做什么?

让我们看一个例子...您可以在我们的代码存储库中找到更多案例研究。

(这里我们只举例一个比较有趣的例子,原文中还有其他机器人的例子)

循环用户:当复杂任务需要对话时

接下来,我们在机器人手臂的操作场景中使用了 ChatGPT。我们使用对话反馈来教模型如何将最初提供的 API 组合成更复杂的高级函数:ChatGPT 自己编码。使用基于课程的策略,该模型能够将这些学到的技能逻辑地链接在一起,以执行堆叠块等操作。

此外,该模型还展示了一个有趣的示例,即在用木块构建Microsoft徽标时桥接文本域和物理域。它不仅能够从其内部知识库中调用徽标,还能够“绘制”徽标(作为SVG代码),然后使用上面学到的技能来确定哪些现有的机器人动作可以构成其物理形式。

以下是与chatGPT关于如何控制机器人手臂以制作具有Microsoft徽标颜色的SVG文件的对话。

用户:

想象一下,我们正在使用一个机械手机器人。这是一个具有 6 个自由度的机械臂,其末端执行器上连接着一个抽吸泵。我希望你能协助我向这个机器人发送命令,给定一个场景和一个任务。

pYYBAGQP0-yAcTEfAABYdVJWDDw345.png

在任何时候,您都可以访问以下功能:

grab():打开抽吸泵抓取物体

release():关闭抽吸泵以释放物体

get_position(对象):给定一个对象名称的字符串,返回真空泵接触对象顶部的坐标和方向 [X, Y, Z, Y, 偏航, 俯仰, 滚动]

move_to(位置):它将抽吸泵移动到给定位置 [X, Y, Z, 偏航, 俯仰, 横滚]。

您可以使用这些函数创建新函数,但不允许使用任何其他假设函数。

保持解决方案简单明了。位置以毫米为单位,角度以度为单位。您也可以使用标签“问题 - ”提出澄清问题。下面是一个示例方案,演示了如何提出澄清问题。

假设一个场景包含两个球体。

聊天:

问题 - 有两个领域。你想让我拿哪一个?

用户:

球体 1,请。使用 python 代码来表达您的解决方案。准备好了吗?

聊天:

是的,我准备好了。请描述场景和任务。

用户:

场景中有以下对象:白垫、方框、蓝方块、黄色方块、绿色方块、红色方块、棕色方块 1、棕色方块 2。这些积木是高度为 40 毫米的立方体,位于 80 毫米深的盒子内。这些块只能从盒子的顶部到达。我想让你学习捡起一个物体并握住它的技巧。为此,您需要在物体上方移动安全距离(100 毫米),到达物体,抓住它并将其提起。

聊天:

理解。这是一个 Python 函数,它采用对象的名称,将机器人手臂移动到对象上方,抓住它,然后将对象移动到对象上方 100 毫米的安全距离。请注意,该函数假定机器人手臂最初处于安全的起始位置。

import timedef pick_up_object(object_name):# get the position of the objectobject_pos = get_position(object_name)# move the robot arm to a safe position above the objectsafe_pos = [object_pos[0], object_pos[1], object_pos[2]+100, object_pos[3], object_pos[4], object_pos[5]]move_to(safe_pos)# move the robot arm to the object's positionmove_to(object_pos)# grab the objectgrab()time.sleep(1) # wait for the object to be firmly attached# move the robot arm back to the safe position above the objectmove_to(safe_pos)

要使用此功能,只需调用pick_up_object并以字符串形式提供要拾取的对象的名称,例如 pick_up_object(“红色块”)。

用户:

伟大!现在我想让你学习如何在一个位置放置和反对。考虑到您拿着一个通用对象,您首先需要移动到目标位置上方的安全位置,将对象放下,然后释放它。

聊天:

理解。这是一个Python函数,它占据了应该放置物体的位置,将机器人手臂移动到该位置上方,将物体放下,然后释放它。请注意,该函数假定机器人手臂正在握住一个物体。

def place_object(position):# move the robot arm to a safe position above the target locationsafe_pos = [position[0], position[1], position[2]+100, position[3], position[4], position[5]]move_to(safe_pos)# move the robot arm to the target locationmove_to(position)# release the objectrelease()# move the robot arm back to the safe position above the target locationmove_to(safe_pos)

要使用此功能,只需调用 place_object 并将目标位置作为 6 个数字的列表提供,例如 place_object([100, 200, 50, 0, 0, 0])。请注意,位置的单位以毫米为单位,方向角以度为单位。

用户:

伟大!现在我希望你使用这些技能来捡起绿色块并放在白色垫子上。所有块的高度均为 40 毫米。

聊天:

确定!这是Python代码,用于拾取绿色块并将其放在白色垫上:

# get the positions of the green block and white padgreen_pos = get_position("green block")white_pos = get_position("white pad")# pick up the green blockpick_up_object("green block")# calculate the position to place the block on the white padplace_pos = [white_pos[0], white_pos[1], white_pos[2]+40, 0, 0, 0]# place the block on the white padplace_object(place_pos)

此代码使用 get_position 函数获取绿色块和白垫的位置,使用我们之前定义的pick_up_object函数拾取绿色块,计算将块放置在白垫上的位置,并使用我们之前定义的place_object函数将块放置在白垫上。请注意,我们将块的高度(40 mm)添加到白色垫子的高度上,以确保块放置在垫子的顶部。

用户:

伟大!现在我希望你把两个棕色块堆叠在绿色块的顶部。

聊天:

确定!以下是将两个棕色块堆叠在绿色块顶部的 Python 代码:

# get the positions of the green block and both brown blocksgreen_pos = get_position("green block")brown1_pos = get_position("brown block 1")brown2_pos = get_position("brown block 2")# pick up the first brown blockpick_up_object("brown block 1")# calculate the position to place the block on top of the green blockplace_pos = [green_pos[0], green_pos[1], green_pos[2]+40, 0, 0, 0]# place the first brown block on top of the green blockplace_object(place_pos)# pick up the second brown blockpick_up_object("brown block 2")# calculate the position to place the block on top of the first brown blockplace_pos = [green_pos[0], green_pos[1], green_pos[2]+80, 0, 0, 0]# place the second brown block on top of the first brown blockplace_object(place_pos)

此代码使用 get_position 函数获取绿色块和两个棕色块的位置,使用我们之前定义的 pick_up_object 函数拾取第一个棕色块,计算将第一个棕色块放置在绿色块顶部的位置,并使用我们之前定义的place_object函数将第一个棕色块放在绿色块的顶部。然后,它拾取第二个棕色块,计算将第二个棕色块放置在第一个棕色块之上的位置,并使用我们之前定义的place_object函数将第二个棕色块放在第一个棕色块的顶部。请注意,我们将绿色块的高度(40 mm)添加到前一个块的高度上,以确保该块放置在前一个块的顶部。

用户:

棒!我现在想使用这些块在白垫上构建微软的徽标。它由四种颜色组成,形成一个正方形,左下角为蓝色,右下角为黄色,左上角为红色,右上角为绿色。

聊天:

确定!以下是使用块在白色垫上构建Microsoft徽标的Python代码:

# get the positions of the blocks and the white padwhite_pad_pos = get_position("white pad")blue_pos = get_position("blue block")yellow_pos = get_position("yellow block")red_pos = get_position("red block")green_pos = get_position("green block")# pick up the blue blockpick_up_object("blue block")# calculate the position to place the blue blockplace_pos = [white_pad_pos[0]-20, white_pad_pos[1]-20, white_pad_pos[2]+40, 0, 0, 0]# place the blue block on the white padplace_object(place_pos)# pick up the yellow blockpick_up_object("yellow block")# calculate the position to place the yellow blockplace_pos = [white_pad_pos[0]+20, white_pad_pos[1]-20, white_pad_pos[2]+40, 0, 0, 0]# place the yellow block on the white padplace_object(place_pos)# pick up the red blockpick_up_object("red block")# calculate the position to place the red blockplace_pos = [white_pad_pos[0]-20, white_pad_pos[1]+20, white_pad_pos[2]+40, 0, 0, 0]# place the red block on the white padplace_object(place_pos)# pick up the green blockpick_up_object("green block")# calculate the position to place the green blockplace_pos = [white_pad_pos[0]+20, white_pad_pos[1]+20, white_pad_pos[2]+40, 0, 0, 0]# place the green block on the white padplace_object(place_pos)

此代码使用 get_position 函数获取白垫和所有四个块的位置,使用我们之前定义的pick_up_object函数依次拾取每个块,计算将块放置在白垫上的位置,并使用我们之前定义的place_object函数将块放在白垫上。我们使用块颜色来确保正确构建徽标。我们将蓝色块放在左下角位置,黄色块放在右下位置,红色块放在左上角位置,绿色块放在右上角位置,如提示中指定。

poYBAGQP0_GAP-0cAABxmipFJ_8712.png

将机器人技术带出实验室,走向世界

我们很高兴发布这些技术,旨在将机器人技术带给更广泛的受众。我们相信,基于语言的机器人控制将是将机器人技术带出科学实验室并交到日常用户手中的基础。

也就是说,我们确实强调,ChatGPT 的输出并不意味着在没有仔细分析的情况下直接部署在机器人上。我们鼓励用户利用仿真的强大功能,以便在潜在的实际部署之前评估这些算法,并始终采取必要的安全预防措施。我们的工作只代表了机器人领域大型语言模型交叉点的一小部分,我们希望激发未来的大部分工作。

审核编辑黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 机器人
    +关注

    关注

    206

    文章

    26962

    浏览量

    201244
  • AI
    AI
    +关注

    关注

    87

    文章

    26335

    浏览量

    263939
  • python
    +关注

    关注

    51

    文章

    4667

    浏览量

    83439
  • OpenAI
    +关注

    关注

    8

    文章

    742

    浏览量

    5893
  • ChatGPT
    +关注

    关注

    27

    文章

    1402

    浏览量

    4513
收藏 人收藏

    评论

    相关推荐

    机器人姿态监控

    想弄一个vi可以动态显示机器人的姿态,但不知道有什么函数可以引入机器人模型,帮帮忙,谢谢。
    发表于 02-11 17:25

    什么是工业机器人

    ` 本帖最后由 大连云港 于 2015-1-19 11:02 编辑 工业机器人是面向工业领域的多关节机械手或多自由度的机器人。工业机器人是自动执行工作的机器装置,是靠自身动力和控
    发表于 01-19 10:58

    机器人视觉——机器人的“眼睛”

    目前产业机器人仅能在严格定义的结构化环境中执行预定指令动作,缺乏对环境的感知与应变能力,这极大地限制了机器人的应用。利用机器人的视觉控制,不需要预先对产业
    发表于 01-23 15:02

    nao机器人与其他机器人的区别

    相比于之前的机器人,NAO机器人穿上人类的服装,那就像是一个真人出现在我们面前似得,NAO机器人的四肢设计的非常的灵活,具有多个自由度的身体,使得NAO机器人能够灵敏的行走以及参加一
    发表于 02-13 15:43

    机器人书籍大全!强烈推荐

    的,这里面的书有很多,有简单的有高深莫测的,根据自己的能力去选择。书看多了没用,不动手去做,很快就会忘记的。OHM 机器人竞技系列介绍:本书是引进日本OHM社版权,翻译出版的“机器人竞技系列”之一。 本书
    发表于 02-22 07:34

    敢对你Say NO的机器人,怕吗?

    `说起机器人,你可能会联想起很多跟机器人有关的电影,而今,拥有超能力机器人,开始走进人们的视野,比如他们能代替人类从事各类工作,会照顾老人、小孩,会跳舞、会聊天、会帮人们端茶送水、会
    发表于 12-09 09:16

    机器人与未来

    将在机械上超越人类的身体,在数字上超越人类的头脑。如果未来机器人真的具有(或部分具有)超人类的能力,那接下来的问题当然不是机器人和人类谁统治谁那么简单的问题。在一个充斥着机器人的世界里
    发表于 12-29 14:56

    机器人系统是什么?

    机器人的移动通常是从管理机器人总体任务进度的中央处理器发出位置变化请求时开始的。导航系统通过制定行程计划或轨迹以开始执行位置变化请求。行程计划需考虑可用路径、已知障碍位置、机器人能力
    发表于 09-10 10:44

    智能监控机器人该怎么设计?

    智能监控机器人是近年来机器人应用工程中一项前沿性的题目,智能化探测小车是智能行走机器人的一种。智能监控机器小车就是针对上述情况,在参考了目前大多数智能
    发表于 10-14 07:37

    机器人的定义是什么?工业机器人的应用有哪些?

    机器人的定义是什么?机器人优点和缺点是什么?机器人是由哪些部分组成的?工业机器人的应用有哪些?
    发表于 07-05 06:48

    工业机器人仿真与编程

    目录概述行走轴模型拆分行走轴模型导入仿真软件创建行走轴机械装置外部轴配置向导插件安装虚拟机器人系统创建行走轴系统配置机器人安装到行走轴行走轴运动控制文已经首发在个人微信公众号:工业
    发表于 09-07 08:57

    机器人简介

    一.机器人简介:机器人(Robot)是自动执行工作的机器装置。它既可以接受人类指挥,又可以运行预先编排的程序,也可以根据以人工智能技术制定的原则纲领行动。它的任务是协助或取代人类工作的
    发表于 09-07 06:05

    将Simulink模型与Lego机器人结合使用

    将Simulink模型与Lego机器人结合使用可提供令人愉悦的基于模型的设计体验支持LEGO MINDSTORMS NXT作为产品标准功能。即使没有ECRobot NXT,您也可以玩乐高游戏
    发表于 12-20 07:15

    机器人是什么?

    或者一个吹管——任何有助于它工作的东西。图5: 传感器的表征图像传感器今天的大多数机器人几乎是又聋又瞎。传感器可以为机器人提供一些有限的反馈,使其能够完成自己的工作。与最简单的生物的感官和能力相比
    发表于 03-31 10:31

    科技大厂竞逐AIGC,中国的ChatGPT在哪?

    最近,AI(人工智能)圈一股以“ChatGPT”为核心的热潮从美国“硅谷”涌入中国。 2022年11月底,初创公司OpenAI发布了名为ChatGPT的对话式聊天机器人模型,一经推出
    发表于 03-03 14:28