⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 action.h

📁 机器人超声波避障系统
💻 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 + -