团队项目开发日志--(第二篇)
团队项目进度
1.根据项目需求设计头文件
1.难点一:
- 首先由于对C++语言不是很熟练,只有大一学习C++的基础。最近使用或接触更多的是C#,还好有很多类似的地方。
开始,必然是查找相关机器人编程的例子。所以便开始在Github上查找,相关的例子倒是挺多的,但是没有一个能看懂的。Github上的例子大多没有详细的说明,而且大部分程序都没有注释。
2.解决方法:
- 鉴于没有例子可以参考,只能靠自己,所以就先看了几天C++课本,把原来学习的内容补回来。其中的重点当然是类的设计和使用。
3.设计头文件
1)机器人子系统头文件:
#pragma once
#ifndef ROBITSYSTEM_H
#define ROBOTSYSTEM_H
namespace IceHockeyGame
{
class RobotSystem
{
protected:
double position_x; //机械手x坐标
double position_y; //机械手y坐标
double velocity_x; //机械手x方向速度
double velocity_y; //机械手y方向速度
bool Request; //是否接受指指令
bool Done; //是否已完成运动指令
public:
RobotSystem(){}
~RobotSystem(){}
/**
*@return robot hand position
*/
virtual double GetPositionX(void)=0;
/**
*@return robot hand velocity
*/
virtual double GetVelocityX(void)=0;
/**
*@return robot hand position
*/
virtual double GetPositionY(void)=0;
/**
*@return robot hand velocity
*/
virtual double GetVelocityY(void)=0;
};
}
#endif //ROBOTSYSTEM_H
2)二轴机械手控制头文件
#pragma once
#ifndef ROBITSYSTEM_ROBITCOMMAND_H
#define ROBITSYSTEM_ROBOTCOMMAND_H
#include"RobotSystem.h"
namespace IceHockeyGame{
namespace RobotSubSystem{
class RobotCommand :public RobotSystem
{
protected:
double targ_position_x; //目标点的x坐标
double targ_position_y; //目标点的y坐标
double targ_velocity_x; //目标点的x方向速度
double targ_velocity_y; //目标点的y方向速度
double targ_time; //到达目标点所需时间
public:
RobotCommand();
~RobotCommand(){}
virtual void InitTrajectoryPlan(double tpx, double tpy, double tvx, double tvy, double tt)=0;
/**
*@set the target position
*/
void SetPosition(double x, double y);
/**
*@set the target velocition
*/
void SetVelocity(double x, double y);
/**
*@set the target time
*/
void SetTime(double time);
};
}
}
#endif //ROBITSYSTEM_ROBOTCOMMAND_H
其它代码内容较多,不再放在博客上,均存放在Github仓库。
2.项目难点及计划
- 1.机器人子系统的基本架构已经搞清楚了,基本实现了头文件的设计和简单的源文件的设计。
- 2.下一步要做的主要内容是完善源文件,更好的设计类方法的设计。
- 3.插补的选择上的问题:轨迹插补或者时间分割插补。总体来说时间分割插补更简单,但是不能保证有规律的轨迹。