智能机器人实验二

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验二智能机器人控制技术的研究
一. 实验目的
1. 熟悉机器人控制系统的组成与与相关控制技术。

2. 熟悉轮式移动机器人运动控制系统的组成与控制方法。

3.熟悉PID控制、模糊控制与神经网络控制算法的基本原理及其在智能机器人控制中
的应用。

二. 实验基本理论
机器人与计算机相区别的一个重要特征, 就是机器人能够运动。

而运动就必须有动力
部件, 以及由这些动力部件驱动的结构。

因此, 合理选择和设计运动系统是移动机器人设计中一项基本而重要的工作。

通常, 运动系统是由移动机构和驱动系统组成的, 它们在控制系
统的控制指挥下, 完成各种移动动作。

“未来之星”机器人控制系统结构如图 6 所示。

其中, 控制系统主板是控制系统的核心。

运动控制卡和MultiFLEX 控制器又是主板上最重要的控制设备。

图 6 “未来之星”控制系统结构框图
运动控制卡主要有两方面的功能: (1)接收上位机的指令, 并将其转化为驱动器的控制指令, 控制两组驱动器和电机执行上位机要求的运动。

(2)通过IIC 总线查询陀螺仪和倾角计传感器的数据信息, 并做基本PID 运算;接收上位机的导航控制指令, 结合姿态传感器的姿态信息做相应的运算并控制两组驱动器和电机闭环执行预定的轨迹运动。

MultiFLEX 控制器是“未来之星”机器人的核心控制器, 是一个模块化的机器人控制卡。

同时, MultiFLEX 是一块公开电路图、公开源程序的控制卡。

用户可以根据这些资源, 自行为它开发针对某个特定机器人的程序, 使MultiFLEX 具有决策能力。

MultiFLEX 控制卡上
的有多种输入输出接口, 在“未来之星”上主要用于简单传感器信息的采集和处理, 舵机和电机的运动控制。

在“未来之星”的系统架构中, 最底层的运动/控制执行层包括电机伺服控制器, 舵机控制器等。

MultiFLEX 控制卡搭载在机器人的总线上, 当作一个
控制执行节点来使用。

控制执行层接受来自上层的控制指令, 处理大量高速原始数据, 并用简单的算法完成对执行器的自动控制, 以及对传感器的有效读取, 并把信息传递给上层。

MultiFLEX 控制卡的外观和卡上的接口说明如下图所示:
图 7 MultiFLEX 控制卡的外观图
卡上的各种接口说明如下:
A: 电源接口,+5-6V 电源 (J6)(1.0a 之后版本的控制卡使用同轴电源插座, 极性为内正外负)
MultiFLEX 控制卡使用5-6V 的直流电源。

至少要求5A 的电流输出能力。

B: 控制板总线接口 (J8)
MultiFLEX 控制卡支持博创科技的标准总线, 可以作为功能模块安装在博创科技的所有
机器人产品上使用。

具体使用方法请参考“MultiFLEX 控制卡数据手册”。

C: 4 路电机接口M1-M4 (J7)
4路PWM 电机驱动输出。

最大允许电流2A, 最高输出电压为供电电压。

可以支持各
种小型直流有刷电机。

D: RS-232 串口(J5)
友迅达(FriendCOMM)标准的5 针RS-232 串行口。

标准RS-232 电平。

需要在这里插
入232 通讯电缆。

E: 7 路模拟输入接口 AD0-AD6 (J2)
ADC 输入口允许输入0~5V 模拟信号, 在MultiFLEX 控制卡中可以转换为数字信号。

主要用于一些模拟电压输出的传感器信号采集。

其中靠近电路板内侧是信号输入线(对应图上字母S。

需要注意输入最低电压0V, 最大电压为MultiFLEX 控制卡的电源电压, 即5~6V), 中间是电源(5~6V, 对应图上“+”号), 外侧是地线(GND, 对应图上“-”号)
F: 12 路PWM 舵机控制 PW0~PW11(CH0~CH11)(J4)12 路舵机的控制接口被分成了四组。


是为了避免各个接口的接插件之间干涉。

舵机的引线有三根, 其中黄色是信号线(对应图上字母S, 靠近电路板内侧), 橙色是电源(5~6V, 对应图上“+”号), 棕色是地线(GND, 对应图上“-”号)
G: 16 路数字I/O IO0-IO15 (J1,J3)
16 路数字I/O 可以在UP-MRcommander 软件中被配置为输入或者输出。

如果配置为输
入, 每个I/O 口能采集加在其上的电压是高电平(1)还是低电平(0), 主要用于检测开关、按钮、红外传感器等的状态。

如果配置为输出, 每个I/O 口可以输出高低电平(高电平为电源电压, 低电平为0V), 可以用于驱动LED.微型电机等器件。

其中靠近电路板内侧是信
号输入线(对应图上字母S。

需要注意输入最低电压0V, 最大电压为MultiFLEX 控制卡的电
源电压, 即5~6V), 中间是电源(5~6V, 对应图上“+”号), 外侧是地线(GND, 对应图上“-”号)。

H: AVR 单片机在线编程接口(J6)
MultiFLEX 控制卡使用AVR ATMega128 微控制器作为处理器, 这款处理器具备在线编
程(ISP)功能。

使用ICCAVR、WINAVR 等PC 机上的C 语言编译环境交叉编译好的二进
制文件可以通过该接口下载到处理器内置的FLASH 存储器中运行。

I: 控制卡功能选择拨码开关(S1)
H的上方即是控制卡功能选择拨码开关。

拨码开关共有8 路, 每一路拨到ON 位置为接
通。

第 1.2 路接通且3.4 路断开时使用RS232 串口与PC 机的UP-MRcommander 软件通
讯;当第1, 2 路断开且3.4 路接通时, 控制卡通过标准总线与上位机连接。

我们在这
里要使用的是第二种方式, 即1.2 处于OFF 的位置, 3、4 处于ON 的位置。

第 5、6 路拨码开关用来选择通讯的波特率。

5 路为低位, 6 路为高位;拨码开关接通代表0。

波特率有以下几种:
编号: 6 5 : 对应波特率
0/1 状态 0 0 : 115200BPS
0 1 : 38400 BPS
1 0 : 19200 BPS
1 1 : 9600 BPS
第 7 路拨码开关用于选择开机状态。

当为ON时开机自动执行控制卡中上次保存的指令, 当为OFF 时待机, 等待控制命令。

第 8 路暂时保留未用, 为以后扩展功能使用。

在出厂时, 拨码开关的默认值是:使用标准总线与上位机连接, 波特率19200BPS。

MultiFLEX 控制卡的主要数据如下表所示:
项目数据说明
型号 MultiFLEX 1.0
长/宽/高 105/50/19mm 不含20pin 总线接口
供电 4.8~6.5VDC 推荐4.8~6V。

电压超过6.5V 可能损坏!
保护过流保护
反接保护
长时间电源反接仍可能损坏。

过流保护生效后, 需重新上电才能工作
静态功耗 0.3W
保护电流 6~8A 超过此电流后, 自动切断。

约10 秒后才能再次工作。

I/O 电平低电平 < GND + 1.5V
高电平 > VCC – 1.5V
数字通讯接口 RS-232 接口 TX, RX, GND 三线制
数字量输入/输出 16 个, 复用 GND/VCC/SIG 三线制(SIG 可以为输入或
输出, 在UP-MRcommander 软件中配置)
模拟量输入 8个(其中一个已经内部使用) GND/VCC/SIG 三线制(SIG 为信号输入)
功率输出 4个 M+, M- 两线制, 最大每通道2A
舵机输出 12个 GND/VCC/SIG 三线制(SIG 为信号输出)
扩展接口 20线总线接口博创科技标准的总线接口。

可以通过该总线接口扩展其他外设。

JTAG 功能不支持
ISP 功能支持 GND/RST/MOSI/MISO/SCK 五线, 配套提供ISP 编程电缆
无线通讯支持可选配无线通讯模块, 433MHz, 19.2KBps
三. 实验平台
1.系统结构
实验系统仍然采用博创公司的“未来之星”移动机器人平台。

依据各主要功能模块的分层布置, “未来之星”机器人的内部组装结构从下往上依次如图 8(a)-
(d)所示。

图 8 “未来之星”机器人各主要功能模块的分层布置
运动层主要是能源和驱动部分。

基础控制层安装基本控制电路, 主要有主板、MultiFLEX 控制卡、运动控制卡、通讯板和接口。

高级控制层上有LCD 及键盘模块、嵌入式PC 系统、液晶屏模组、光敏温敏传感器等电路板。

各层之间通过立柱互相固定。

头部安装有摄像头和激光笔。

激光笔主要用来和摄像头配合使用, 进行简单的图像激光测距。

2.“未来之星”机器人控制系统
硬件部分
控制系统是机器人的核心, 是机器人顺利完成各项任务的基本保证。

“未来之星”机器人的控制主要涉及到头部控制、手臂控制和运动控制。

头部的控制主要通过
一个旋转舵机来实现头部转动。

手臂控制包括肩关节、肘关节、腕关节
和指关节, 左右手臂各具有5 个自由度。

在运动控制部分, “未来之星”
采用两轮驱动, 两个直流伺服驱动器对两个直流伺服电机进行闭环控制,
能够比较精确的控制机器的运动轨迹。

结合带陀螺仪和倾角计导航的运
动控制卡, 机器人可以实现精确的运动控制, 有效地锁定航向、自动补
偿和纠正因外力造成的运动偏差。

在演示软件FStar 2.2.1 的基本控制
页面(如), 我们可以看到上述三个部位的运动控制功能演示。

有关电
机方面的具体控制, 在此不在赘述, 请查阅相关资料。

图9 FStar 2.2.1 软件系统的基本控制页面
软件部分
通过实验一已经了解到“未来之星”机器人的FStar 软件平台。

从软件系统的层次
架构中, 我们主要通过发送命令、解析命令到行为执行来实现对机器人的控制。

因此, 我们必须熟悉各硬件设备与主机的通讯协议以及在软件平台上的行为控制接口函数。

其中几个重要的接口控制函数, 列举如下:
SetBothMotorsSpeed 功能: 同时发送左右两侧电机速度
参数:
Inleftspeed: int 类型, 左侧电机速度
Inrightspeed: int 类型, 右侧电机速度
SetLMotorSpeed 功能: 发送左侧电机速度
参数:
Inleftspeed: int 类型, 左侧电机速度
SetRMotorSpeed 功能: 发送右侧电机速度
参数:
Inrightspeed: int 类型, 右侧电机速度
Brake 功能: 刹车
参数:无
SetPIDpara 功能: 设置锁定航向PID 参数
参数:
pid1: UCHAR 类型, 比例系数
pid2: UCHAR 类型, 积分系数
pid3:UCHAR 类型, 微分系数
TurnLByGyro 功能: 左转(基于陀螺)
参数:
inangle: int 类型, 要转动的角度(真实角度的10 倍)
inSpeed:UCHAR 类型, 转动的速度(真实速度的1/100)
LockDirection 功能: 锁定航向
参数:
cmd: UCHAR 类型, 命令标志
speed:UCHAR 类型, 速度(实际速度的1/100)
SetServeMotor 功能: 设置伺服电机
参数:
inSpeed: int 类型, 伺服电机速度
ResetServe 功能: 所有舵机复位
参数:无
SendArmData 功能: 控制机械臂运动
参数:
angle: UCHAR 数组类型, 机械臂舵机角度值
speed:UCHAR 数组类型, 机械臂舵机转动时速度值
WaveHead 功能: 头部转动控制
参数:
angle: int 类型, 要转过的角度
speed:UCHAR 类型, 转动的速度
四、实验内容
在程序的对话框中添加按钮控件基本控制“前进, 后退, 左转, 右转, 圆形”分别命名,接着为其添加类向导函数
void CFstarTestDlg::OnForward()
{
// TODO: Add your control notification handler code here m_Cmd.SetBothMotorsSpeed(200,200); //前进}
void CFstarTestDlg::OnTurnleft()
{
// TODO: Add your control notification handler code here
m_Cmd.SetBothMotorsSpeed(-100,100); //左转
}
void CFstarTestDlg::OnTurnright()
{
// TODO: Add your control notification handler code here
m_Cmd.SetBothMotorsSpeed(100,-100); //右转
}
void CFstarTestDlg::OnBackward()
{
// TODO: Add your control notification handler code here
m_Cmd.SetBothMotorsSpeed(-200,-200); //后退
}
void CFstarTestDlg::OnBrake()
{
// TODO: Add your control notification handler code here
m_Cmd.Brake(1); //停止
}
,2, 圆形实现程序:
void CFstarTestDlg::OnYx()
{
// TODO: Add your control notification handler code here
//clock_t start,finish;
//clock_t start,finish;
// TODO: Add your control notification handler code here
//m_Cmd.SetBothMotorsSpeed(200,350);
//start=clock();
// while(1){
m_Cmd.SetBothMotorsSpeed(200,350);
}
并在函数中添加如下控制策略
// TODO: Add your control notification handler code here
m_Command=7;
m_sender.Send(&m_Command,1);
}
至此,本实验已完成。

五. 实验心得
通过这次实验使我对“未来之星”机器人的软硬件系统架构、FStar软件开发平台更加熟悉与了解。

熟悉轮式移动机器人运动控制系统的组成与控制方法, 对轮式移动机器人有了更深的认识。

在C++的编程与设计有了提高, 通过以太网可以远程控制“未来之星”机器人, 并通过编程可以做到一些动作, 完成对机器人路径的控制。

相关文档
最新文档