如何通过raspberry pi来控制机械臂抓取东西


#1

http://cn.dobot.cc/faqlist.html

若您使用的开发语言不在SDK支持的范围内, 或想要扩展到其他平台如手机端、PLC等其他控制系统来控制机械臂, 您可以通过提供的底层通信协议直接实现与机械臂的通信, 实现对机械臂底层的控制, 完成高级定制化应用功能的开发。
http://cn.dobot.cc/download-center/dobot-magician.html
Dobot机械臂二次开发Demo

⇒感觉能参考的资料很有限。
对于dobot以及串口通信,我还是个新手。
仅仅靠上面的文档,几乎无从入手。

1.仅仅用底层的串口通信来实现标贴所说的功能,感觉难度太大。

2.想通过编程语言调用API来实现。 但是下面页面的DobotDemoV2.0,不太明白如何使用。
http://cn.dobot.cc/download-center/dobot-magician.html
比如说DobotDemoForPython如何在MACbook上使用?
dll文件都是面向Windows的,没法在MACbook上运行吧?


#2

Mac 下面要用预编译的dll库,在这里:

另外调用dylib的代码要改一下


#3

precompiled目录下没有libDobotDll.dylib这个文件,有一个libDobotDll.1.0.0.dylib文件。

修改DobotDllType.py文件:
修改前:

def load():
return cdll.DobotDll

修改后:

def load():
if platform.system() == “Windows”:
return CDLL(“DobotDll.dll”, RTLD_GLOBAL)
elif platform.system() == “Darwin”:
return CDLL(“libDobotDll.1.0.0.dylib”, RTLD_GLOBAL)

出现以下的错误,google上查了很多,还是没能解决。
%python DobotControl.py

Traceback (most recent call last):
File “DobotControl.py”, line 4, in
api = dType.load()
File “/Users/outannexway/Downloads/dobot/DobotDemoV2.0-20170118/DobotDemoForPython/DobotDllType.py”, line 425, in load
return CDLL(“libDobotDll.1.0.0.dylib”, RTLD_GLOBAL)
File “/Users/outannexway/.pyenv/versions/3.4.3/lib/python3.4/ctypes/init.py”, line 351, in init
self._handle = _dlopen(self._name, mode)
OSError: dlopen(libDobotDll.1.0.0.dylib, 10): Library not loaded: @executable_path/QtSerialPort.framework/Versions/5/QtSerialPort
Referenced from: /Users/outannexway/Downloads/dobot/DobotDemoV2.0-20170118/DobotDemoForPython/libDobotDll.1.0.0.dylib
Reason: image not found


#4

参照以下的方法,上面的问题已解决。

%otool -L libDobotDll.1.0.0.dylib
libDobotDll.1.0.0.dylib:
libDobotDll.1.dylib (compatibility version 1.0.0, current version 1.0.0)
@executable_path/QtSerialPort.framework/Versions/5/QtSerialPort (compatibility version 5.7.0, current version 5.7.0)
@executable_path/QtCore.framework/Versions/5/QtCore (compatibility version 5.7.0, current version 5.7.0)
@executable_path/DiskArbitration.framework/Versions/A/DiskArbitration (compatibility version 1.0.0, current version 1.0.0)
@executable_path/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0)
@executable_path/QtNetwork.framework/Versions/5/QtNetwork (compatibility version 5.7.0, current version 5.7.0)
@executable_path/libc++.1.dylib (compatibility version 1.0.0, current version 307.4.0)
@executable_path/libSystem.B.dylib (compatibility version 1.0.0, current version 1238.0.0)

executable_path的部分,全部用install_name_tool的工具来修改路径。例如:

install_name_tool -change @executable_path/QtSerialPort.framework/Versions/5/QtSerialPort /Users/outannexway/Downloads/Dobot/DobotDemoV2.0-20170118/DobotDemoForPython/QtSerialPort.framework/Versions/5/QtSerialPort libDobotDll.1.0.0.dylib

修改之后:

%otool -L libDobotDll.1.0.0.dylib
libDobotDll.1.0.0.dylib:
libDobotDll.1.dylib (compatibility version 1.0.0, current version 1.0.0)
/Users/outannexway/Downloads/Dobot/DobotDemoV2.0-20170118/DobotDemoForPython/QtSerialPort.framework/Versions/5/QtSerialPort (compatibility version 5.7.0, current version 5.7.0)
/Users/outannexway/Downloads/Dobot/DobotDemoV2.0-20170118/DobotDemoForPython/QtCore.framework/Versions/5/QtCore (compatibility version 5.7.0, current version 5.7.0)
/Users/outannexway/Downloads/Dobot/DobotDemoV2.0-20170118/DobotDemoForPython/DiskArbitration.framework/Versions/A/DiskArbitration (compatibility version 1.0.0, current version 1.0.0)
/Users/outannexway/Downloads/Dobot/DobotDemoV2.0-20170118/DobotDemoForPython/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0)
/Users/outannexway/Downloads/Dobot/DobotDemoV2.0-20170118/DobotDemoForPython/QtNetwork.framework/Versions/5/QtNetwork (compatibility version 5.7.0, current version 5.7.0)
/Users/outannexway/Downloads/Dobot/DobotDemoV2.0-20170118/DobotDemoForPython/libc++.1.dylib (compatibility version 1.0.0, current version 307.4.0)
/Users/outannexway/Downloads/Dobot/DobotDemoV2.0-20170118/DobotDemoForPython/libSystem.B.dylib (compatibility version 1.0.0, current version 1238.0.0)

%python DobotControl.py
CDobotConnector : QThread(0x7fc9b9e19ca0)
CDobotProtocol : QThread(0x7fc9b9f022a0)
CDobotCommunicator : QThread(0x7fc9b9c96fa0)
Connect status: Success

结论:
precompiled目录下的dll文件,编译的估计有问题。没法在Macbook的command line中执行。


#5

这几天,我一口气问了好多问题。 估计论坛的管理员都厌烦我提问了:sweat_smile:

我人在日本东京, 3月份在东京国际会展中心有一个关于IoT的展览会。
我公司准备参展,参展的内容中就有一个用raspberry pi来控制dobot抓取饮料的环节。
所以需要对dobot进行二次开发。
我查了很多的机械臂,在uarm和dobot两者中,最终还是选择了贵公司的dobot.
主要是觉得dobot是开源的,相关的文档还算比较丰富。
但是实际用了之后,特别是二次开发,以现有的公开的资料而言,难度还真不小。
dobot一代和2代,好像完全不兼容,底层的通信协议都有很大不同,论坛上很多sample,
没有具体表明是一代用的还是二代用的代码。
直接在二代magician上执行,出了很多问题,饶了很多弯子。

另外magician的API开发文档,只有C语言版的?
我想用Python开发,仅仅看那个API文档, 觉得有点困难呀。
有没有Python开发的API相关文档?

3月份的展览会,全日本的很多公司都会参加。
我做的程序要是能正常运行的话,
弄不好可以提高dobot在日本的知名度,
说不定对贵公司的日本市场的开发也有好处呢。

要想实现我想做的东西,估计接下来还有不少难关需要越过。
还希望贵公司不吝赐教呀。


#6

不好意思 这几天都比较忙,人手不足。
“有没有Python开发的API相关文档?”
关于这个,我们的script脚本就是python写的, 你可以先看这边的提示来熟悉:


#7

可以给个联系方式吗?比如微信?看看能不能解决你那边的问题


#8

太谢谢你啦。
我的微信号:outanwang

你周末都在论坛上回答问题,也真够辛苦的呀。


#9

同样的问题在macOS 下 , 麻烦问下解决没


#10

要实现的东西,基本上完成了。还剩下一些后续的调试


#11

executable_path的部分,还遇到以下错误,请问有招吗?

Traceback (most recent call last):
File “DobotControl.py”, line 4, in
api = dType.load()
File “/Users/zkevin/Dobot/DobotDllType.py”, line 424, in load
return CDLL(“libDobotDll.1.0.0.dylib”, RTLD_GLOBAL)
File “/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ctypes/init.py”, line 365, in init
self._handle = _dlopen(self._name, mode)
OSError: dlopen(libDobotDll.1.0.0.dylib, 10): Symbol not found: __DAmkdir
Referenced from: /System/Library/Frameworks/NetFS.framework/Versions/A/NetFS
Expected in: /Users/zkevin/Dobot/DiskArbitration.framework/Versions/A/DiskArbitration
in /System/Library/Frameworks/NetFS.framework/Versions/A/NetFS


如何在Macbook中运行python Demo
#12

你也来啦,看样子我们要找Eric Zhou


#13

估计你的电脑是macbook的最新版吧?
有两个办法。
①用OSX的旧版本
②最新版的OSX中,升级python, Xcode,重启系统。

我用的是①、OS X10.11.6中能正常运行。
@jxx 用第二种方法解决的。详细情况,你可以问问他。


#14

谢谢你,我找@jxx 问问,我和他认识,我们正准备用这个东西做一些自动画图的scripts。


#15

哦,这世界真小呀。
越疆的机械臂出来也没很长时间, 对于开发者而言,
开发环境,开发相关的文档,demo程序之类的还不是很完善,
估计越疆的人手也紧张, 论坛中问的问题也没法及时回复。
所以希望我们这些想做二次开发的人可以在论坛上多多分享我们的经验,
大家相互促进。
可以加我微信么? outanwang


#16

必须的,我们应该多交流。有空的时候再把开发的经验分享给大家。
加你微信了


#18

请问你windows的python二次开发了解吗?