📄 action.h
字号:
/*
*Copyright (c) 2004 中国民用航空学院机器人研究所
*All rights reserved.
*
*文件名称: Action.h
*摘 要: 实现双轮差速结构机器人的运动控制
*
*当前版本: 1.0
*作 者: 牛国臣
*完成日期: 2004年3月17日
*修订
* 2004-9-27 添加了轮间距、轮子半径、减速比这些变量
* 2004-10-21 添加了返回左右轮所走位移的函数
*/
#ifndef _ACTION_ITL_NGC_H
#define _ACTION_ITL_NGC_H
#include "ServoBoard.h"
class AFX_EXT_CLASS Action
{
public:
//构造函数和析构函数
Action(ServoBoard *board=NULL);
~Action();
void SetLeftMotorChannel(UINT chIndex=1); //设置左轮电机通道
void SetRightMotorChannel(UINT chIndex=2); //设置右轮电机通道
void SetBoardHandle(ServoBoard *hBoard); //设置电机板句柄
void Reset(); //复位左右电机
void SetAcceleration(double acc); //设置两电机加速度
void SetFilter(short kp,short ki,short kd,short il,BYTE samint); //设置PID参数
//设置驱动机构的参数
void SetParam(double tread,double wheelRadius,double reducRatio,double encoderLines);
//运动控制函数
void GoStraight(BOOL foreBack,double velocity);
void GoStraight(BOOL foreBack,double velocity,double distance);
void Turn(BOOL leftRight,double w,double angle);
void Turn(BOOL leftRight,double w);
void Curve(BOOL leftRight,BOOL foreBack,double velocity,double radius,double radLength);
void Curve(BOOL leftRight,BOOL foreBack,double velocity,double radius);
void Turn(BOOL leftRight,BOOL foreBack,double w,double radius,double angle);
void Turn(BOOL leftRight,BOOL foreBack,double w,double radius);
void Stop(int stopmode);
BOOL CheckTrajComplete();
void WaitTrajComplete();
//设置左右轮速度,速度变量值正负值表示轮子前进或后退
void SetLeftRightSpeed(double leftVel, double rightVel);
void Move(double linearVel,double angularVel);
void Move(double linearVel, double angularVel,double angleOrDis,BOOL flag/*TURE-ANGLE,FALSE-DIS*/);
double GetLeftWheelRealDis(); //返回左轮走的位移(cm)
double GetRightWheelRealDis(); //返回右轮走的位移(cm)
double GetLeftWheelDesireDis(); //返回左轮期望位移(cm)
double GetRightWheelDesireDis(); //返回右轮期望位移(cm)
double GetLeftWheelRealVel(); //返回左轮实际速度(cm/s)
double GetRightWheelRealVel(); //返回右轮实际速度(cm/s)
double GetLeftWheelDesireVel(); //返回左轮期望速度(cm/s)
double GetRightWheelDesireVel(); //返回右轮期望速度(cm/s)
double GetTread(){return m_tread;} //返回机器人两轮间距(cm)
//
private:
//初始化函数
void Init();
private:
ServoBoard *m_board;
double m_tread; //两轮之间的距离
double m_wheelRadius; //驱动轮半径
double m_reducRatio; //电机到驱动轮的减速比
double m_encoderLines; //编码器分辨率(每转多少线)
double m_dtp; //单位转换系数(厘米--〉脉冲)
double m_ptd; //单位转换系数(脉冲--〉厘米)
UINT m_leftMotor; //左路电机通道
UINT m_rightMotor; //右路电机通道
BYTE m_bothMotor; //两路电机同时操作控制字
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -