1. 引言
机器人是指在计算机程序控制下能够自动完成人类部分工作的机器。集中了机械工程、电子学、控制理论、计算机、系统工程、仿生学等多个学科 [1] - [8] 知识,目前是人工智能研究中比较活跃的研究领域,很多青少年希望能亲手设计制作机器人。机器人可以采用单片机控制,通过视觉传感器获取环境的信息,然后由存放在单片机中事先编写好的程序,智能地对这些信息进行分析、处理、控制机器人的动作,能够随着环境参数的变化而改变机器人的行为。机器人小车是一个人工智能的典型问题。本文工作是制作机器人小车,使其在计算机程序 [9] [10] [11] 控制下能够自动完成行走和图像采集的任务。
2. 机器人小车图像采集系统硬件设计
本文的机器人小车单片机主控芯片采用意法半导体公司基于Cortex-M3内核的微控制芯片,最高工作频率为72 MHz,内置高速存储器(高达128 K字节的闪存和20 K字节的SRAM),增强I/O端口和联结到两条APB,总线的外设;驱动器采用L298H桥控制电机旋转,四路TIM口控制电机正反转;因为机器人小车是运动的,根据实际采集需要,在本系统中选用变焦摄像头相机;图像的采集是由摄像头和图像采集卡合作完成,采集卡采用外置USB采集卡,可采集1路标清彩色视频信号;通信模块一路USART串口使用Simple WiFi模块与电脑通信,通信使用TTL电平;输入端接光电距离传感器,该光电传感器测量范围为5~100 cm,用来检测云台小车前后有无障碍物,防止机器人小车受到损坏;单片机供电使用AMS1117系列芯片,它的输出电压为3.267-3.333V;机器人小车还预留了两路高性能I/O口,为小车的后续开发和完善提供接口。
3. 机器人小车图像采集系统软件设计
3.1. 机器人小车图像采集软件流程
根据功能设计的需要,在硬件基础上设计软件,软件分为二部分,图像采集和机器人小车的运动控制。图像采集流程图设计如图1所示。程序具体步骤如下:
1) 网络连接程序:连接到指定ip地址的主机,与主机连接成功,与主机的连接已断开;
2) 走行控制程序:右转按钮,后退按钮,左转按钮,舵机前转按钮,舵机后转按钮,前进按钮;
3) 采集卡初始化部分程序;打开视频设备文件,设置视频设备的数据通道、视频数据传输的模式和要捕捉的图片大小。
4) 视频控制程序:开始录制视频,停止录制视频,截图。
3.2. 机器人小车运动程序
机器人小车的运动控制程序设计将系统在逻辑上划分为客户端与上位机两个部分,系统功能框架如图2所示。
3.3. 系统功能界面
PC客户端软件设计,是为了和上位机进行通讯。基于采集卡的官方SDK和Socket通信协议编写,实现通过无线网络控制小车并接收小车传回图像的功能。图3是设计的PC客户端控制界面,可以在PC
![](//html.hanspub.org/file/4-1540713x9_hanspub.png)
Figure 1. Flow chart of image collecting for robot car
图1. 机器人小车图像采集流程图
![](//html.hanspub.org/file/4-1540713x10_hanspub.png)
Figure 2. Flow chart of motion for robot car
图2. 机器人小车运动流程图
上实现机器人小车的方向控制、舵机控制和图像采集。
3.4. 部分设计代码
3.4.1. 图像采集代码(节选)
private void btnStartRecord_Click(object sender, EventArgs e) {
//m_hCapDev = m_pMainForm.m_hCapDev;
btnStartRecord.Enabled = false;
btnStopRecord.Enabled = true;
//m_bSupportGPU1 = m_checkGPU1.Checked;
= picDestination.Text + \\0 +DateTime.Now.Minute.ToString()+0+ DateTime.Now.Second.ToString() + .BMP
EXPORTS.QCAP_SNAPSHOT_BMP(m_hCapDev, ref strBmpName);
}
}
3.4.2. 机器人小车运控制代码(节选)如下
private void button7_Click(object sender, EventArgs e) {
try
{
string msg = q
Byte[] bya = System.Text.Encoding.Default.GetBytes(msg.ToCharArray());
sock.Send(bya, bya.Length, SocketFlags.None);
}
catch
{
MessageBox.Show(连接尚未建立,无法发送);
}
}
通过以上设计,实现了机器人小车的遥控运动,当机器人小车运行到指定位置时,通过无线传输将遥控摄像头旋转的信号传输到机器人小车上,舵盘与机器人固定,舵机体旋转,带动摄像头旋转,进行图像拍摄。在实际应用中经过试验,达到了预期要求,实时采集和传输了图像到笔记本电脑,今后可以在此基础上进行分析处理。
4. 结语
利用机器人小车硬件设计基础,借助C++编程,实现了对机器人小车的运动控制和图像采集,实现了机器人小车的相应功能,完成了机器人小车的控制任务,为青少年、教师运用机器人小车系统进行科技创新提供了有益的尝试。