机械臂相关说明

George

24-11-04

24-07-19

| 浏览量:👀  |  返回 <我想找工作>

机械臂选型

更新 24-11-04 | 发布 24-10-24

整体--采用什么抓取装置

通过网上搜索,以及咨询大模型,得到如下信息。

[咨询大模型的提示词] 要结合人工智能技术,分拣底栖动物,可以采用什么样的抓取装置做分拣。比如机械臂、吸盘,或其他什么抓取装置。

一、高精度机械臂

特点:机械臂具有高精度、高灵活性和可编程性,能够准确抓取和移动底栖动物。通过搭载不同的末端执行器,如夹爪、吸盘等,可以适应不同形状和大小的底栖动物。
应用:机械臂可以在分拣系统中自动识别并定位底栖动物,然后抓取并将其放置到指定的位置。通过与人工智能技术的结合,机械臂可以实现自主学习和优化抓取策略,提高分拣效率和准确性。

二、吸盘式抓取装置

特点:吸盘式抓取装置利用负压原理吸附底栖动物,具有无损抓取、适应性强等优点。它可以根据不同动物的大小和形状调整吸附力,确保稳定抓取。
应用:在分拣过程中,吸盘式抓取装置可以快速吸附并移动底栖动物,将其放置到相应的分类区域。通过与图像识别和定位技术的结合,吸盘式抓取装置可以实现精准抓取,提高分拣速度。

三、其他抓取装置

柔性抓手:类似于文章3中提到的柔软抓手,能够适应不同形状和质地的底栖动物,通过变形包裹住动物进行抓取。这种抓手对动物伤害小,适合分拣易受损的底栖动物。
电磁式抓取装置:对于具有磁性的底栖动物,可以采用电磁式抓取装置进行分拣。通过控制电磁铁的通断电,实现动物的吸附和释放。

综上所述,结合人工智能技术分拣底栖动物时,可以采用高精度机械臂、吸盘式抓取装置以及其他如柔性抓手或电磁式抓取装置等。这些抓取装置各具特点,可以根据实际需求选择适合的装置进行分拣工作。同时,通过与人工智能技术的深度融合,这些抓取装置可以实现更高效、准确的分拣效果。


整体--机械臂推荐型号

从网上搜索,以及咨询大模型,得到以下信息。

[咨询大模型的提示词] 推荐机械臂,用于分拣底栖动物的寡毛类,推荐10个型号和相应的官网网址,高精度的,生物实验室使用,有API可调用控制的,2万元到5万元左右,国产品牌。毫米级定位精度,最大负载100克

型号:AM100

官网网址:www.aitech-robotics.com (示例网址,具体请查询实际品牌官网)
特点:高精度机械臂,专为实验室精密操作设计,毫米级定位精度,最大负载100克,提供API接口方便集成控制。

型号:BM120

官网网址:www.bio-mech.cn (示例网址,具体请查询实际品牌官网)
特点:生物实验室专用机械臂,具备高精度和稳定性,最大负载满足要求,提供完善的API文档支持。

型号:PM150

官网网址:www.precision-manipulator.com
特点:精密操作机械臂,价格适中,定位精度达到毫米级,最大负载能力100克,可通过API实现远程控制。

型号:LM200

官网网址:www.lab-manipulator.cn
特点:实验室用轻型机械臂,操作灵活,精度高,最大负载适合您的需求,支持API调用控制。

型号:SM250

官网网址:www.smart-manipulator.com
特点:智能型高精度机械臂,专为科研领域打造,满足毫米级定位精度,最大负载100克,提供API接口便于二次开发。

型号:EM300

官网网址:www.easy-manipulator.cn
特点:易于操作的高精度机械臂,价格合理,定位准确,最大负载符合您的要求,支持通过API进行控制。

型号:DM350

官网网址:www.delicate-manipulator.com
特点:精细操作机械臂,适合生物实验室使用,具备高精度和稳定性,最大负载100克,可通过API进行集成控制。

型号:CM400

官网网址:www.compact-manipulator.cn
特点:紧凑型高精度机械臂,占用空间小,适合桌面使用,定位精度毫米级,提供API支持方便控制。

型号:GM450

官网网址:www.graceful-manipulator.com
特点:优雅设计的高精度机械臂,操作流畅,精度高,最大负载满足您的需求,支持API调用控制功能。

型号:XM500

官网网址:www.xpert-manipulator.com
特点:专家级高精度机械臂,性能卓越,定位准确至毫米级,最大负载100克,可通过API实现精准控制。


机械臂--慧灵科技

慧灵科技:慧灵科技(江苏)有限公司是一家专注于机器人技术的公司,其小型六轴机械臂可能适用于分拣寡毛类底栖动物的任务。这种机械臂具有高精度、高灵活性和适当的负载能力,可以满足分拣任务的要求。

慧灵科技推荐:
- 夹蚯蚓的话,我建议您这个机械臂1832+8S 电动夹爪。
- 报价约 2 万左右。
- 总部昆山。

公司网址:https://www.hitbot.cc/ 🔗

机械臂和夹爪示意图如下:

hibot-8s hibot-1832

小结:

1、夹爪力量可调节,但不是可编程的。通过夹爪上的旋钮可调节夹持力,有4档可调:8N(牛顿)、12N、16N、20N。
2、机械臂可使用 SDK 进行二次开发来控制机械臂。


机械臂XXX

需要调研以下主要信息:

  • 机械臂运动范围。不是很大的那种,1-2米就差不多了。
  • 机械臂的抓取力量。应该几百克左右就够了。能抓很重的东西,且定位精度很高,则可能很贵。
  • 机械臂的夹爪。可以夹取寡毛类(说蚯蚓可能方便对方理解)、水生昆虫,以及贝壳类(应该问题不大)。夹爪可能要多个,不同夹爪用于抓不同的底栖动物。
  • 重复定位精度。应该在0.02mm左右。就是机械臂运动到同一个地方,运动100次,每次几乎都一样。
  • 夹爪的力量可调。至少有装置(比如旋钮)可调节夹爪的力量,最好可以通过 API 接口控制。
  • 大致价位多少。应该几万左右。太贵或太便宜的,应该不是目标对象。
  • 怎么通过程序控制和调用。有没有提供API或SDK,用于控制机械臂运动,以及夹爪夹取松开。需要拿到API或SDK文档,以及API或SDK的调用样例(可能文档中已包含)。
  • 找2~3家,靠谱可行的。

怎么找?

  • 通过网上搜索,或咨询ChatGPT等类似应用(比如文心一样)。
  • 然后按图索骥,一个一个看,找到2~3个。

机械臂硬件相关简介

机械臂底层驱动简介和安装

为了方便控制,机械臂扩展板(就是和华为开发者套件通过40针排线连接的那块板)的底层软件是单独开发的,并且提供接口调用,控制包括总线舵机、PWM舵机、RGB灯。相关的底层驱动源码已经封装成python库,出厂镜像已经安装好,如果想移植到自己的系统,可以在程序源码汇总文件夹里找到Dofbot.zip压缩包。执行 unzip Dofbot.zip 解压压缩包:需要将压缩包复制到docker内解压,由于基础控制并没有涉及ROS,用户在宿主机安装也是可以的。

安装python驱动库。 执行命令 cd Dofbot/0.py_install && sudo python3 setup.py install  输入用户密码后(注:sudo命令要求输入用户的密码)按回车确认,看到安装提示 Arm_Lib=x.x.x 版本号则表示安装成功。

上述信息包含在第1个接口“1.控制RGB灯”中,更多详情可参考:1.控制RGB灯https://www.yahboom.com/build.html?id=9961&cid=606


注:当前下载的源程序中是Dofbot.rar而非 Dofbot.zip。在 macOS 上同步以下步骤上传到开发者套件上:

用root用户登录华为开发者套件,解包 Dofbot0718.tar.gz,并执行 setup.py 安装。如下:

在本地 Terminal 中执行以下命令登录华为开发者套件:

~$ ssh root@192.168.31.200

在开发者套件上执行以下命令:

root@davinci-mini:~# cd ttra
root@davinci-mini:~/ttra# tar -zxvf Dofbot0718.tar.gz #x表示解包
root@davinci-mini:~/ttra# cd Dofbot0718/0.py_install
root@davinci-mini:~/ttra/Dofbot0718/0.py_install# sudo python3 setup.py instal
            

执行命令后显示如下。今后再看看是否要解决 warning。参考上述描述,应该算是安装成功了,因为显示了 Arm-Lib==0.0.5。

                    
root@davinci-mini:~/ttra/Dofbot0718/0.py_install# sudo python3 setup.py install
running install
/usr/lib/python3/dist-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning:setup.py install is deprecated. Use build and pip and other standards-based tools.
  warnings.warn(
/usr/lib/python3/dist-packages/setuptools/command/easy_install.py:158:EasyInstallDeprecationWarning: easy_install command is deprecated. Use build and pip and otherstandards-based tools.
  warnings.warn(
running bdist_egg
running egg_info
creating Arm_Lib.egg-info
writing Arm_Lib.egg-info/PKG-INFO
writing dependency_links to Arm_Lib.egg-info/dependency_links.txt
writing top-level names to Arm_Lib.egg-info/top_level.txt
writing manifest file 'Arm_Lib.egg-info/SOURCES.txt'
reading manifest file 'Arm_Lib.egg-info/SOURCES.txt'
writing manifest file 'Arm_Lib.egg-info/SOURCES.txt'
installing library code to build/bdist.linux-aarch64/egg
running install_lib
running build_py
creating build
creating build/lib
creating build/lib/Arm_Lib
copying Arm_Lib/Arm_Lib.py -> build/lib/Arm_Lib
copying Arm_Lib/__init__.py -> build/lib/Arm_Lib
creating build/bdist.linux-aarch64
creating build/bdist.linux-aarch64/egg
creating build/bdist.linux-aarch64/egg/Arm_Lib
copying build/lib/Arm_Lib/Arm_Lib.py -> build/bdist.linux-aarch64/egg/Arm_Lib
copying build/lib/Arm_Lib/__init__.py -> build/bdist.linux-aarch64/egg/Arm_Lib
byte-compiling build/bdist.linux-aarch64/egg/Arm_Lib/Arm_Lib.py to Arm_Lib.cpython-310.pyc
byte-compiling build/bdist.linux-aarch64/egg/Arm_Lib/__init__.py to __init__.cpython-310.pyc
creating build/bdist.linux-aarch64/egg/EGG-INFO
copying Arm_Lib.egg-info/PKG-INFO -> build/bdist.linux-aarch64/egg/EGG-INFO
copying Arm_Lib.egg-info/SOURCES.txt -> build/bdist.linux-aarch64/egg/EGG-INFO
copying Arm_Lib.egg-info/dependency_links.txt -> build/bdist.linux-aarch64/egg/EGG-INFO
copying Arm_Lib.egg-info/top_level.txt -> build/bdist.linux-aarch64/egg/EGG-INFO
zip_safe flag not set; analyzing archive contents...
creating dist
creating 'dist/Arm_Lib-0.0.5-py3.10.egg' and adding 'build/bdist.linux-aarch64/egg' to it
removing 'build/bdist.linux-aarch64/egg' (and everything under it)
Processing Arm_Lib-0.0.5-py3.10.egg
Removing /usr/local/lib/python3.10/dist-packages/Arm_Lib-0.0.5-py3.10.egg
Copying Arm_Lib-0.0.5-py3.10.egg to /usr/local/lib/python3.10/dist-packages
Arm-Lib 0.0.5 is already the active version in easy-install.pth

Installed /usr/local/lib/python3.10/dist-packages/Arm_Lib-0.0.5-py3.10.egg
Processing dependencies for Arm-Lib==0.0.5
Finished processing dependencies for Arm-Lib==0.0.5                        
                    
                

驱动机械臂

以“3.控制单个舵机”为例。更多详情请参考:3.控制单个舵机;https://www.yahboom.com/build.html?id=9963&cid=606

样例代码如下。用编辑器生成python文件,比如用 vscode,或者开发者套件上的 vim,生成python文件比如 3ctrlservo.py。然后在root用户下执行 python3 3ctrlservo.py 。


#!/usr/bin/env python3
#coding=utf-8

import time
from Arm_Lib import Arm_Device

# 创建机械臂对象
Arm = Arm_Device()
time.sleep(.1)

# 单独控制一个舵机运动到某个角度
id = 6
Arm.Arm_serial_servo_write(id, 90, 500)
time.sleep(1)

# 控制一个舵机循环切换角度
id = 6
 
def main():
    while True:
        Arm.Arm_serial_servo_write(id, 120, 500)
        time.sleep(1)
        Arm.Arm_serial_servo_write(id, 50, 500)
        time.sleep(1)
        Arm.Arm_serial_servo_write(id, 120, 500)
        time.sleep(1)
        Arm.Arm_serial_servo_write(id, 180, 500)
        time.sleep(1)
 
try :
    main()
except KeyboardInterrupt:
    print(" Program closed! ")
    pass

del Arm # 释放掉 Arm 对象  
        

在2024-07-18做测试时,报 xxx I2C error 错误,并没有控制机械臂得到预期结果。马上执行以前运行已经正常的华为样例程序,也是报 xxx I2C error错误,从程序打印输出判断视觉识别等貌似正常,但无法控制机械臂运动抓取积木了。咨询机械臂技术人员,答复说应该是40针排线(连接了开发者套件和机械臂扩展板)等可能松动导致的,关机断电后重新插一下就应该可以了。近期将参考机械臂技术人员的建议试试修复,能成功运行控制机械臂的样例程序。

从华为样例程序报错的 xxx I2C error错误看,最底层控制机械臂就是调用了机械臂提供的Python API。


2024-07-31解决了 xxx I2C error。详见驱动机械臂报 xxx I2C error


关于I2C,引用“彻底搞懂I2C总线(一)什么是I2C?什么是I2C总线?什么是I2C规范”中关于I2C的由来的描述,方便理解I2C是用于做什么的。原文有7篇是一个系列,感兴趣读者可阅读参考。以下是引用的I2C的由来:

Python API 列表

以下列了主要 Python API 的名称。每个 API 的功能和参数解释,以及对应的样例程序,请参考机械臂官网之机械臂基础控制

还有机械臂上的摄像头。和机械臂不强相关,也是使用了 openCV 做控制和使用的。此处从略。

机械臂华为样例的主程序--客户端

应该是main.py。

机械臂华为样例的主程序--服务端

应该是dofbot_server.cpp,/robot-arm/E2E-Sample/ros2_robot_arm/ros2_ws/src/dofbot_moveit/src/dofbot_server.cpp。

尚不大理解的程序

调用有2个返回值的函数,赋值给(即等号左边是) "变量, _"

# main.py
xy = [90, 135]
...
xy, _ = read_XYT(XYT_path) # 等号左边是什么含义

'''
240713:
1、ready_XYT()返回2个值,1个list(2个整数),和1个整数。
2、等号左边的意思是:只保存返回的list到xy中,另一个返回值整数没有保存。但是不能
写 xy = (即没有 ,_),要报错的。
'''
        

Python相关基础

列表list和元组tuple

Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。 另一种有序列表叫元组:tuple。tuple和list非常类似,但是tuple一旦初始化就不能修改。

从长相看,方括号[]的是list,圆括号()的是tuple。比如,如下list1是列表list,tuple1是元组tuple。

            
>>> list1 =  ['Michael', 'Bob', 'Tracy']                               
>>> tuple1 =  ('Michael', 'Bob', 'Tracy')                               
            

可参考:

  • 4.3 使用list和tuple,廖雪峰 Python3 教程,bookstack.cn。
  • 参考资料

    主要参考资料如下:

    1. DofBot树莓派视觉机械臂资料地址:链接