本文是一个GitHub上的开源项目,记录一下详细的实现过程。
首先需要下载安装VMware,官方链接Download VMware Workstation Pro。URSim官方链接UR Download | Support Site | Universal Robots,安装教程网上很多,随便找一个就可以。
我的URSIm版本是3.13.1.10297,安装好打开以后需要配置网络。点击Player-管理-虚拟机设置,然后选择网络适配器,网络连接里面设置为VMnet8(NAT 模式)。
接下来在 Windows 中打开网络适配器的属性并设置 VMnet8 适配器的静态 IP 地址。首先确定机械臂的IP,我的是192.168.235.128,所以将网络适配器中的VMnet8的IPv4地址设为静态IP:192.168.235.1。
接下来还需要编写一段简单的UR机械臂代码,将UR作为客户端,获取关节角度,并通过socket传给Unity中的服务端,代码如下。IP地址和端口需要改成自己的。
Program
BeforeStart
Script: JointFunction.script
Robot Program
MoveJ
Waypoint_1
Waypoint_2
Thread_1
Loop sockon≟ True
getjointAngles()
Wait: 0.05
If sockon≟ False
socket_close("sock1")
sockon=socket_open("192.168.235.1",5000)
Wait: 0.01
关节函数脚本:
global angles=[0,0,0,0,0,0]
global angles_send=""
sockon=socket_open("192.168.102.1",5000,"sock1")
def getjointAngles():
angles=get_actual_joint_positions()
angles_send=str_cat(angles[0],";")
angles_send=str_cat(angles_send,angles[1])
angles_send=str_cat(angles_send,";")
angles_send=str_cat(angles_send,angles[2])
angles_send=str_cat(angles_send,";")
angles_send=str_cat(angles_send,angles[3])
angles_send=str_cat(angles_send,";")
angles_send=str_cat(angles_send,angles[4])
angles_send=str_cat(angles_send,";")
angles_send=str_cat(angles_send,angles[5])
sockon= socket_send_line(angles_send)
end
这样就可以与Unity进行通信了。
运行程序之后,还需要将机械臂移动到初始点,选择自动即可,然后再点运行。
然后打开Unity项目,可以在GitHub上下载,也可以下载我上传的资源https://download.csdn.net/download/sinat_32804425/70787548。我用的是unity2020,项目界面如下。
点击运行,输入IP地址和端口号,IP地址可以随意输入,端口号是5000,再点击Start。如果遇到问题可以修改UR5Controller的代码,如下图所示。
最终的效果就是虚拟模型可以完美的跟踪URSIm中的机械臂运动,由于没有制作动图,这里就先截一张效果图吧
完结撒花!
原链接
https://github.com/zainmehdi/UR-Simulation-in-Unity-Hardware-in-the-loop-Animation-of-Real-Robot
文章评论