使用ChatGPT学习大象机器人六轴协作机械臂mechArm

引言

我是一名机器人方向的大学生,近期学校安排自主做一个机器人方面相关的项目。学校给我们提供了一个小型的六轴机械臂,mechArm 270M5Stack,我打算使用ChatGPT让它来辅助我学习如何使用这个机械臂并且做一个demo。

本篇文章将记录我是如何使用ChatGPT来学习机械臂的使用。

ChatGPT

ChatGPT 是由 OpenAI 开发的一个先进的人工智能对话系统。它基于大规模语言模型 GPT(Generative Pretrained Transformer)技术,能够理解和生成自然语言文本。ChatGPT 能够进行多种交互,包括回答问题、提供解释、撰写文本、编程协助等。它的设计目的是为了模拟人类在特定领域或对话中的表现,从而提供高质量的、类人的交流体验。

ChatGPT 如何帮助学习新知识:

  1. 个性化教学:根据用户的问题和回答,ChatGPT 能够个性化地提供信息,使学习过程更加符合用户的需求和水平。
  2. 理论与实例结合:ChatGPT 不仅能提供理论知识,还能结合实际案例来解释复杂概念,帮助用户更好地理解和记忆。
  3. 步骤指导:对于复杂任务或问题,ChatGPT 可以提供分步骤的指导和建议,帮助用户逐渐掌握技能。
  4. 资源推荐:ChatGPT 还能推荐书籍、在线课程、文章等资源,帮助用户深入学习。

学习的过程Process

首先我得赋予他一个身份,一个角色,这样的话它的回答才能不会特别的偏离我们的主题。

me:
You are now a senior teacher in robotics. I will ask you some questions to help me learn a robotic arm.

ChatGPT:
That sounds great! I'm here to help with your questions about robotic arms. Whether it's about their design, operation, programming, or applications, feel free to ask. Let's get started!

在此之间我已经对机器人相关的知识有所了解了,直接让它给我调查我现在这款机械臂是什么该如何使用。然后它就提供了一些机械臂的参数,以及编程环境等等

me:
Do you know the mechArm 270 MechArm, a product of Elephant Robotics? My instructor gave us one to use for a case study. I wanted to know the basic information about this robotic arm first.

ChatGPT:

...
Specifications:
Payload Capacity: Up to 250 grams.
Reach: 270mm.
Degrees of Freedom (DoF): 6, via 6 magnetic encoder motors.
Movement Speed: Up to 120°/s.
Positioning Accuracy: ±1 mm.
Controller: Raspberry Pi 4 Model B, featuring quad-core Cortex-A72 processor, dual-band WiFi 5, and Bluetooth 5.0 connectivity.
Supported Cameras: Official Raspberry Pi cameras or third-party USB cameras.
USB Ports: 2 USB 3.0 ports, 2 USB 2.0 ports.
Power Input: 8-12V/5A DC jack.
Weight: Approximately 1 kilogram.
Expansion Options: 40-pin GPIO header
...

mechArm 270

经过较详细的汇总,我就得知这是一款桌面型的机械臂,工作半径270mm,能够支持多平台的编译,比较全面的是python编程语言,还附带一个丰富的API控制库方便用户们的使用。

有40个GPIO接口,比较适合做一一些非常小型的自动化任务,也可以做教育环境和研究等应用。

环境安装

基于他对于Python支持的比较多,所以我决定用python来进行这个机械臂的学习。

操作系统:window11
编程语言: python3.9+
主要使用的功能库:pymycobot

pymycobot的使用

ChatGPT介绍了一个基本的使用,从安装到使用都有。

安装库

pip install pymycobot

基础使用

导入使用的库

#import library

from pymycobot.mycobot import MyCobot

初始化机械臂,建立连接

#Initialize the Robot Arm

```

Connect the mechArm to your computer.

Initialize the robotic arm by specifying the port it's connected to and the baud rate

```

mc = MyCobot('com3',115200)

基础命令

Move the Arm: Use methods like send_angles to control the arm's position. For example, to move the arm to a specific angle:

mc.send_angles([0, 0, 0, 0, 0, 0], 100)  # Angles for each joint, Speed

Get Current Position: To read the current position of the arm:

angles = mc.get_angles()

print(angles)

Control the Gripper: To open or close the gripper:

mc.set_gripper_state(1, 50)  # 1 for open, 0 for close, Speed

以上是ChatGPT给我提供的一些使用的基础方法,我来尝试一下按照他的步骤来进行控制机械臂。

然后我自己尝试了使用代码控制机械臂做一个循环动作。

import time

from pymycobot.mycobot import MyCobot

#Initialize the Robot Arm
mc = MyCobot('com13',115200)
time.sleep(3)
for count in range(3):
  mc.send_angles([57.21,(-2.1),19.33,(-81.29),(-73.65),(-1.14)],80)
  time.sleep(1)
  mc.send_angles([(-9.05),(-1.93),9.05,2.63,(-2.28),(-0.26)],80)
  time.sleep(1)
  mc.send_angles([5.36,(-41.57),(-17.31),11.07,(-55.54),(-1.49)],80)
  time.sleep(1)

这是一些角度控制机械臂运动,单独控制角度的话我觉得只能做一些固定的动作,对于一些应用场景应该不是特别的实用。于是我问,还有什么其他的控制方法能够适用于物体抓图的运动。

chat

me:
Controlling the movement of the angle is only applicable to some special points and postures. For some object grabbing scenes, these unfixed points should not be used. Is there any other method of control?

Chatgpt:
Absolutely, for scenarios where controlling the robotic arm based on specific angles isn't practical, especially in object grabbing and manipulation tasks, there are alternative control methods that can be more effective:

1. Cartesian (Coordinate) Control:
Description: This method involves controlling the robotic arm by specifying the position of the end effector in Cartesian coordinates (X, Y, Z), along with orientation (roll, pitch, yaw).
Usage: In Python, using the pymycobot library, you can command the robotic arm to move to a specific Cartesian coordinate. The command might look like:


让我来尝试send_coords()这个方法是怎么运转的,下面是我写的代码在机械臂的末端位置上作出运动。

class MechArm:

    def __init__(self,port):
        #初始化链接
        self.mc = MyCobot(port, 115200)
        self.coords = [116.4, -0.1, 178.4, -179.68, 6.5, -179.43]
        self.speed = 40
        self.mode = 0
        
    def increment_x_and_send(self, increment=20):
        # 增加x值并发送新坐标
        self.coords[0] += increment
        self.mc.send_coords(self.coords, self.speed, self.mode)

    def increment_y_send(self,increment=20):

        self.coords[1] += increment
        self.mc.send_coords(self.coords,self.speed, self.mode)

我发现在控制机械臂的时候,有些指令会被吞掉,导致机械臂没有办法运动。解决的办法就是需要添加一个等待时间,等待的时间需要大于机械臂运动的时间才能够保证运动完全执行完。

time.sleep(s)

# run code
mc = RobotArmController('com13')
mc.init_p()
time.sleep(3)
mc.increment_x_and_send()
time.sleep(1)
mc.increment_y_send()
time.sleep(1)
mc.increment_x_and_send()
time.sleep(1)
mc.increment_y_send()

进阶使用

我打算用吸泵来抓取一些东西,之后想做一个视觉的场景结合起来。mechArm有40个IO接口可以外接一些设备使用,比如说吸泵,夹爪等等工具。

给末端装上吸泵然后就可以开始实践了。我得找到调用吸泵的方法,pymycobot里面的API太多了,我直接让ChatGPT来帮助我知道吸泵。

me:
How to call the suction pump?

ChatGPT:
Control Commands:

Activate the Suction Pump:
To turn on the suction pump, you might send a command to set a specific IO port to HIGH. The exact command will depend on how the suction pump is connected to the controller.
python

mc.set_basic_output(1,0)  # Example: Setting pin 1 to HIGH (0)
Deactivate the Suction Pump:
To turn off the suction pump, you would send a command to set the IO port to LOW.
python
Copy code
mc.set_basic_output(1, 1)  # Example: Setting pin 1 to LOW (1)
Integrate with Movement Commands:

You would typically integrate these commands into a sequence where the robotic arm moves to a target location, activates the suction pump to pick up an object, moves to a new location, and then deactivates the pump to release the object.

现在我们来创建函数来控制吸泵的开关。

    def pump_on(self):
        self.mc.set_basic_output(5,0)

    def pump_off(self):
        self.mc.set_basic_output(5,1)
        
mc.initial_position()
time.sleep(2)
mc.pick_up_postion()
time.sleep(2)
mc.pump_on()
time.sleep(1)
mc.increment_z_send()
time.sleep(3)
mc.pump_off()

本次先记录到这里,之后我打算结合摄像头做一些定位抓取的功能。

总结

随着人工智能的不断发展,它影响的不单单是科技方面,还影响着我们生活中的点点滴滴。它很大程度上提升了我们的学习效率,就拿我来说,如果我要了解一个新事物肯定得把相关文档全部通读一遍,甚至也不一定能理解到位,有了ChatGPT等许多人工智能的工具,学习的方式再也不像之前那样了,是全新的一种风格。及时是一无所知的机械臂,也能再很快的上手使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/362598.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

jsp 产品维修管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 产品维修管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.…

【51单片机系列】应用设计——8路抢答器的设计

51单片机应用——8路抢答器设计 文章设计文件及代码:资源链接。 文章目录 要求:设计思路软件设计仿真结果 要求: (1) 按下”开始“按键后才开始抢答,且抢答允许指示灯亮; (2&…

2024年第七届亚洲能源与电气工程会议 (ACEEE 2024)

2024年第七届亚洲能源与电气工程会议 (ACEEE 2024)将于2024年7月20-22日在中国成都举行。本次会议由电子科技大学主办,电子科技大学机械与电气工程学院承办。ACEEE 2024旨在为推动能源与电气工程领域科学研究的发展,增进各国学者之间的学术交流&#xff…

备战蓝桥杯---数据结构与STL应用(进阶1)

让我们先来看一看map的基础应用吧&#xff1a; 下面是实现代码&#xff1a; #include<bits/stdc.h> using namespace std; typedef map<int,multiset<int> > line; map<int,multiset<int> >mx; map<int,multiset<int> >my; int n,m…

《Docker技术革命:从虚拟机到容器化,全面解析Docker的原理与应用-上篇》

文章目录 Docker为什么会出现总结 Docker的思想Docker历史总结 Docker能干嘛虚拟机技术虚拟机技术的缺点 容器化技术Docker和虚拟机技术的区别 Docker概念Docker的基本组成镜像&#xff08;image)容器&#xff08;container&#xff09;仓科&#xff08;repository&#xff09;…

Vulnhub靶机:hackme2-DHCP

一、介绍 运行环境&#xff1a;Virtualbox(攻击机)和VMware(靶机) 攻击机&#xff1a;kali&#xff08;192.168.56.106&#xff09; 靶机&#xff1a;hackme2-DHCP&#xff08;192.168.56.107&#xff09; 目标&#xff1a;获取靶机root权限和flag 靶机下载地址&#xff1…

【lesson31】MySQL视图

文章目录 视图介绍基本使用创建视图案例删除视图 视图规则和限制 视图介绍 视图是一个虚拟表&#xff0c;其内容由查询定义。同真实的表一样&#xff0c;视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表&#xff0c;基表的数据变化也会影响到视图。 基本使用…

GitLab16.8配置webhooks、Jenkins2.4配置GitLab插件实现持续集成、配置宝塔面板实现持续部署(其三)

看本篇文章的前提是已经部署完GItlab和Jenkins服务器&#xff0c;已经可以手动构建成功&#xff0c;并且经过了很多次实践&#xff0c;对这两款软件基本熟悉。 建议大家按以下顺序看 前端自动化&#xff08;其一&#xff09;部署gitlab 前端自动化&#xff08;其二&#xff0…

百无聊赖之JavaEE从入门到放弃(十四)异常

目录 一.异常机制 二.异常分类 三.异常的处理方式 1.捕获异常(try-catch-finally) 2.声明异常&#xff08;throws 子句&#xff09; 四.try-with-resource 五.自定义异常 六.IDEA 调试 debug 一.异常机制 工作中&#xff0c;程序遇到的情况不可能完美。比如&#xff1a…

Zabbix数据库分离与邮件报警

基础环境&#xff1a;要有zabbix服务端与被监控端实验目标&#xff1a;源数据库与服务端存放在一台服务器上&#xff0c;分离后源数据库单独在一台服务器上&#xff0c;zabbix服务端上不再有数据库。环境拓扑图&#xff1a; 实验步骤&#xff1a; 1.在8.7服务器上安装相同版本…

单片机驱动多个ds18b20

目录 1设计内容 2ds18b20介绍 2.1传感器引脚及原理图 2.2寄存器配置 3程序实现 3.1配置初始化 3.2配置寄存器 3.3ROM读取 3.4温度读取 1设计内容 通过51单片机&#xff0c;读取总线上挂载的多个ds18b20的温度信息。 如下图&#xff0c;成功读取到3路温度数据。 2ds18…

MD5算法:高效安全的数据完整性保障

摘要&#xff1a;在数字世界中&#xff0c;确保数据完整性和安全性至关重要。消息摘要算法就是一种用于实现这一目标的常用技术。其中&#xff0c;Message Digest Algorithm 5&#xff08;MD5&#xff09;算法因其高效性和安全性而受到广泛关注。本文将详细介绍MD5算法的优缺点…

双屏联动系统在展厅设计中的互动类型与效果

随着各项多媒体技术的快速发展&#xff0c;让展厅中的各类展项得到技术升级&#xff0c;其中作为电子设备中最基础的显示技术&#xff0c;不仅优化了内容的展示质量&#xff0c;还实现了更具互动性的创新技术&#xff0c;如双屏联动系统就是当前展厅设计中最常见的技术类型之一…

TS项目实战一:流淌的字符动画界面

使用ts实现虚拟世界&#xff0c;创建ts项目&#xff0c;并编写ts代码&#xff0c;使用tsc编译后直接加载到html界面&#xff0c;实现类似黑客帝国中的流淌的代码界面的效果。 源码下载地址&#xff1a;点击下载 讲解视频 TS实战项目一&#xff1a;数字流界面项目创建 TS实战项…

Airflow原理浅析

⭐️ airflow基本原理 Apache Airflow 是一个开源的工作流自动化工具&#xff0c;它用于调度和管理复杂的数据工作流。Airflow 的原理基于有向无环图&#xff08;DAG&#xff09;的概念&#xff0c;它通过编写和组织任务的有向图来描述工作流程。 以下是 Apache Airflow 的一…

解决ModuleNotFoundError: No module named ‘pysqlite2‘

目录 一、问题描述 二、问题分析 三、解决方法 四、参考文章 一、问题描述&#xff1a; 新建conda编译环境。安装Jupyter后打不开&#xff0c;报错&#xff1a; 二、问题分析&#xff1a; 缺少sqlite3动态链接库 三、解决方法&#xff1a; SQLite Download Page 下载…

go语言socket编程

1.互联网分层模型 过程分析&#xff1a; 2.Socket图解 Socket是应用层与TCP/IP协议族通信的中间软件抽象层。在设计模式中&#xff0c;Socket其实就是一个门面模式&#xff0c;它把复杂的TCP/IP协议族隐藏在Socket后面&#xff0c;对用户来说只需要调用Socket规定的相关函数&a…

幻兽帕鲁服务器游戏怎么升级版本?

幻兽帕鲁服务器游戏怎么升级版本&#xff1f;自建幻兽帕鲁服务器进入Palworld游戏提示“您正尝试加入的比赛正在运行不兼容的游戏版本&#xff0c;请尝试升级游戏版本”什么原因&#xff1f;这是由于你的客户端和幻兽帕鲁服务器版本不匹配&#xff0c;如何解决&#xff1f;更新…

数学建模-多目标规划

例&#xff1a;求下列函数最大值 Matlab 程序&#xff1a; 若分开求解&#xff0c;即分别求出第一个函数和第二个函数的最大值&#xff0c;我们试一下。 第一个函数最大值&#xff08;我们先求最小值&#xff09; c[3 -2];A[2,3;2,1];b[18;10];Aeq[];beq[];vlb[0;0];vub[];[…

redis设计与实践的总结

Redis是一款高性能的Key-Value存储系统&#xff0c;它可以用作缓存、消息队列、计数器、排行榜等多种应用场景。在实际应用中&#xff0c;如何设计和使用Redis是非常关键的。本文将介绍Redis的设计原则和最佳实践&#xff0c;帮助您更好地利用Redis提高应用性能和可靠性。 ###…