■Include"pxpDUg.h"*
alKlvde"5is1.b,s
■If4・*_B€9HG
■dFFinr~ni¥HDEBUE_l«tf
■Uihde#INIIS._F1LE
«t4tlEChjr-THIS_FILE[)■_FllLl_J■endif
"""""""""""""""""""""""""""""""""""""//CAbomt-BllgilldilsiglibrdFurAppftlillul
cla^sCAEKJUtOl^:
puHiltCDl.il(
public;
EMiMitlOiljgC};
//IHM阿OdU
虿小、r剛':
、i^r-ic-tin.ics:
薇图2.1程序头文件截图
蚆
广w«irti糊
广WJ?
2广ttife
广劇朗r机戯
r捷頗I式广rwBtfiTt
谢iii底UTi~IB曲
曲te3[HTL簾
广工向广负向
r广顾
蝿图22程序可视化界面截图
羈
肄五、
羃1.
实验分析与总结
实验过程总结
蝿在实验中,我们通过调用机器人动态链接库函数实现对机器人的控制。
通过实验,我们有如下几点收获:
1.
2.荿我们从函数形式中可以看出控制机器人需要提供给机器人一些参数(运动轴号、目标位置、运动速度、运动模式和启动方式);
3.
4.袆手部的控制函数与其他轴的控制函数不同,可见手部控制器是一个独立的部件;
5.
6.螂只有当机器人的速度、目标位置控制在一个合适的范围内时、机器人的运动才能稳定。
7.
8.衿不同的运动模式下,机器人方式有所不同。
蒆2.实验问题分析
芃实验中遇到的最大问题是程序与机器人的链接问题,通过调用动态链接库最终能够实现机器人的链接。
薀由于我们不熟悉VC++语言,在编写程序时遇到了很多困难,但实际上,通过查找相关资料以及查看错误说明能够很好地解决问题。
罿
六、七、袆机器人链接库编程实验程序
羅见附页
薃
聿
芇
蒃
莂
西安交通大学实验报告
芈专业班号
机械41
组别
第一组交报告日期:
年月日
聿姓
名
陈豪
学号
03报告退发:
(订正、重做)
薃姓
名
_I_L.
尹鑫鑫
学号
23教师审批签字:
膄姓
名
武文家
学号
20
第页(共页)
芆机器人示教与离线编程实验总结
、
、莅机器人示教与离线编程的对比
羃表1机器人示教与离线编程的对比
莈项目
蚇示教
肇离线编程
蚂编程门槛
蝿低
荿咼
祎机器人占用
螂占用
衿不占用
螀事故
薈示教过程中易碰撞
螅不易碰撞
罿精度
袇靠人控制,精度低
羅精度咼
薄应用范围
聿针对特定机器人
芇可控制大部分机器人
蚇直观程度
莂咼
莃低
膅二、实验体会
莅陈豪:
蒃通过本次实验,我们了解了机器人的控制系统的组成。
在实验中,我们进一步认识了示
教的作用,对机器人控制有了进一步的理解。
并在实验中复习了方VC+■程序的编写、有关机器人示教和离线编程的相关知识、并对实验系统进行了分析。
对机器人理论的相关知识有了更深入的理解。
~T~|.
聿尹鑫鑫:
袇武文家:
通过此次试验,我们亲自操作完成了六自由度机器人的示教,对六自由度机
器人机构和运转有了更深入的认知。
在编程控制实验中,我们又回顾了VC++的编写与应用,真正的把学到的知识用到了实践中去,对机器人的控制编程更加熟悉,也增加了对机器人开发的兴趣
四、蚂实验分工
螂表2实验分工
肇组员
蒅陈豪
螅尹鑫鑫
袂武文豕
葿学号
芇03
蒄23
羂20
袀实验前期
蚄实验预习,阅读实验指导书,了解实验步骤
芃实验过程
羂实验分析、程序编写
羆实验操作、分析
莆数据记录、控制调试
肁实验结束
肂实验原理、实验结果分析讨论
莇报告撰写
袄理论部分
肄分析部分
膂总结部分
螆
蚅
蒁
螇
蒈
莄
薁
膈西安交通大学实验报告附页
袆
膃机器人离线编程程序
薁〃expDIg.cpp:
implementationfile
蕿〃
w#include"StdAfx.h"
羂#“elude"exp.h"
蚁#“elude"expDIg.h"
羀#“elude"s6s1.h"
肅#ifdefDEBUG
^#definenewDEBUG_NEW
螁#undefTHIS_FILE
肆staticcharTHIS_FILE[]=__FILE__;
«#endif
螃
袁
蒇
/////////////////////////////////////////////////////////////////////////////
芅//CAboutDlgdialogusedforAppAbout
薂
羁
袈classCAboutDlg:
publicCDialog
羇{
薅public:
肀CAboutDlg();
艿
蒅//DialogData
莄//{{AFX_DATA(CAboutDlg)
膀enum{IDD=IDD_ABOUTBOX};
蚀//}}AFX_DATA
膇
肃//ClassWizardgeneratedvirtualfunctionoverrides
膀//{{AFX_VIRTUAL(CAboutDlg)
袇protected:
薅virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupport
袂//}}AFX_VIRTUAL
芀
芈//Implementation
芆protected:
袅//{{AFX_MSG(CAboutDlg)
莀//}}AFX_MSG
虿DECLARE_MESSAGE_MAP()
螄};
蚃
蒀CAboutDlg:
:
CAboutDlg():
CDialog(CAboutDlg:
:
IDD)
聿{
蒆//{{AFX_DATA_INIT(CAboutDlg)
蒂//}}AFX_DATA_INIT
薀}
蒀
羄voidCAboutDlg:
:
DoDataExchange(CDataExchange*pDX)
蒅{
蚀CDialog:
:
DoDataExchange(pDX);
薇//{{AFX_DATA_MAP(CAboutDlg)
蚆//}}AFX_DATA_MAP
芄}
蝿
羈BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)
莈//{{AFX_MSG_MAP(CAboutDlg)
羃//Nomessagehandlers
蝿//}}AFX_MSG_MAP
荿END_MESSAGE_MAP()
袆
螂
/////////////////////////////////////////////////////////////////////////////
衿//CExpDlgdialog
螀
薈CExpDlg:
:
CExpDlg(CWnd*pParent/*=NULL*/)
螅:
CDialog(CExpDlg:
:
IDD,pParent)
罿{
袇//{{AFX_DATA_INIT(CExpDlg)
羅m_axis=0;
薄m_runmod=0;
聿m_trans=30.0;
芇m_fh=10.0;
蚇m_dir=0;
莂m_acc=0;
莃m_hand=FALSE;
蚈m_str=_T("");
膅//}}AFX_DATA_INIT
莅//NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32
蒃m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);
聿}
袇
膄voidCExpDlg:
:
DoDataExchange(CDataExchange*pDX)
薃{
蒀CDialog:
:
DoDataExchange(pDX);
莅//{{AFX_DATA_MAP(CExpDlg)
羃DDX_Radio(pDX,IDC_XMOTOR,m_axis);
蚂DDX_Radio(pDX,IDC_SPEED,m_runmod);
蚇DDX_Text(pDX,IDC_TRANS,m_trans);
肇DDX_Text(pDX,IDC_FH,m_fh);
蚂DDX_Radio(pDX,IDC_PDIR,m_dir);
螂DDX_Radio(pDX,IDC_RADIO11,m_acc);
肈DDX_Check(pDX,IDC_CHECK_HAND,m_hand);
蒅DDX_Text(pDX,IDC_EDIT1,m_str);
螅//}}AFX_DATA_MAP
芇BEGIN_MESSAGE_MAP(CExpDlg,CDialog)
蒄//{{AFX_MSG_MAP(CExpDlg)
羂ON_WM_SYSCOMMAND()
袀ON_WM_PAINT()
蚄ON_WM_QUERYDRAGICON()
芃ON_BN_CLICKED(IDC_TRANS_START,OnTransStart)
羂ON_BN_CLICKED(IDC_SUDDEN_STOP,OnSuddenStop)
羆ON_BN_CLICKED(IDC_XMOTOR,OnXmotor)
莆ON_BN_CLICKED(IDC_YMOTOR,OnYmotor)
肁ON_BN_CLICKED(IDC_ZMOTOR,OnZmotor)
肂ON_BN_CLICKED(IDC_UMOTOR,OnUmotor)
莇ON_BN_CLICKED(IDC_VMOTOR,OnVmotor)
袄ON_BN_CLICKED(IDC_WMOTOR,OnWmotor)
肄ON_BN_CLICKED(IDC_SPEED,OnSpeed)
膂ON_BN_CLICKED(IDC_POSITION,OnPosition)
螈ON_BN_CLICKED(IDC_PDIR,OnPdir)
薆ON_BN_CLICKED(IDC_NDIR,OnNdir)
袃ON_BN_CLICKED(IDC_RADIO11,OnRadio11)
节ON_BN_CLICKED(IDC_RADIO12,OnRadio12)
腿ON_EN_CHANGE(IDC_FH,OnChangeFh)
羄ON_EN_CHANGE(IDC_TRANS,OnChangeTrans)
薂ON_BN_CLICKED(IDC_CHECK_HAND,OnCheckHand)
莁//}}AFX_MSG_MAP
薀END_MESSAGE_MAP()
螆
蚅
/////////////////////////////////////////////////////////////////////////////
蒁//CExpDlgmessagehandlers
螇
蒈BOOLCExpDlg:
:
OnInitDialog()
莄{
薁CDialog:
:
OnInitDialog();
膈
袆//Add"About..."menuitemtosystemmenu.
膃
薁//IDM_ABOUTBOXmustbeinthesystemcommandrange.
蕿ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);
蚈ASSERT(IDM_ABOUTBOX<0xF000);
羂
蚁CMenu*pSysMenu=GetSystemMenu(FALSE);
羀if(pSysMenu!
=NULL)
肅{
羄CStringstrAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
肆if(!
strAboutMenu.IsEmpty())
螇{
螃pSysMenu->AppendMenu(MF_SEPARATOR);
袁pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);
蒇}
芅}
薂
羁//Settheiconforthisdialog.Theframeworkdoesthisautomatically
袈//whentheapplication'smainwindowisnotadialog
羇SetIcon(m_hIcon,TRUE);//Setbigicon
薅SetIcon(m_hIcon,FALSE);//Setsmallicon
肀
艿//TODO:
Addextrainitializationhere
蒅s6s1_set_critical(NULL);
莄s6s1_init(1,NULL,true);
膀s6s1_select
(1);
蚀
膇returnTRUE;//returnTRUEunlessyousetthefocustoacontrol
肃}
膀
袇voidCExpDlg:
:
OnSysCommand(UINTnID,LPARAMlParam)
薅{
袂if((nID&0xFFF0)==IDM_ABOUTBOX)
芀
{
芈
CAboutDlgdlgAbout;
芆
dlgAbout.DoModal();
袅
}
莀
else
虿
{
螄
CDialog:
:
OnSysCommand(nID,lParam);
蚃
}
蒀}
聿
蒆//Ifyouaddaminimizebuttontoyourdialog,youwillneedthecodebelow蒂//todrawtheicon.ForMFCapplicationsusingthedocument/viewmodel,薀//thisisautomaticallydoneforyoubytheframework.
蒀
羄voidCExpDlg:
:
OnPaint()
蚀
if(IsIconic())
薇
{
蚆
CPaintDCdc(this);//devicecontextforpainting
芄
SendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(),0);
莈//Centericoninclientrectangle
羃intcxIcon=GetSystemMetrics(SM_CXICON);
蝿intcyIcon=GetSystemMetrics(SM_CYICON);
荿CRectrect;
袆GetClientRect(&rect);
螂intx=(rect.Width()-cxIcon+1)/2;
衿inty=(rect.Height()-cyIcon+1)/2;
螀
薈//Drawtheicon
螅dc.DrawIcon(x,y,m_hIcon);
罿}
袇else
羅{
薄CDialog:
:
OnPaint();
聿}
芇}
蚇
莂//Thesystemcallsthistoobtainthecursortodisplaywhiletheuserdrags莃//theminimizedwindow.
蚈HCURSORCExpDlg:
:
OnQueryDragIcon()
膅{莅return(HCURSOR)m_hIcon;
蒃}
聿
袇voidCExpDlg:
:
OnTransStart()
膄{
薃//TODO:
Addyourcontrolnotificationhandlercodehere
蒀if(!
UpdateData(true))return;
莅if(m_fh<0)m_fh=-1*m_fh;
羃if(m_dir==1)
蚂m_fh=m_fh*(-