摘 要:针对七自由度机械臂远程控制的需要,构建了基于TCP/IP网络的控制系统。首先通过设计单片机系统实现本地端控制,然后运用WinSockets类创建基于TCP/IP的远程控制程序,使连接在Internet网络上的任意客户端均可实现对机械臂的远程控制。结合视频网络服务器,实现了对机械臂的实时监控操作。
关键词:机械臂;TCP/IP;远程控制;视频服务器
Abstract: A tele-co
ntrol system for a 7-dof robot arm ba
sed on TCP/IP network is created. AVR singlechip is adopted to build a local co
ntrol system. In order to l
ink clients and the server in the Internet web, WinSockets class is applied to program using Visual c++. It is co
nvenience to real-time observe tele-operation combined with video network server.
KeyWords: Robot arm; TCP/IP; Tele-control; video network server Rhino XR-2机器人[1]是一个典型的机电一体化产品,它模拟人的上肢,肩关节可从-45到+135度旋转;肘关节可从-135到90 度旋转;手腕可以上下90度旋转,左右170度旋转,是一个具有7个自由度的机械臂系统。通过适当调节各关节,该机器人能够从指定位置抓取较小物体。为了实现远程控制,构建了基于TCP/IP网络的七自由度机械臂远程控制系统,如图1所示。通过该系统,连接在Internet网络上的任意客户端均可登录指定服务器获取操作权限实现对七自由度机械臂的远程控制,并通过视频网络服务器实时监控机械臂操作结果。[align=center]
图1 七自由度机械臂远程控制系统[/align]
1.本地端控制系统设计 首先设计本地端控制器,由于每个关节单独由一个Brevel电机驱动,因此只要在本地端实现对各个电机的单独控制包括启动、停止、调速即可。 1.1基于 ZLG7289B的本地控制 ZLG7289B[2] 是周立功单片机发展有限公司自行设计的数码管显示驱动及键盘扫描管理芯片,可直接驱动8 位共阴式数码管(或64 只独立LED),同时还可以扫描管理多达64 只按键。ZLG7289B 内部含有显示译码器,可直接接收BCD 码或16 进制码,并同时具有2 种译码方式。ZLG7289B 采用SPI 串行总线与微控制器接口,仅占用少数几根I/O 口线。 本例中采用AVRmega128单片机作为微控制器,通过ZLG7289B实现对键盘的操作,从而触发8个电机的不同动作,实现对机械臂的控制。AVR高端芯片MEGA128拥有53个IO口输出,8个PWM输出口,8个外部中断,16位定时器与8位定时器各两个。它采用单指令周期,处理速度快,在满足I/O的情况下,足以满足电机控制的运算要求。利用该单片机产生8路PWM信号通过两个L298N驱动模块实现8个电机的驱动。每个L298N驱动模块包含2块电机驱动芯片L298N、16个保护二极管、4个
电源滤波稳定电容、2个输入信号逻辑处理单元、4个控制电机输出
插座。由于每个L298N芯片控制2个电机,则每个驱动模块可以控制4个电机,其实物图如图2所示。[align=center]
图2 L298N驱动模块[/align] 为方便操作,使用了液晶显示模块LCMxxZK,其绘图显示画面提供一个64*256 点的绘图区域,电源操作范围宽(2.7V to 5.5V),此外,低功耗设计可满足产品的省电要求同时与单片机的接口界面非常灵活。如图3所示,利用设计的单片机控制系统,根据液晶显示屏的提示通过键盘操作可以实现对机械臂的控制,同时操作结果通过液晶显示屏反馈给操作者。[align=center]
图3 液晶屏与键盘[/align] 1.2基于串口通信的上位机控制 为了构建基于TCP/IP网络的远程控制系统,需要在本地建立服务器端控制器。本例中采用PC机作为远程控制的服务器,同时作为单片机控制系统的上位控制器。 该上位机系统采用DB9-RS232串口线作为数据总线,通过串行通信与下位机建立联系。PC机通过数据总线把位选、转向、转速等信息传递给下位单片机AVR Mega128,通过对I/O口置1或清零来控制相应电机的转向,并通过改变PWM信号占空比来控制转速。 由于数据总线的使用,各部分都相互独立,只需要遵守相同的数据传输协议即可工作,使得扩展功能变得十分容易。有时候甚至不需对芯片进行重编程或电路板进行大幅度修改,只需要更换部分模块就可以实现功能升级。在Visual C++ 6.0环境下运用串口类编写了上位机控制程序[3],通过该程序,可利用个人PC实现对机械臂的控制。
2.基于TCP/IP网络的远程控制 通过设计本地端控制系统后,可以在本地端实现七自由度机械臂的各关节速度控制,从而实现机械手运动到适当位置抓取物体,并传送到另一位置。为了实现异地远程控制,需要设计远程控制系统。基于TCP/IP的以太网络进行远程控制是一个好的选择。本例中构建了一个基于C/S(Client/Server)结构的远程控制体系,该体系包含服务器端和客户端,服务器端接收到客户端程序发来的数据后,对数据进行处理,进而发出相应的指令通过串口通信控制主控单片机,从而控制各关节的相应动作。 服务器端程序功能如下: (1)创建监听Socket进行监听,当有客户端请求连接时建立一个新的接收Socket处理这个客户的数据发送与接收; (2)接收客户端发来的数据并向客户端返回相应信息; (3)对接收到的数据进行处理,然后向下位单片机发送控制命令。 客户端程序功能如下: (1)建立与服务器程序的连接 (2)向服务器程序发送数据信息,接收从服务器程序返回的信息 (3)关闭与服务器程序的连接 在Visual C++ 6.0环境下运用WinSockets类来编写基于TCP/IP的远程控制程序,其中服务器端监听程序如下。 if(Accept(*pSocket)) { pDlg->m_pAcceptList.AddTail(pSocket); CString strAddr,strAddr1; UINT unPort,unPort1; pSocket->GetPeerName(strAddr1,unPort1); //得到远程IP地址和端口号 pSocket->GetSockName(strAddr,unPort); //得到本地IP地址和端口号 pDlg->m_strNetMsg.Format("本地IP%s端口%d连接上远程客户IP%s端口%d", strAddr,unPort,strAddr1,unPort1); pDlg->UpdateMsgData(); } else { delete pSocket; } CSocket::OnAccept(nErrorCode); 其部分界面如图4所示:[align=center]
图4 服务器端界面[/align] 由图4可知,该服务端控制程序既可以由操作人员单击图中按钮实现本地端对七自由度机械臂的控制,也可以通过客户端发送相应信息由服务端响应后自动调用相应的函数实现对机械臂的控制。
3.基于视频网络服务器的远程控制 为了监控七自由度机械臂远程控制的操作结果,利用视频网络服务器将机械臂运动的实时图像通过Internet网络传送到客户端。 视频网络服务器是一种对视频数据进行编码处理并完成网络传输的专用设备,它将摄像机输入的模拟信号转换为数字信号,再通过Internet传输,客户端便可在任何地方通过上网来浏览图像。它具有独立完成传输的功能,不需要另外设置计算机,能实现简单的IP方式组网,是传统的模拟监控所无法实现的。 本例中采用RILAN-F1004四路视频网络服务器,通过以太网将实时的图像通过网络传输。该服务器采用了先进的操作系统和视频压缩算法,使得图像传输更加流畅,并且显示更加清晰细腻;系统调度效率高,运行稳定可靠,支持通过Internet浏览器进行远程图像访问。由于用于操作控制的服务器端和视频服务器地址相互独立,为了便于远程操作和监控,把两个服务端的登录集成在一个客户端界面中。当服务器端启动服务器后,客户端首先可以通过Internet浏览器登录视频网络服务器,从图5中可以看到,位于机械臂不同位置的四路视频图像实时显示在界面的左侧;此时可以向控制服务器端发出请求,服务器端响应后,返回允许操作的信号,操作者即可根据右侧控制面板进行七自由度机械臂的远程控制,同时可以实时观察机械臂动作,图中所示为机械手抓住一小物体正准备释放。[align=center]
图5 客户端界面[/align]
4.结论 本文作者创新点:提出两种不同方法,利用高端ARV单片机与PC机实现了七自由度机械臂本地端控制。构建了一个融串口类对象和WinSockets类对象于一体的基于C/S(Client/Server)结构的远程控制体系,通过视频网络服务器反馈的视频信息,有效地实现了七自由度机械臂远程控制。
参考文献 1. http://www.rhinorobotics.com[EB/OL] 2. http://www.zlgmcu.com/philips/hotic/ZLG7289.asp[EB/OL] 3. 朱培武、熊光明、彭波、龚建伟.基于Rabbit 2000的无线调度系统液晶汉字显示方法.微计算机信息.2005,21卷,8期