引言
我是一名機(jī)器人方向的大學(xué)生,近期學(xué)校安排自主做一個機(jī)器人方面相關(guān)的項(xiàng)目。學(xué)校給我們提供了一個小型的六軸機(jī)械臂,mechArm 270M5Stack,我打算使用ChatGPT讓它來輔助我學(xué)習(xí)如何使用這個機(jī)械臂并且做一個demo。
本篇文章將記錄我是如何使用ChatGPT來學(xué)習(xí)機(jī)械臂的使用。
ChatGPT
ChatGPT 是由 OpenAI 開發(fā)的一個先進(jìn)的人工智能對話系統(tǒng)。它基于大規(guī)模語言模型 GPT(Generative Pretrained Transformer)技術(shù),能夠理解和生成自然語言文本。ChatGPT 能夠進(jìn)行多種交互,包括回答問題、提供解釋、撰寫文本、編程協(xié)助等。它的設(shè)計(jì)目的是為了模擬人類在特定領(lǐng)域或?qū)υ捴械谋憩F(xiàn),從而提供高質(zhì)量的、類人的交流體驗(yàn)。
ChatGPT 如何幫助學(xué)習(xí)新知識:
個性化教學(xué):根據(jù)用戶的問題和回答,ChatGPT 能夠個性化地提供信息,使學(xué)習(xí)過程更加符合用戶的需求和水平。
理論與實(shí)例結(jié)合:ChatGPT 不僅能提供理論知識,還能結(jié)合實(shí)際案例來解釋復(fù)雜概念,幫助用戶更好地理解和記憶。
步驟指導(dǎo):對于復(fù)雜任務(wù)或問題,ChatGPT 可以提供分步驟的指導(dǎo)和建議,幫助用戶逐漸掌握技能。
資源推薦:ChatGPT 還能推薦書籍、在線課程、文章等資源,幫助用戶深入學(xué)習(xí)。
學(xué)習(xí)的過程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!
在此之間我已經(jīng)對機(jī)器人相關(guān)的知識有所了解了,直接讓它給我調(diào)查我現(xiàn)在這款機(jī)械臂是什么該如何使用。然后它就提供了一些機(jī)械臂的參數(shù),以及編程環(huán)境等等
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
經(jīng)過較詳細(xì)的匯總,我就得知這是一款桌面型的機(jī)械臂,工作半徑270mm,能夠支持多平臺的編譯,比較全面的是python編程語言,還附帶一個豐富的API控制庫方便用戶們的使用。
有40個GPIO接口,比較適合做一一些非常小型的自動化任務(wù),也可以做教育環(huán)境和研究等應(yīng)用。
環(huán)境安裝
基于他對于Python支持的比較多,所以我決定用python來進(jìn)行這個機(jī)械臂的學(xué)習(xí)。
操作系統(tǒng):window11 編程語言: python3.9+ 主要使用的功能庫:pymycobot
pymycobot的使用
ChatGPT介紹了一個基本的使用,從安裝到使用都有。
安裝庫
pip install pymycobot
基礎(chǔ)使用
導(dǎo)入使用的庫
#import library
from pymycobot.mycobot import MyCobot
初始化機(jī)械臂,建立連接
#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)
基礎(chǔ)命令
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給我提供的一些使用的基礎(chǔ)方法,我來嘗試一下按照他的步驟來進(jìn)行控制機(jī)械臂。
然后我自己嘗試了使用代碼控制機(jī)械臂做一個循環(huán)動作。
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)
這是一些角度控制機(jī)械臂運(yùn)動,單獨(dú)控制角度的話我覺得只能做一些固定的動作,對于一些應(yīng)用場景應(yīng)該不是特別的實(shí)用。于是我問,還有什么其他的控制方法能夠適用于物體抓圖的運(yùn)動。
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()這個方法是怎么運(yùn)轉(zhuǎn)的,下面是我寫的代碼在機(jī)械臂的末端位置上作出運(yùn)動。
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值并發(fā)送新坐標(biāo) 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)
我發(fā)現(xiàn)在控制機(jī)械臂的時候,有些指令會被吞掉,導(dǎo)致機(jī)械臂沒有辦法運(yùn)動。解決的辦法就是需要添加一個等待時間,等待的時間需要大于機(jī)械臂運(yùn)動的時間才能夠保證運(yùn)動完全執(zhí)行完。
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()
進(jìn)階使用
我打算用吸泵來抓取一些東西,之后想做一個視覺的場景結(jié)合起來。mechArm有40個IO接口可以外接一些設(shè)備使用,比如說吸泵,夾爪等等工具。
給末端裝上吸泵然后就可以開始實(shí)踐了。我得找到調(diào)用吸泵的方法,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.
現(xiàn)在我們來創(chuàng)建函數(shù)來控制吸泵的開關(guān)。
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()
本次先記錄到這里,之后我打算結(jié)合攝像頭做一些定位抓取的功能。
總結(jié)
隨著人工智能的不斷發(fā)展,它影響的不單單是科技方面,還影響著我們生活中的點(diǎn)點(diǎn)滴滴。它很大程度上提升了我們的學(xué)習(xí)效率,就拿我來說,如果我要了解一個新事物肯定得把相關(guān)文檔全部通讀一遍,甚至也不一定能理解到位,有了ChatGPT等許多人工智能的工具,學(xué)習(xí)的方式再也不像之前那樣了,是全新的一種風(fēng)格。及時是一無所知的機(jī)械臂,也能再很快的上手使用。
審核編輯 黃宇
-
機(jī)器人
+關(guān)注
關(guān)注
211文章
28472瀏覽量
207385 -
人工智能
+關(guān)注
關(guān)注
1792文章
47372瀏覽量
238856 -
python
+關(guān)注
關(guān)注
56文章
4797瀏覽量
84786 -
機(jī)械臂
+關(guān)注
關(guān)注
12文章
515瀏覽量
24619
發(fā)布評論請先 登錄
相關(guān)推薦
評論