北航惯性导航综合实验四实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于运动规划的惯性导航系统动态实验
二零一三年六月十日
实验4.1 惯性导航系统运动轨迹规划与设计实验
一、实验目的
为进行动态下简化惯性导航算法的实验研究,进行路径和运动状态规划,以验证不同运动状态下惯导系统的性能。通过实验掌握步进电机控制方法,并产生不同运动路径和运动状态。
二、实验内容
学习利用6045B 控制板对步进电机进行控制的方法,并控制电机使运动滑轨产生定长运动和不同加速度下的定长运动。
三、实验系统组成
USB_PCL6045B 控制板(评估板)、运动滑轨和控制计算机组成。
四、实验原理
IMU安装误差系数的计算方法
USB_PCL6045B 控制板采用了USB 串行总线接口通信方式,不必拆卸计算机箱就可以在台式机或笔记本电脑上进行运动控制芯片PCL6045B 的学习和评估。
USB_PCL6045B 评估板采用USB 串行总线方式实现评估板同计算机的数据交换,由评估板的FIFO 控制回路完成步进电机以及伺服电机的高速脉冲控制,任意 2 轴的圆弧插补,2-4 轴的直线插补等运动控制功能。USB_PCL6045B 评估板上配置了全部PCL6045B 芯片的外部信号接口和增量编码器信号输入接口。由
USB_PCL6045B 评估测试软件可以进行PCL6045B 芯片的主要功能的评估测试。
图4-1-1USB_PCL6045B 评估板原理框图
如图4-1-1 所示,CN11 接口主要用于外部电源连接,可以选择DC5V 单一电源或DC5V/24V 电源。CN12 接口是USB 信号接口,用于USB_PCL6045B 评估板同计算机的数据交换。
USB_PCL6045B 评估板已经完成对PCL6045B 芯片的底层程序开发和硬件资源与端口的驱动,并封装成156 个API 接口函数。用户可直接在VC 环境下利用API 接口函数进行编程。
五、实验内容
1、操作步骤
1)检查电机驱动电源(24V)
2)检查USB_PCL6045B 控制板与上位机及电机驱动器间的连接电缆
3)启动USB_PCL6045B 控制板评估测试系统检查系统是否正常工作。
4)运行编写的定长运动程序,并比较实际位移与设定位移。
5)修改程序设定不同运动长度,并重复执行步骤4)。
6)对记录实验数据,并进行误差分析。
2、实验数据处理
基于VC的控制界面:
本次实验必须先设计控制系统的上位机,通过上位机的串口向下位机发送控制命令,下位机接收到命令后,产生PWM波,控制电机的正反转以此达到控制导轨运动的目的。系统的控制界面如图1所示:
图1 系统的控制界面
控制导轨运动,运动采取正向运动,再返回,即IMU的实际运行位移为零。并保存数据
控制界面的应用程序
源程序仅写出VC中按钮的响应程序:
void CAaaDlg::Online() ////定长运动
{
// TODO: Add your control notification handler code here
USB_initial();
USB_default_set();
USB_set_org_logic(AXS_AX,0);//原点开关的逻辑, 负逻辑
USB_set_el_logic(AXS_AX,0);//硬极限输入逻辑,低电平使能
USB_set_sd_logic(AXS_AX,0);//减速开关的输入逻辑,负逻辑
USB_set_alm_logic(AXS_AX, 1);//报警输入信号逻辑
USB_set_inp_logic(AXS_AX,1);//in的输入信号逻辑
USB_ez_logic(AXS_AX,0);//Z相的输入逻辑
USB_set_pls_outmode(AXS_AX,1);
USB_set_out_enable(AXS_AX,1);//脉冲输出使能
// USB_jog_continue(AXS_AX,150,20000,20,20,20,20,1,30000);
USB_start_tr_move(AXS_AX, m_dist, 0, m_inspeed, 5000, 5000); // USB_tv_move(AXS_AX, 150, 2000, 3000);
/* USB_v_change(AXS_AX, 5000, 5000);
while(1)
{
USB_get_speed(AXS_AX, &m_speed);
UpdateData(FALSE);
MSG msg;
while(PeekMessage(&msg,0,0,100,PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
Sleep(100);
}
*/
}
void CAaaDlg::OnButton1() //////停止运动
{
// TODO: Add your control notification handler code here
USB_sd_stop(AXS_AX);
}
void CAaaDlg::OnGetSpeed() //////获得速度
{
// TODO: Add your control notification handler code here
USB_get_speed(AXS_AX, &m_speed);
UpdateData(FALSE);
}
void CAaaDlg::OnButton3() ///OK 按钮程序
{