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