4.例子<一个class="headerlink" href="//www.sinclairbody.com/www/doc/en/PythonAPI/#examples" title="¶">¶一个>
本节将展示一些使用RoboDK API的Python示例。这些示例中的大多数都可以轻松地移植到其他编程语言(如c#、c++、. net或Matlab)。这些例子是使用Python 3测试的,可能需要一些调整才能在Python 2上工作。
其他RoboDK API示例包含在以下文件夹中:
C: / / RoboDK /图书馆/脚本
C: / RoboDK /图书馆/宏/
Scripts文件夹中的任何Python文件都可以作为独立脚本运行,请选择:
在RoboDK库中提供的示例RoboDK项目(RDK文件)中使用了一些示例。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一个>.
4.1.2022世界杯8强赛时间
4.2.2022世界杯8强赛时间离线编程(GUI)<一个class="headerlink" href="//www.sinclairbody.com/www/doc/en/PythonAPI/#offline-programming-gui" title="¶">¶一个>
这个例子是前一个例子的改进版本。在模拟或生成程序之前,它会提示用户输入一些内容。这个例子展示了RoboDK和Python GUI tkinter如何显示图形用户界面,以根据某些参数自定义程序生成。
-
更多信息请点击这里:
-
使用RoboDK API进行Python仿真:<一个class="reference external" href="//www.sinclairbody.com/www/doc/en/RoboDK-API.html">//www.sinclairbody.com/doc/en/RoboDK-API.html#PythonAPIOLP一个>
后处理器:<一个class="reference external" href="//www.sinclairbody.com/www/doc/en/Post-Processors.html">//www.sinclairbody.com/doc/en/Post-Processors.html#PostProcessor一个>
4.3.在线编程<一个class="headerlink" href="//www.sinclairbody.com/www/doc/en/PythonAPI/#online-programming" title="¶">¶一个>
此示例是前两个示例的修改版本,支持直接从脚本在机器人上运行程序。这个例子将从Python API(在线编程)在机器人上运行一个Python程序。如果将机器人连接到PC上,在Python程序执行的同时,仿真机器人和真实机器人将同时移动。同样的程序也可以用于模拟或脱机编程。2022世界杯8强赛时间
-
更多信息请点击这里:
-
使用RoboDK API为Python进行在线编程:<一个class="reference external" href="//www.sinclairbody.com/www/doc/en/RoboDK-API.html">//www.sinclairbody.com/doc/en/RoboDK-API.html#PythonAPIOnline一个>
机器人司机:<一个class="reference external" href="//www.sinclairbody.com/www/doc/en/Robot-Drivers.html">//www.sinclairbody.com/doc/en/Robot-Drivers.html#RobotDrivers一个>
4.4.项目要点<一个class="headerlink" href="//www.sinclairbody.com/www/doc/en/PythonAPI/#points-to-program" title="¶">¶一个>
这个例子展示了沿着一组点移动机器人的不同方式。
4.5.曲线点<一个class="headerlink" href="//www.sinclairbody.com/www/doc/en/PythonAPI/#points-to-curve" title="¶">¶一个>
这个例子展示了如何从API自动设置一个曲线跟踪项目。本例通过设置曲线跟踪项目或点跟踪项目,以不同的方式实现了与前面示例相同的目标。
4.6.CSV文件到程序(XYZ)<一个class="headerlink" href="//www.sinclairbody.com/www/doc/en/PythonAPI/#csv-file-to-program-xyz" title="¶">¶一个>
这个例子展示了如何从给定XYZ坐标列表的CSV文件中导入目标。可选地,第四列将更新程序中的速度。
默认情况下,这个例子可以作为RoboDK脚本使用:
选择工具-运行脚本
选择ImportCSV_XYZ
选择CSV文件(例如:C:/RoboDK/Library/Scripts/SampleXYZS.csv)
-
注:
-
在创建目标时,机器人的工具方向被用作参考。
XYZ值必须以毫米为单位提供,速度必须以毫米/秒提供。
活动工具和参考系将在程序中使用。
该程序将隐藏指令,您可以右键单击一个程序并选择“显示指令”显示指令。
您可以选择一个或移动移动指令,并选择“选择目标”查看目标。
4.7.CSV文件到程序(XYZWPR)<一个class="headerlink" href="//www.sinclairbody.com/www/doc/en/PythonAPI/#csv-file-to-program-xyzwpr" title="¶">¶一个>
这个例子展示了如何从给定XYZWPR坐标(姿态)列表的CSV文件中导入目标。
-
默认情况下,这个例子可以作为RoboDK脚本使用:
-
选择工具-运行脚本
选择ImportCSV_XYZWPR
选择CSV文件(例如:C:/RoboDK/Library/Scripts/ImportCSV_XYZWPR.csv)
-
注:
-
本例中使用目标方向的欧拉格式Z->Y ' ->X "(可以使用rotx, roty和rotz函数轻松更改)
XYZ值必须以毫米为单位,Rx, Ry, Rz值必须以度为单位。
活动工具和参考系将在程序中使用。
该程序将隐藏指令,您可以右键单击一个程序并选择显示指令以显示指令。
您可以选择一个或移动移动指令,并选择“选择目标”查看目标。
4.8.加载一个KUKA SRC文件<一个class="headerlink" href="//www.sinclairbody.com/www/doc/en/PythonAPI/#load-a-kuka-src-file" title="¶">¶一个>
这个例子展示了如何将KUKA SRC文件作为机器人程序导入。确保首先在RoboDK中加载你的KUKA机器人(用于SRC程序的机器人),然后使用Tools -> run - script运行这个脚本。
4.9.测试移动可行性<一个class="headerlink" href="//www.sinclairbody.com/www/doc/en/PythonAPI/#test-move-feasibility" title="¶">¶一个>
本例创建了一个程序,该程序通过一组点来安全地移动机器人,以检查是否可以实现线性运动(包括是否进行碰撞检查)。这些点被自动创建为围绕参考目标的立方体网格。如果无法实现从一点到下一点的线性运动,机器人将尝试关节运动,如果关节运动也不可能实现,则跳过该点。
4.10.对接界面<一个class="headerlink" href="//www.sinclairbody.com/www/doc/en/PythonAPI/#docked-ui" title="¶">¶一个>
这个例子展示了如何在RoboDK中嵌入一个窗口。在这种情况下,用TKInter创建的GUI窗口被添加为RoboDK中的停靠窗口。
4.11.预计周期时间<一个class="headerlink" href="//www.sinclairbody.com/www/doc/en/PythonAPI/#estimated-cycle-time" title="¶">¶一个>
这个例子展示了如何计算估计的周期时间。
-
更多关于RoboDK如何估计周期时间的信息:
-
4.13.投影曲线到曲面<一个class="headerlink" href="//www.sinclairbody.com/www/doc/en/PythonAPI/#project-curve-to-surface" title="¶">¶一个>
这个例子将特征(点/曲线)投影到一个曲面上,并计算曲面的法线。这个例子有两个对象:(1)有曲线和/或点的对象和(2)有一个或多个曲面的对象。
4.14.滤波曲线法线<一个class="headerlink" href="//www.sinclairbody.com/www/doc/en/PythonAPI/#filter-curve-normals" title="¶">¶一个>
这个宏显示了如何平均包含曲线的对象的法线。这个宏还可以过滤彼此过于接近的点。用户必须选择一个对象,然后使用平均法线创建该对象的副本。
4.15.变化曲线法线<一个class="headerlink" href="//www.sinclairbody.com/www/doc/en/PythonAPI/#change-curve-normals" title="¶">¶一个>
这个例子展示了如何通过改变i, j和k向量(0,0,1)来改变一个对象的曲线法线指向+Z方向。
4.16.将对象附加到机器人链接<一个class="headerlink" href="//www.sinclairbody.com/www/doc/en/PythonAPI/#attach-object-to-a-robot-link" title="¶">¶一个>
这个例子展示了如何将一个对象附加到一个机器人链接。一旦您将对象放置在首选位置,您就可以在RoboDK站中运行脚本。
4.17.使用键盘移动机器人<一个class="headerlink" href="//www.sinclairbody.com/www/doc/en/PythonAPI/#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我我遥控器或其他输入设备。
4.18.连接到机器人<一个class="headerlink" href="//www.sinclairbody.com/www/doc/en/PythonAPI/#connect-to-robots" title="¶">¶一个>
本例展示了如何使用机器人驱动程序连接到RoboDK站中所有可用的机器人,并将机器人移动到RoboDK中设置的位置。这个例子展示了如何同时与多个机器人通信。
-
更多信息请点击这里:
-
使用RoboDK API为Python进行在线编程:<一个class="reference external" href="//www.sinclairbody.com/www/doc/en/RoboDK-API.html">//www.sinclairbody.com/doc/en/RoboDK-API.html#PythonAPIOnline一个>
机器人司机:<一个class="reference external" href="//www.sinclairbody.com/www/doc/en/Robot-Drivers.html">//www.sinclairbody.com/doc/en/Robot-Drivers.html#RobotDrivers一个>
4.19.监控关节<一个class="headerlink" href="//www.sinclairbody.com/www/doc/en/PythonAPI/#monitor-joints" title="¶">¶一个>
这个例子展示了如何将机器人的模拟位置保存到文本或CSV文件中。
4.20.监控一个真实的UR机器人<一个class="headerlink" href="//www.sinclairbody.com/www/doc/en/PythonAPI/#monitor-a-real-ur-robot" title="¶">¶一个>
这个例子展示了如何监控连接到PC的万能机器人。除此之外,机器人的位置、速度和加速度可以在125赫兹的频率下进行监测。
-
更多信息请点击这里:
-
机器人司机:<一个class="reference external" href="//www.sinclairbody.com/www/doc/en/Robot-Drivers.html">//www.sinclairbody.com/doc/en/Robot-Drivers.html#RobotDrivers一个>
使用万能机器人的小贴士:<一个class="reference external" href="//www.sinclairbody.com/www/doc/en/Robots-Universal-Robots.html">//www.sinclairbody.com/doc/en/Robots-Universal-Robots.html#UR一个>
4.21.挑选和放置<一个class="headerlink" href="//www.sinclairbody.com/www/doc/en/PythonAPI/#pick-and-place" title="¶">¶一个>
这个例子展示了一个使用Fanuc M-710iC/50机器人的高级取放应用程序(来自RoboDK库的示例2)。
在本例中,发那科机器人的所有机器人运动都由Python程序管理。使用Python API可以创建、移动、修改和删除站中的任何对象、参考系、机器人或其他项目。
4.23.项目TCP到Axis<一个class="headerlink" href="//www.sinclairbody.com/www/doc/en/PythonAPI/#project-tcp-to-axis" title="¶">¶一个>
该脚本将一个工具(TCP)投射到由其他两个校准工具(定义一个轴的两个TCP)定义的轴上。这个脚本还会调整工具方向(Z轴)以匹配校准的轴。在更新TCP之前,将显示一个弹出窗口来提供工具错误。
如果需要精确计算主轴的点和轴(例如,用于机器人加工或切割),此脚本非常有用。
<我米g alt="_images / Tool-Projection.png"src="//www.sinclairbody.com/www/www/doc/en/PythonAPI/_images/Tool-Projection.png">
4.24.机器人加工设置<一个class="headerlink" href="//www.sinclairbody.com/www/doc/en/PythonAPI/#robot-machining-settings" title="¶">¶一个>
这个例子展示了如何使用RoboDK API修改与机器人加工和程序事件相关的设置。
双击机器人加工项目、曲线跟踪项目、点跟踪项目或3D打印项目,即可查看设置。
选择项目活动看事件。
下一节将展示如何更改轴优化设置(当机器人与外部轴结合时可能需要)。
<我米g alt="_images / RobotMachining.png"src="//www.sinclairbody.com/www/www/doc/en/PythonAPI/_images/RobotMachining.png">
可以使用parameter/命令将变量检索或设置为字典或JSON字符串加工而且ProgEvents如下例所示。
4.25.优化设置<一个class="headerlink" href="//www.sinclairbody.com/www/doc/en/PythonAPI/#axes-optimization-settings" title="¶">¶一个>
这个例子展示了如何使用RoboDK API和JSON字符串读取或修改Axes Optimization设置。您可以在机器人加工菜单中选择“轴优化”或机器人参数,查看轴优化设置。可以手动或使用API更新附加到机器人或机器人加工项目的轴优化设置。
<我米g alt="_images / AxesOptimization.png"src="//www.sinclairbody.com/www/www/doc/en/PythonAPI/_images/AxesOptimization.png">
可以使用parameter/命令将变量检索或设置为字典或JSON字符串OptimAxes如下例所示。
4.26.修改程序说明<一个class="headerlink" href="//www.sinclairbody.com/www/doc/en/PythonAPI/#modify-program-instructions" title="¶">¶一个>
这个例子展示了如何修改程序指令。
这个例子遍历选定的程序,改变速度,删除任何暂停指令,并添加自定义程序调用。
4.27.绘制SVG图像<一个class="headerlink" href="//www.sinclairbody.com/www/doc/en/PythonAPI/#drawing-an-svg-image" title="¶">¶一个>
给出一个SVG图像来编程一个机器人来模拟绘图应用程序。本例中使用ABB IRB 4600-20/2.50。
这个例子的3D HTML模拟:<一个class="reference external" href="//www.sinclairbody.com/www/simulations/Robot-Drawing.html">//www.sinclairbody.com/simulations/Robot-Drawing.html一个>
4.28.同步3机器人<一个class="headerlink" href="//www.sinclairbody.com/www/doc/en/PythonAPI/#synchronize-3-robots" title="¶">¶一个>
这个例子展示了如何同时同步多个机器人。给定关键点并使用Python线程,机器人可以一起同步。这个例子类似于<一个class="reference internal" href="//www.sinclairbody.com/www/doc/en/PythonAPI/#weldexample">2022世界杯8强赛时间但升级后支持同时移动多个机器人。机器人可以使用适当的机器人驱动程序连接到计算机,并从模拟切换到移动真正的机器人。
2022世界杯8强赛时间离线编程- 3个机器人同时进行
4.29.机器人模型(DH)<一个class="headerlink" href="//www.sinclairbody.com/www/doc/en/PythonAPI/#robot-model-dh" title="¶">¶一个>
本示例使用RoboDK API for Python对ABB IRB 120机器人的正运动学和逆运动学建模。参考框架是根据现有的机器人在站。
4.30.摄像头直播<一个class="headerlink" href="//www.sinclairbody.com/www/doc/en/PythonAPI/#camera-live-stream" title="¶">¶一个>
这个例子演示了使用Python的RoboDK API管理2D相机的一些基本功能。它创建或重用现有相机,设置其参数,使用两种不同的方法获取图像,并将其作为实时流显示给用户。这是计算机视觉算法的一个很好的起点。
4.31.摄像机标定<一个class="headerlink" href="//www.sinclairbody.com/www/doc/en/PythonAPI/#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">
4.32.相机的姿势<一个class="headerlink" href="//www.sinclairbody.com/www/doc/en/PythonAPI/#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.sinclairbody.com/www/www/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.sinclairbody.com/www/www/doc/en/PythonAPI/_images/charucoboard.jpg">
4.33.增强现实<一个class="headerlink" href="//www.sinclairbody.com/www/doc/en/PythonAPI/#augmented-reality" title="¶">¶一个>
这个例子展示了如何使用OpenCV将RoboDK的增强现实应用到输入摄像机馈电上。你需要一个校准的相机来估计相机的姿势,见前面的例子。
<我米g alt="增强现实"class="align-center" src="//www.sinclairbody.com/www/www/doc/en/PythonAPI/_images/AugReality.png">
4.34.二维码和条形码<一个class="headerlink" href="//www.sinclairbody.com/www/doc/en/PythonAPI/#qr-codes-and-barcodes" title="¶">¶一个>
这个例子展示了如何从RoboDK的输入摄像头读取QR码和条形码(EAN-13, UPC-A等)。输入摄像头可以是物理设备,也可以是RoboDK的模拟摄像头。它还提供实用程序脚本,将QR码和条形码作为对象添加到RoboDK站。
检测到的二维码和条形码将显示在单独的视图窗口中,检测用红色高亮显示。检测后,可以要求机器人根据读数将物品放置在特定的输送带、料仓等上。
<一个class="reference internal image-reference" href="//www.sinclairbody.com/www/www/doc/en/PythonAPI/_images/QRBarcodeReader.png">
4.34.1.生成二维码<一个class="headerlink" href="//www.sinclairbody.com/www/doc/en/PythonAPI/#generating-qr-codes" title="¶">¶一个>
4.34.2.生成条形码(EAN-13)<一个class="headerlink" href="//www.sinclairbody.com/www/doc/en/PythonAPI/#generating-barcodes-ean-13" title="¶">¶一个>
4.34.3.阅读二维码和条形码<一个class="headerlink" href="//www.sinclairbody.com/www/doc/en/PythonAPI/#reading-qr-codes-and-bar-codes" title="¶">¶一个>
4.35.对象检测<一个class="headerlink" href="//www.sinclairbody.com/www/doc/en/PythonAPI/#object-detection" title="¶">¶一个>
4.35.1.已知物体的二维姿态估计<一个class="headerlink" href="//www.sinclairbody.com/www/doc/en/PythonAPI/#d-pose-estimation-of-a-known-object" title="¶">¶一个>
这个例子展示了如何使用OpenCV将输入图像(源对象)与相机馈电匹配以确定它的2D姿态。它使用模拟摄像头,但可以很容易地修改为使用输入摄像头。这只计算沿Z轴的旋转和X/Y偏移。它不是用于3D定位的。你可以在<一个class="reference external" href="https://docs.opencv.org/master/d7/dff/tutorial_feature_homography.html">OpenCV单应图教程一个>.
<一个class="reference internal image-reference" href="//www.sinclairbody.com/www/www/doc/en/PythonAPI/_images/SIFT.png">
4.35.2.Blob检测<一个class="headerlink" href="//www.sinclairbody.com/www/doc/en/PythonAPI/#blob-detection" title="¶">¶一个>
这个例子展示了如何使用OpenCV检测简单的几何形状(blob)。它使用模拟摄像头,但可以很容易地修改为使用输入摄像头。你可以在<一个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.sinclairbody.com/www/www/doc/en/PythonAPI/_images/BlobDetection.png">
4.35.3.拉长部分的方向<一个class="headerlink" href="//www.sinclairbody.com/www/doc/en/PythonAPI/#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.sinclairbody.com/www/www/doc/en/PythonAPI/_images/PartOrientation.png">
4.36.深度相机<一个class="headerlink" href="//www.sinclairbody.com/www/doc/en/PythonAPI/#depth-camera" title="¶">¶一个>
4.36.1.深度图<一个class="headerlink" href="//www.sinclairbody.com/www/doc/en/PythonAPI/#depth-map" title="¶">¶一个>
此示例演示如何检索和显示模拟摄像机的32位深度图。
<一个class="reference internal image-reference" href="//www.sinclairbody.com/www/www/doc/en/PythonAPI/_images/example_depth_camera.png">