时间:2024-08-31
孟珠李, 焦 俊, 朱 诚, 王 强, 古 冉, 袁晨晨
(安徽农业大学信息与计算机学院,安徽 合肥 230036)
基于ArcGIS的农用机器人定位及路径跟踪
孟珠李, 焦俊, 朱诚, 王强, 古冉, 袁晨晨
(安徽农业大学信息与计算机学院,安徽合肥230036)
为了实时获取农用机器人在农田中的精确位置,并跟踪其运行路径,设计了基于ArcGIS的农用机器人定位及路径跟踪系统。利用3G网络实现机器人与服务器之间的通信,运用ArcGISEngine组件处理空间数据、显示机器人的运行路径,并存储机器人在运行过程中的位置信息。系统采用VisualC#.NET编程实现,实验结果证明本系统精确可靠。
ArcGISEngine;定位;路径跟踪;3G通信;VisualC#.NET
地理信息系统(Geographic Information System,简称GIS)是由计算机硬件、软件、地理数据以及系统管理人员组合而成,是对任一模式下的地理信息进行高效获取、更新、操作、存储、分析及显示的集成的计算机技术系统[1-3]。随着近30年的惊人发展,GIS在农业上的应用成为当今农业科学中一个新的重要研究领域[4]。
农业机器人是一种把农产品作为操作对象、兼有人类四肢行动功能和部分信息感知、可重复编程的半自动化或柔性自动化设备[5-7]。智能型农业机器人在广阔的农田中越来越多地替代手工劳动完成各种农业活动,农业机器人可以便捷的与计算机技术和地理信息系统相结合,科学耕种农田,规划路径防止破坏农作物。
农业机器人在农田中对农作物耕作时,需要人们实时定位监控机器人的运行路径,随时掌握农业机器人在耕作时的位置,及时反馈使管理人员科学管理机器人耕作过程以防止机器人破坏农作物。因此,需要对农业机器人的关键技术进行学习研究,处理空间数据、设计系统功能、构建相关数据库,实现空间数据的多功能操作处理及数据存储[9];并且通过农业机器人与ArcGIS信息传输技术相结合,实现农业机器人在农田中的定位监控[10]。
系统的开发方法是结合ArcGIS工具软件与可视化开发软件Visual C#.NET设计实现的。首先需要获取地图数据并使用ArcGIS工具软件处理,制成地图文档;基于ArcGIS Engine组件的开发,在Visual C#.NET中添加ArcGIS控件和ArcGIS Engine库引用,在基于Windows窗体应用程序中设计开发,实现地图图层坐标的实时显示;在此基础上添加基于C#语言的3G通信,使农业机器人定位及运行轨迹信息通过3G模块通信传输到地图图层中并用点或线标注出来。系统总体开发框架如图1所示。
图1 系统总体开发框架
系统设计思路:
1) 获取农田卫星底图,在ArcMap中开发地图,添加底图数据并编辑配准,制成农田地图文档。
2) 在基于ArcGIS Engine开发中设计windows窗体加载地图文档,添加工具控件实现对图层的放大、缩小、漫游等管理功能;设计实现在地图文档中实时显示鼠标指向图层任意位置的当前坐标。
3) 农业机器人运行后使用3G功能通信获得运行点或线位置信息,将3G功能加入地图信息项目中,实现定位点在地图图层中的标注显示。
2.1地图数据的处理
地图数据的获取及处理为基础工作,是为了在基于ArcGIS Engine开发中提供图层数据。使用地图下载软件获取地图数据,并为了使地图图层信息化,每一点的坐标都赋予了准确的经纬度,使用ArcMap软件对下载的地图数据进行图像配准。图像配准过程为:添加多个特殊点坐标、查看链接表并纠正残差、校正并保存。由于该ArcMap软件自动配置坐标系统为WGS_1984_Web_Mercator,因此能实现图像随坐标系统的配准。这样便使原本无意义的地图数据变成有意义的地图图层文档。
2.2ArcGIS Engine实现过程
1) 加载ArcGIS控件和ArcGIS Engine库引用。在Visual C#.NET中加入ArcGIS控件“AxPageLayoutControl” 、“ArcMapControl”、“AxToolbarControl”、“AxTOCControl”和“ESRI LicenseControl”,再加入相关的ArcGIS Engine库引用如“ESRI.ArcGIS.Carto”、“ESRI.ArcGIS.Display”、“ESRI.ArcGIS.Geometry”、“ESRI.ArcGIS.System”、“ESRI.ArcGIS.SystemUI”和“ESRI.ArcGIS.Utility”,实现基于.NET的ArcGIS Engine的开发,即可在.NET窗体中添加相关控件;在程序中也可加入相关引用。
2) 加载地图文档。新建Windows 窗体项目,在窗体中添加LicenseControl和AxMapControl控件,再放置一个名为“打开文件”的button控件,编写程序实现将地图数据加载到AxMapControl控件中。关键代码如下:
private void loadMapDocument()
{
openFileDialog1.Title = "打开Map 地图";
openFileDialog1.Filter = "map documents (*.mxd, *.mxt, *.pmf)|*.mxd;*.mxt;*.pmf";
openFileDialog1.ShowDialog();
}
运行调试该项目,单击“打开文件”按钮,选中要打开的地图文档,结果如图2所示。
图2 加载Map文档
3) 添加管理功能。在上述Form1窗体设计的基础上添加AxToolbarControl和AxTOCControl控件,并将“Buddy控件”设置为axMapControl1以便与地图控件图层相连接,在AxToolbarControl属性框中添加全图、添加数据、放大、缩小、漫游等管理工具。
为了使图层信息的经纬度更加清晰的呈现,在地图信息系统中加入实时显示鼠标指向的坐标信息,为下面添加农业机器人运行点或线做准备。在Form1窗体中加入label文本记录鼠标指向Map文档的当前坐标。在代码窗口中添加OnMouseMove事件的相关代码如下:
private void axMapControl1_OnMouseMove(object sender, AxESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseMoveEvent e)
{
Label1.Text = " 当前坐标 X = " + e.mapX.ToString() + " Y = " + e.mapY.ToString() + " " + this.axMapControl1.MapUnits;
}
运行调试,结果如图3所示。
图3 显示鼠标指向Map文档的当前坐标
2.3运动机器人定位
在系统基本框架建立的基础上添加运行点在地图图层中的定位显示,首先设计3G功能通信,将农业机器人运行点的经纬度以坐标形式传输,设计数据库以存储历史坐标信息;再把3G功能添加到地图信息项目中;最后使传输进项目中的坐标数据转换为点在地图图层中显示。
1) 3G功能模块加载定位坐标信息于数据库。将3G功能以C#语言编程设计,3G功能模块分为客户机和服务器,客户机即为机器人运行主机端,而服务器为监控机器人轨迹的监控终端PC机,在服务器中设置好IP地址和端口,启动服务器与客户机连接;当农用机器人运行时产生位置数据载入客户机中,通过3G网络发送到服务器监控终端中,同样,服务器也能发送理想轨迹位置数据使客户机接收,完成后期使机器人按照规定轨迹运行。
服务器窗体设计:新建Windows 窗体项目、在窗体中添加启动按钮连接客户端、放置2个richTextBox分别用于显示发送及接收到的数据 。关键代码如下:
public void AcceptMessage()
{
this.label1.Text = "与客户 " + clientSocket.RemoteEndPoint.ToString() + " 成功建立连接。";
}
private void richTextBox2_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)13)
{
richTextBox1.Text = "服务器:" + richTextBox2.Text + richTextBox1.Text;
wReader.WriteLine(richTextBox2.Text);
}
}
客户机窗体设计:新建客户机窗体项目、在窗体中添加IP及端口参数连接服务器 、放置2个richTextBox分别用于显示接收及发送的数据 。关键代码如下:
public void AcceptMessage(){
richTextBox1.Text = sTemp + " " + richTextBox1.Text;
}
private void richTextBox2_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)13)
{
richTextBox1.Text = "客户机:" + richTextBox2.Text + richTextBox1.Text;
wReader.WriteLine(richTextBox2.Text);
}
}
在完成服务器和客户机的设计后,同时运行调试,首先启动服务器,在客户机中建立与服务器的连接,连接成功后如图4所示,分别在服务器和客户机中发送数据,观察结果,服务器窗口和客户机窗口分别如图5和图6。
图4 连接成功
图5 服务器窗口
图6 客户机窗口
2) 添加数据库控件存储数据。新建图层信息数据库,建坐标信息表用于存储运动点的经纬度及编号,然后在服务器设计窗体中添加工具和代码实现发送数据到客户机相连的数据库中,在客户机中建立与数据库的连接并在设计窗体中,加入工具DataGridView用于显示存入数据库中的数据表,最后将客户机窗体加入到系统项目中,添加启动按钮。客户机设计窗体关键代码如下:
public void AcceptMessage()
{
string sql1 = string.Format(@"insert into 坐标信息 values( ‘{0}’,‘{1}’,‘{2}’)", Class1.point.ToString(), Class1.经度X.ToString(), Class1.纬度Y.ToString());
string sql2 = "select * from 坐标信息";
SqlDataAdapter sdaa = new SqlDataAdapter(sql2, conn);
sdaa.Fill(ds);
dataGridView1.DataSource = ds.Tables[0].DefaultView;
}
启动3G功能窗口,接收服务器发送的机器人运行点坐标并存储在数据库中,运行结果如图7所示。
图7 调试结果图
3) 在图层中显示运动路径。为了在图层中显示机器人运动路径,需要将机器人运动信息转化为线在图层中显示。在系统项目窗体中添加发送按钮,实现数据转化为点在图层中显示功能,再编辑按钮代码,将数据库中的数据以点在图层中显示,再编写代码新建一个图层显示传来的连续点数据。关键代码如下:
private void button4_Click(object sender, EventArgs e)
{
da.Fill(ds); //读取数据库中数据
IPoint point;
for (int i = 0; i < 7; i++)
{
point = new PointClass();
point.SpatialReference = this.axMapControl1.SpatialReference;
point.X = (Double)ds.Tables[0].Rows[i][1];
point.Y = (Double)ds.Tables[0].Rows[i][2];
point.PutCoords(point.X,point.Y);
IMap pMap = this.axMapControl1.Map;
pGraphicsContainer = pMap as IGraphicsContainer;
IActiveView pActiveView = pMap as IActiveView;
}
}
运行调试,启动客户机,点击发送按钮,发送数据到地图图层中,结果如图8所示。
图8 在图层中显示定位点
本系统设计实现了基于ArcGIS的农用机器人定位技术,运用基于ArcGIS Engine组件开发方式和3G功能通信定位监控农用机器人运行过程,通过Visual C#.NET语言编程实现了农业机器人在地图图层中运行轨迹的显示及历史数据的存储,使用户便捷清晰的查看农用机器人的运行过程并及时纠正机器人位置以防破坏农作物生长。
[1]张静. 基于救援机器人的矿井GIS技术研究[D]. 西安科技大学, 2010.
[2]池建.精通ArcGIS地理信息系统[M].北京:清华大学出版社:10-100.
[3]阎波杰.基于ArcGIS Engine地理信息系统的二次开发[D].西安科技大学, 2006.
[4]周海燕. 温室移动机器人变量施药智能检测及决策系统研究[D]. 江苏大学, 2013.
[5]焦俊, 江朝晖, 金瑞春,等. 农用机器人转向系统自适应内模控制[J]. 农业机械学报, 2011, 42(10):186-191.
[6]田素博. 国内外农业机器人的研究进展[J]. 农业机械化与电气化, 2007(2):3-5.
[7]焦俊, 操俊, 潘中,等. 基于物联网的农田环境在线监测系统[J]. 农业工程, 2014, 4(6):18-23.
[8]郑玉龙.基于机器视觉的农业机器人自定位技术研究[D].南京农业大学,2012.
[9]金理行. 基于GIS的空间数据库系统设计与实现[J]. 商业文化月刊, 2008(4):93-95.
[10]胥芳, 张立彬. 农业机器人视觉传感系统的实现与应用研究进展[J]. 农业工程学报, 2002(4):180-184.
(责任编辑:何学华,吴晓红)
Localization and Path Tracking of Agricultural Robot System Based on ArcGIS
MENG Zhu-li, JIAO Jun, ZHU Cheng, WANG Qiang,GU Ran, YUAN Chen-chen
(School of Information and Computer, Anhui Agriculture University, Hefei,Anhui 230036, China)
In order to realize a real-time acquisition of the robot's precise position in the farmland, and track its running path, the localization and path tracking of agricultural robot system based on ArcGIS was designed, in which 3G network was used to build the communication between the robot and the server, while the ArcGIS Engine component was adopted to deal with spatial data and display the running path. Meanwhile, the information of robot's position during its movement was stored. The system was achieved by means of Visual C#.NET, which proved to be precise and reliable by the experimental results.
ArcGIS Engine; Localization; path tracking;3G communication;Visual C#.NET
2015-06-19
安徽省教育厅质量工程基金项目(KJ2014A074,2014jyxm091,2014tszy090)基金
孟珠李(1993-),女,安徽蚌埠人,在读硕士,研究方向:农业信息化。
P208
A
1672-1098(2016)03-0038-05
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!