您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 薪酬管理 > FRC极限抛射程序使用说明
1一、FRCDriverStation场控使用说明:1、双击FRCDriverStation打开场控软件。场控启动后会同时打开两个界面,一个为FRCDriverStation,用来自己控制机器人。另一个为FRCPCDashboard,为操作状态的仪表盘,用来显示一些状态,比如你机器人使用了摄像头,图像回传到电脑就是在这里显示的。2、FRCDriverStation左侧有五个按钮,其中第一个是我们最常使用的。TeleOperated为手动模式,是我们最常使用的,Autonomous为自动模式,如果你不能确定你的自动程序是什么,请不要轻易使用,以免机器人失控出现事故,Practice为练习模式,Test为测试模2式。Enable为这四种模式的开始启动按钮,isable为这四种模式的关闭按钮。建议使用场控时,鼠标要尽量时刻放在关闭按钮上,以防止机器人失控时及时关闭。还能够查看运行的时间,电池电量以及CPU的使用情况。队伍属于红蓝哪个队伍。3、左侧第二个按钮,可以显示当前本机场控的连接方式,重启roboRio和代码。通常不会使用,所以不详细介绍。4、左侧第三个按钮,可以设置此本机场控所控制的机器人队伍编号,这里一定要根据实际情况进行设置,否则不能操控你的机器人。其他选项可以设置仪表盘的类型通常缺省设置就可以。场控的版本设置,在比赛时候要根据组委会要求的版本进行设置,平时操控机器人时不必设置。右侧可以设置练习时,自动阶段等比赛时间。35、左侧第四个按钮,用来调整USB接口。通常电脑上接第一个摇杆时会默认为0,第二个会识别为1,依次类推。如果识别过一次,以后再接时,通常会根据手柄摇杆类型自动识别到对应的端口上。需要注意的是,此处摇杆及手柄的端口号,必须与程序中一致,才可以控制。为避免使用时,由于插拔或自动识别的先后顺序而导致的接口与程序中书写的不一致从而造成手柄失灵。可通过此面板用鼠标拖拽手柄到正确的端口号上,而不用更改程序代码。6、左侧最后一个按钮,通常不会用到大家自行体会下即可。7、中间面板显示了当前操控机器人的队伍编号。Communications\RobotCode\Joysticks三个指示灯分别代表着场控与机器人的连接状态,机器人中是否有代码,摇杆是否连接。红色代表非正常状态,如果上述三项都正常,则为绿色。7、最右侧面板,为系统的日志,通常使用中如出现异常会在此处显示相应的信息说明,请自行体会。二、编程软件Eclipse的使用说明:1、双击Eclipse软件图标,启动软件2、选择菜单栏上,File-New-Project4在弹出的NewProject对话框中选择WPLibRobotC++Project中的ExampleRobotC++Project,单击Next在弹出的对话框中选择GettingStartedwithC++中的GettingStarted,单击Next。在ProjectName中,修改项目名称(GettingStarted)5为自己定义的英文名称,这里最好不要起中文项目名称,例如MyRobot。单击Finish按钮,完成项目创建。3、在左侧项目管理窗口中,选择刚刚新建的项目MyRobot(上面刚起的名字),双击点击src文件夹,找到Robot.cpp,双击打开。看到右侧窗口中为初始化实例代码。按住Ctrl+A,全选。Delete删除所有代码,将我提供的代码全选(Ctrl+A)复制(Ctrl+C)粘贴(Ctrl+V)进去。4、选择菜单栏上的Window-Preferences在弹出的对话框中选择最后一项WPILibPreferences,在右侧TeamNumber中输入队伍编号,例如5601,在ToolsVersion中选择sfx-2014.11.01通常就这一个版本可供选择。单击OK6。5、选择左侧刚新建的项目名称MyRobot,右键单击鼠标,选择BuildProject,对代码进行编译形成计算机可以识别的可执行文件。此过程中如果代码存在错误,下方会有提示,更正你的代码后,重复执行编译操作,直到成功。6、编译成功的程序可上传到RobRio中,前提是要保证电脑、路由、场控三者之间建立无线连接状态正常。上传程序步骤如下:选择左侧刚新建的项目名称MyRobot,右键单击鼠标,选择RunAs-27WPILibC++Deploy。等待上传完成,上传过程中如果场控开启,会开到场控的代码指示灯会变红一下,说明正在复制新代码。代码复制成功后场控的代码指示灯会变回绿色,说明代码已经传到你的机器人核心里去了。同时,Eclipse也能看到提示是否代码上传成功。三、FRC极限抛射程序中端口及按键的使用说明:1、万向轮PWM信号接口:左前轮2、左后轮3、右前轮1、右后轮02、操纵杆USB接口:摇杆使用端口0、手柄使用端口23、按键使用:气动使用5、6、7按键发射电机启动停止使用1、4按键(暂时未使用)装弹使用8按键4、限位开关DIO接口:05、发射电机PWM信号接口:4,6端口,插一个即可,颠倒4、6可变更电机转向6、装弹电机PWM信号接口:7,8端口,插一个即可,颠倒7、8可变更电机转向7、气动装置接口:0,1,2,如果接两个可以试验0,1或0,2四、抛射示例代码:代码中已经全部用中文做了注释说明,读者可根据机器人实际情况进行适当编辑修改。直接复制使用时,需注意复制粘贴过程可能出现格式变化,从而造成不符合C++语法,如果编译过程中出现错误,请自行调整。#includeWPILib.h/***此程序描述了如何使用万向轮控制机器人.*/classRobot:publicSampleRobot{//万向轮端口conststaticintfrontLeftChannel=2;conststaticintrearLeftChannel=3;conststaticintfrontRightChannel=1;conststaticintrearRightChannel=0;//摇杆端口8conststaticintjoystickChannel=0;conststaticintjoystickChannel1=1;//定义一个机器驱动对象及摇杆对象,用于控制机器人行驶方向RobotDriverobotDrive;//万向轮的四个电机使用的对象Joystickstick;//操控万向轮的摇杆//定义第二个机器驱动对象及手柄对象,用于控制发射电机及气动装弹装置RobotDriverobotDrive1;//此对象为发射电机Joystickstick1;//操控发射及装弹、气动的手柄RobotDriverobotDrive2;//此对象为装弹电机//更新周期为5毫秒constdoublekUpdatePeriod=0.005;//用于控制气动装置的按钮编号constintkSolenoidButton=5;//气动复位装弹装置constintkDoubleSolenoidForward=7;constintkDoubleSolenoidReverse=6;//气动推动装弹//constintstart=1;//发射电机装置转动//constintclose=4;//发射电机装置停止constintshot=8;//装弹装置按键Solenoidm_solenoid;//定义一个气动装置对象//创建一个对象,对应双向电磁阀DoubleSolenoidm_doubleSolenoid;DigitalInputlimitSwitch;//定义一个限位开关对象boolPosition;//定义一个布尔型变量用来接收限位开关的信号intx;inty;public:Robot():robotDrive(frontLeftChannel,rearLeftChannel,frontRightChannel,rearRightChannel),//必须与上面声明的一致stick(joystickChannel),robotDrive1(4,6),stick1(joystickChannel1),robotDrive2(7,8),m_solenoid(0),//气动装置用0信道m_doubleSolenoid(1,2),//双向电磁阀用1和2控制前后limitSwitch(0),//初始化限位开关端口DIO口x(1),y(1){robotDrive.SetExpiration(0.1);9robotDrive.SetInvertedMotor(RobotDrive::kFrontLeftMotor,true);//转换左边的发动机robotDrive.SetInvertedMotor(RobotDrive::kRearLeftMotor,true);//你可能需要更改或删除此部分去匹配你的机器人装置}/***RunsthemotorswithMecanumdrive.*/voidOperatorControl(){robotDrive.SetSafetyEnabled(false);//电机的安全控制while(IsOperatorControl()&&IsEnabled()){robotDrive1.Drive(-1,0);//旋转发射装置,速度由地一个参数控制,正负可调节转向//用摇杆的X轴控制横向运动,Y轴控制前后运动,Z轴控制旋转//此实例中不使用面向领域的驱动器,所以该陀螺仪输入为0robotDrive.MecanumDrive_Cartesian(stick.GetX(),stick.GetY(),stick.GetZ());Wait(kUpdatePeriod);//等候5毫秒以避免占用CPU周期/*发射装置控制,注销掉暂时调整为一直处于待发射状态if(stick1.GetRawButton(start)&&stick1.GetRawButton(close))//当发射启动按键和停止按键同时被按下时则发射电机停止,已做保护{robotDrive1.Drive(0,0);//速度及电机转向,旋转角度Wait(kUpdatePeriod);//定义发动机延迟时间,否则带着转数会不直线}elseif(stick1.GetRawButton(close)){robotDrive1.Drive(0,0);//暂停发射Wait(kUpdatePeriod);//等候5毫秒以避免占用CPU周期}elseif(stick1.GetRawButton(start)){robotDrive1.Drive(-1,0);//反向旋转发射装置Wait(kUpdatePeriod);//等候5毫秒以避免占用CPU周期}else{robotDrive1.Drive(-1,0);Wait(kUpdatePeriod);//等候5毫秒以避免占用CPU周期10}*/Position=limitSwitch.Get();//获取限位开关信号y=1;while(y){if(Position&&x%2==1){robotDrive2.Drive(0,0);if(stick1.GetRawButton(shot))x++;}if(Position&&x%2==0){robotDrive2.Drive(0.5,0);if(stick1.GetRawButton(shot))x++;}if(!Position){robotDrive2.Drive(0.5,0);}y=0;}m_solenoid.Set(stick1.GetRawButton(kSolenoidButton));//气动复位按键//为了设置使用双向电磁阀,如果没有按下按钮他处于关闭的,如果只按下一个按钮,舍得的电磁阀对应于该按钮,如果两者都按下设置电磁阀向前if(stick1.GetRawButton(kDoubleSolenoidForward))//kDoubleSolenoidForward2m_doubleSolenoid.Set(DoubleSolenoid::kForward);elseif(stick
本文标题:FRC极限抛射程序使用说明
链接地址:https://www.777doc.com/doc-3970228 .html