5。例子<一个class="headerlink" href="#examples" title="¶”>¶一个>
本节显示了一些示例在Python中使用RoboDK API。这些例子可以很容易地移植到其他编程语言(如c#、c++、。net或Matlab)。这些例子进行测试使用Python 3和可能需要一些调整Python 2。
额外RoboDK API的例子是包含在以下文件夹:
C: / / RoboDK /图书馆/脚本
C: / RoboDK /图书馆/宏/
任何Python文件中可用脚本文件夹可以运行作为一个独立的脚本通过选择:
一些例子用于样本RoboDK项目(RDK文件)中提供RoboDK图书馆。一些例子也可以在GitHub上:<一个class="reference external" href="https://github.com/RoboDK/RoboDK-API/tree/master/Python/Examples">https://github.com/RoboDK/RoboDK-API/tree/master/Python/Examples一个>。
5.1。离线编程<一个class="headerlink" href="#offline-programming" title="¶”>¶一个>
这个例子展示了如何生成一个六角路径给出一个目标。这个宏将一个半径为R和n_sides顶点的多边形为Python使用RoboDK API。
-
更多信息:
-
离线编程与RoboDK:<一个class="reference external" href="//www.hi-ks.com/offline-programming">//www.hi-ks.com/offline-programming一个>
模拟使用RoboDK Python API:<一个class="reference external" href="//www.hi-ks.com/doc/en/RoboDK-API.html">//www.hi-ks.com/doc/en/RoboDK-API.html PythonAPIOLP一个>
后处理器:<一个class="reference external" href="//www.hi-ks.com/doc/en/Post-Processors.html">//www.hi-ks.com/doc/en/Post-Processors.html后处理程序一个>
离线编程概述:<一个class="reference external" href="https://www.youtube.com/watch?list=PLjiA6TvRACQc5E_3c5f3TFXEa56XNR1-m&v=Ic-iKGSc7dk">https://www.youtube.com/watch?list=PLjiA6TvRACQc5E_3c5f3TFXEa56XNR1-m&v=Ic-iKGSc7dk一个>
5.2。离线编程(GUI)<一个class="headerlink" href="#offline-programming-gui" title="¶”>¶一个>
这个例子是一个改进版本的前面的示例。这对一些输入之前提示用户模拟或生成一个程序。这个例子展示了如何RoboDK和Python GUI tkinter可以显示图形用户界面定制程序代根据某些参数。
-
更多信息:
-
模拟使用RoboDK Python API:<一个class="reference external" href="//www.hi-ks.com/doc/en/RoboDK-API.html">//www.hi-ks.com/doc/en/RoboDK-API.html PythonAPIOLP一个>
后处理器:<一个class="reference external" href="//www.hi-ks.com/doc/en/Post-Processors.html">//www.hi-ks.com/doc/en/Post-Processors.html后处理程序一个>
5.3。在线编程<一个class="headerlink" href="#online-programming" title="¶”>¶一个>
这个例子是一个修改版本之前的两个例子支持运行程序的机器人直接从脚本。这个例子将运行一个Python程序的机器人从Python API(在线编程)。如果连接到电脑,机器人仿真和真实的机器人将在同一时间执行Python程序。同一个程序还可用于模拟或离线编程。
-
更多信息:
-
在线编程使用Python的RoboDK API:<一个class="reference external" href="//www.hi-ks.com/doc/en/RoboDK-API.html">//www.hi-ks.com/doc/en/RoboDK-API.html PythonAPIOnline一个>
机器人司机:<一个class="reference external" href="//www.hi-ks.com/doc/en/Robot-Drivers.html">//www.hi-ks.com/doc/en/Robot-Drivers.html RobotDrivers一个>
5.4。指向程序<一个class="headerlink" href="#points-to-program" title="¶”>¶一个>
这个例子展示了不同的方法移动机器人沿着点的列表。
5.5。点曲线<一个class="headerlink" href="#points-to-curve" title="¶”>¶一个>
这个例子展示了如何自动设置曲线遵循项目从API。这个例子实现相同的目标之前的例子以不同的方式通过设置曲线都跟随项目或一个点项目。
5.6。CSV文件程序(某某)<一个class="headerlink" href="#csv-file-to-program-xyz" title="¶”>¶一个>
这个例子展示了如何从一个CSV文件导入目标给XYZ坐标的列表。可选地,第四列将更新程序的速度。
这个例子可以作为RoboDK脚本默认情况下:
选择工具涉及脚本
选择ImportCSV_XYZ
选择一个CSV文件(例如:C: / RoboDK /图书馆/脚本/ SampleXYZS.csv)
-
注:
-
机器人的工具定位是创建目标时作为参考。
XYZ值必须提供在毫米,mm / s的速度必须提供。
活跃的工具和参考帧将用于项目。
程序将说明隐藏,您可以右键单击项目并选择“显示指令”显示的指令。
你可以选择一个或移动运动指令并选择“选择目标”的目标。
5.7。CSV文件程序(XYZWPR)<一个class="headerlink" href="#csv-file-to-program-xyzwpr" title="¶”>¶一个>
这个例子展示了如何从一个CSV文件导入目标给定XYZWPR坐标(姿势)的列表。
-
这个例子可以作为RoboDK脚本默认情况下:
-
选择工具涉及脚本
选择ImportCSV_XYZWPR
选择一个CSV文件(例如:C: / RoboDK /图书馆/脚本/ ImportCSV_XYZWPR.csv)
-
注:
-
欧拉格式Z - > Y ' - > X”为目标取向是本例中使用(它可以很容易地改变了使用rotx roty和rotz功能)
XYZ值必须提供在毫米、Rx, Rz值必须提供在度。
活跃的工具和参考帧将用于项目。
程序将说明隐藏,您可以右键单击项目并选择显示指令显示指令。
你可以选择一个或移动运动指令并选择“选择目标”的目标。
5.8。加载库卡SRC文件<一个class="headerlink" href="#load-a-kuka-src-file" title="¶”>¶一个>
这个例子展示了如何导入库卡SRC文件作为一个机器人程序。确保第一次加载库卡机器人RoboDK(一个用于SRC程序),然后运行这个脚本使用工具- >运行脚本。
5.9。测试移动可行性<一个class="headerlink" href="#test-move-feasibility" title="¶”>¶一个>
这个示例创建了一个安全程序,移动机器人通过一组点检查可以实现线性运动(包括碰撞检查与否)。点会自动创建一个立方体网格参考目标。如果一个线性运动不能实现从一个点到下一个机器人会联合运动如果联合运动也不可能将被忽略。
5.10。对接界面<一个class="headerlink" href="#docked-ui" title="¶”>¶一个>
这个例子展示了如何嵌入RoboDK窗口。在这种情况下,添加一个GUI窗口创建TKInter RoboDK停靠窗口。
5.11。估计周期时间<一个class="headerlink" href="#estimated-cycle-time" title="¶”>¶一个>
这个例子展示了如何计算估计周期。
-
更多的信息关于RoboDK估计周期:
-
5.13。项目曲线表面<一个class="headerlink" href="#project-curve-to-surface" title="¶”>¶一个>
这个示例项目的特性(点/曲线)表面,计算表面的法线。这个例子需要2对象:(1)一个对象与曲线和/或分和(2)一个对象与一个或多个表面。
5.14。过滤器曲线法线<一个class="headerlink" href="#filter-curve-normals" title="¶”>¶一个>
这个宏展示如何包含曲线平均一个物体的法线。这个宏可以过滤点太近。用户必须选择一个对象,这个对象的一个副本创建平均法线。
5.15。变化曲线法线<一个class="headerlink" href="#change-curve-normals" title="¶”>¶一个>
这个例子展示了如何改变一个对象的曲线正常点+ Z方向通过改变我,j和k向量(0 0 1)。
5.16。将对象附加到一个机器人链接<一个class="headerlink" href="#attach-object-to-a-robot-link" title="¶”>¶一个>
这个例子展示了如何将一个对象附加到一个机器人链接。一旦你首选的对象的位置,你可以运行脚本RoboDK站。
5.17。移动机器人使用键盘<一个class="headerlink" href="#move-robot-using-a-keyboard" title="¶”>¶一个>
这个例子展示了如何使用键盘移动机器人。这个宏需要执行作为一个单独的流程正确拦截键盘(不是在RoboDK)。这个例子可以扩展到移动机器人使用<一个class="reference external" href="https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginAppLoader/Apps/XboxController">的Xbox控制器一个>W我我遥控器或任何其它输入设备。
5.18。连接到机器人<一个class="headerlink" href="#connect-to-robots" title="¶”>¶一个>
这个例子展示了如何连接到所有可用机器人RoboDK站使用机器人司机和移动机器人在RoboDK位置设置。这个例子展示了如何与多个机器人在同一时间。
-
更多信息:
-
在线编程使用Python的RoboDK API:<一个class="reference external" href="//www.hi-ks.com/doc/en/RoboDK-API.html">//www.hi-ks.com/doc/en/RoboDK-API.html PythonAPIOnline一个>
机器人司机:<一个class="reference external" href="//www.hi-ks.com/doc/en/Robot-Drivers.html">//www.hi-ks.com/doc/en/Robot-Drivers.html RobotDrivers一个>
5.19。监控关节<一个class="headerlink" href="#monitor-joints" title="¶”>¶一个>
这个例子展示了如何将模拟机器人的位置保存到文本或CSV文件。
5.20。监控一个真正的你的机器人<一个class="headerlink" href="#monitor-a-real-ur-robot" title="¶”>¶一个>
这个例子展示了如何监视一个万能机器人连接到电脑。除此之外,机器人的位置、速度和加速度可以监视在125赫兹。
-
更多信息:
-
机器人司机:<一个class="reference external" href="//www.hi-ks.com/doc/en/Robot-Drivers.html">//www.hi-ks.com/doc/en/Robot-Drivers.html RobotDrivers一个>
使用通用机器人的小贴士:<一个class="reference external" href="//www.hi-ks.com/doc/en/Robots-Universal-Robots.html">//www.hi-ks.com/doc/en/Robots-Universal-Robots.html你的一个>
5.21。选择和地点<一个class="headerlink" href="#pick-and-place" title="¶”>¶一个>
这个例子显示了一个先进的挑选和地方应用程序使用Fanuc 50 m - 710 ic /机器人从RoboDK库(例2)。
在这个例子中所有的机器人运动发那科机器人由Python程序管理。使用Python API可以创建,修改和删除任何对象,参考系,机器人在车站或其他物品。
5.23。项目TCP轴<一个class="headerlink" href="#project-tcp-to-axis" title="¶”>¶一个>
这个脚本项目工具(TCP)轴定义为另外两个校准工具定义一个轴(两个TCP)。这个脚本也对齐工具取向(Z轴)来匹配校准轴。将显示一个弹出之前提供错误的工具更新TCP。
这个脚本是有用的,如果点和轴的轴需要准确地计算(例如,对于机器人加工或切割)。亚博ios下载
<我米g alt="_images / Tool-Projection.png”src="//www.hi-ks.com/doc/en/PythonAPI/_images/Tool-Projection.png">
5.24。亚博ios下载机器人加工设置<一个class="headerlink" href="#robot-machining-settings" title="¶”>¶一个>
这个例子展示了如何修改相关设置机器人加工和使用RoboDK API程序事件。亚博ios下载
双击一个机器人加工项目,曲线遵亚博ios下载循项目,按照项目或者3 d打印项目设置。
选择项目活动看到的事件。
下一节将展示如何改变轴优化设置(可能需要当一个机器人结合外部轴)。
<我米g alt="_images / RobotMachining.png”src="//www.hi-ks.com/doc/en/PythonAPI/_images/RobotMachining.png">
变量可以被检索或设置dict或JSON字符串使用参数/命令加工和ProgEvents如以下示例所示。
5.25。轴的优化设置<一个class="headerlink" href="#axes-optimization-settings" title="¶”>¶一个>
这个例子展示了如何阅读或修改轴优化设置使用RoboDK API和一个JSON字符串。您可以选择“轴优化”机器人加工菜单或查看轴机器人参数优化设置。亚博ios下载可以更新轴优化设置附加到一个机器人和机器人加工项目手动或使用API。亚博ios下载
<我米g alt="_images / AxesOptimization.png”src="//www.hi-ks.com/doc/en/PythonAPI/_images/AxesOptimization.png">
变量可以被检索或设置dict或JSON字符串使用参数/命令OptimAxes如以下示例所示。
5.26。修改程序指令<一个class="headerlink" href="#modify-program-instructions" title="¶”>¶一个>
这个例子展示了如何修改程序指令。
这个例子中遍历所选程序改变速度,和删除任何暂停指令和添加自定义程序调用。
5.27。画一个SVG图像<一个class="headerlink" href="#drawing-an-svg-image" title="¶”>¶一个>
机器人程序给定一个SVG图像模拟绘图应用程序。4600 - 20/2.50 ABB IRB在这个例子中使用。
3d的HTML模拟这个例子:<一个class="reference external" href="//www.hi-ks.com/simulations/Robot-Drawing.html">//www.hi-ks.com/simulations/Robot-Drawing.html一个>
5.28。同步3机器人<一个class="headerlink" href="#synchronize-3-robots" title="¶”>¶一个>
这个例子展示了多个机器人同时同步。机器人可以一起给要点和使用Python线程同步。这个例子是类似的<一个class="reference internal" href="#weldexample">离线编程但更新支持多个移动机器人在同一时间。机器人可以连接电脑使用适当的机器人司机和从模拟转向真正的移动机器人。
5.29。机器人模型(DH)<一个class="headerlink" href="#robot-model-dh" title="¶”>¶一个>
这个例子的正向和逆向运动学模型ABB IRB Python 120机器人使用RoboDK API。参考帧是根据现有的机器人放在车站。
5.30。摄像机标定<一个class="headerlink" href="#camera-calibration" title="¶”>¶一个>
这个例子展示了如何找到相机使用OpenCV内在和外在属性。打印棋盘,并采取一系列的至少5图像移动时周围的棋盘。你可以找到更多的信息<一个class="reference external" href="https://docs.opencv.org/master/dc/dbb/tutorial_py_calibration.html">OpenCV校准教程一个>。
<一个class="reference internal image-reference" href="https://raw.githubusercontent.com/opencv/opencv/master/doc/pattern.png">
5.31。相机的姿势<一个class="headerlink" href="#camera-pose" title="¶”>¶一个>
这个例子展示了如何使用OpenCV估计一个相机的姿势。你需要一个校准相机估计相机姿势,看到前面的示例。你可以找到更多的信息<一个class="reference external" href="https://docs.opencv.org/master/df/d4a/tutorial_charuco_detection.html">OpenCV ChArUco教程一个>。
<我米g alt="摄像机构成的例子”class="align-center" src="//www.hi-ks.com/doc/en/PythonAPI/_images/CameraPose.png">
打印<一个class="reference external" href="https://docs.opencv.org/master/charucoboard.jpg">charucoboard一个>信格式,并将其在镜头面前。
<一个class="reference internal image-reference" href="//www.hi-ks.com/doc/en/PythonAPI/_images/charucoboard.jpg">
5.32。增强现实<一个class="headerlink" href="#augmented-reality" title="¶”>¶一个>
这个例子展示了如何从RoboDK应用增强现实在输入相机饲料使用OpenCV。你需要一个校准相机估计相机姿势,看到前面的示例。
<我米g alt="增强现实”class="align-center" src="//www.hi-ks.com/doc/en/PythonAPI/_images/AugReality.png">
5.33。QR码、条形码<一个class="headerlink" href="#qr-codes-and-barcodes" title="¶”>¶一个>
这个例子展示了如何读取QR码和条形码(EAN-13、UPC-A等)从输入RoboDK相机。输入相机可以是一个物理设备或从RoboDK模拟相机。它还提供了实用程序脚本将QR码、条形码对象添加到RoboDK站。
检测二维码和条形码将显示在一个单独的视图窗口,与检测以红色突出显示。检测后,可以要求机器人把物品放在一个特定的输送机,本等基于读数。
<一个class="reference internal image-reference" href="//www.hi-ks.com/doc/en/PythonAPI/_images/QRBarcodeReader.png">
5.33.1。生成二维码<一个class="headerlink" href="#generating-qr-codes" title="¶”>¶一个>
5.33.2。生成条形码(EAN-13)<一个class="headerlink" href="#generating-barcodes-ean-13" title="¶”>¶一个>
5.33.3。阅读QR码和条形码<一个class="headerlink" href="#reading-qr-codes-and-bar-codes" title="¶”>¶一个>
5.34。对象检测<一个class="headerlink" href="#object-detection" title="¶”>¶一个>
5.34.1。二维姿态估计的一个已知的对象<一个class="headerlink" href="#d-pose-estimation-of-a-known-object" title="¶”>¶一个>
这个例子展示了如何匹配一个输入图像(源对象),相机饲料来确定它是2 d的姿势使用OpenCV。它使用一个模拟相机,但它可以很容易地修改为使用一个输入相机。这只计算沿Z轴旋转,X / Y补偿。这并不意味着对3 d定位。你可以找到更多的信息<一个class="reference external" href="https://docs.opencv.org/master/d7/dff/tutorial_feature_homography.html">OpenCV单应性教程一个>。
<一个class="reference internal image-reference" href="//www.hi-ks.com/doc/en/PythonAPI/_images/SIFT.png">
5.34.2。Blob检测<一个class="headerlink" href="#blob-detection" title="¶”>¶一个>
这个例子显示了如何检测简单的几何形状(blob)使用OpenCV。它使用一个模拟相机,但它可以很容易地修改为使用一个输入相机。你可以找到更多的信息<一个class="reference external" href="https://docs.opencv.org/master/d3/d05/tutorial_py_table_of_contents_contours.html">OpenCV轮廓教程一个>。
<我米g alt="_images / BlobDetection.png”class="align-center" src="//www.hi-ks.com/doc/en/PythonAPI/_images/BlobDetection.png">
5.34.3。方向的细长的部分<一个class="headerlink" href="#orientation-of-elongated-parts" title="¶”>¶一个>
这个例子展示了如何检测的方向拉长部分相机饲料中使用OpenCV。它使用一个模拟相机,但它可以很容易地修改为使用一个输入相机。你可以找到更多的信息<一个class="reference external" href="https://docs.opencv.org/master/d3/d05/tutorial_py_table_of_contents_contours.html">OpenCV轮廓教程一个>。
<我米g alt="_images / PartOrientation.png”class="align-center" src="//www.hi-ks.com/doc/en/PythonAPI/_images/PartOrientation.png">