コード例 #1
0
void rotaryDriverStartCM(uint16_t cm) {
	rotaryDriverReset();
	set_forward(MOTOR_DEFAULT_TURN_SPEED, MOTOR_DEFAULT_TURN_SPEED);
	MP._rotary_driver_state |= ROTARY_DRIVER_ACTIVE;
	MP.rotary_driver_target_ticks = 9.71*(cm)-37.47;
	setChange(1);
}
コード例 #2
0
void rotaryDriverStart(uint16_t ticks) {
	rotaryDriverReset();
	set_forward(MP._originalLspeed, MP._originalLspeed);
	MP._rotary_driver_state |= ROTARY_DRIVER_ACTIVE;
	MP.rotary_driver_target_ticks = ticks;
	setChange(1);
}
コード例 #3
0
ファイル: df1b2f14.cpp プロジェクト: jimianelli/admb
/**
 * Description not yet available.
 * \param
 */
void fixed_smartlist2::initialize(void)
{
  end_saved=0;
  eof_flag=0;
  bptr=buffer;
  //int nbytes=0;
  written_flag=0;
  lseek(fp,0L,SEEK_SET);
  set_forward();
}
コード例 #4
0
void orderStartForward(void) {
	setPIDValue(getOrderLengthToWall()+IR_SENSOR_OFFSET);
	resetPIDIntergrator();
	movePlatformCM(MP.order_length);
	//send_xy(toArray(MP.x_pos), toArray(MP.y_pos));

	if(isPlatformMovingIntoRightWall()) {
		setOrderTargetTicks(getOrderTargetTicks()-cmtoticks(7));
	} else if (isPlatformMovingIntoLeftWall()) {
		setOrderTargetTicks(getOrderTargetTicks()-cmtoticks(8));
	} else if (isPlatformMovingIntoUpperWall()) {
		setOrderTargetTicks(getOrderTargetTicks()+cmtoticks(9));
	} else if (isPlatformMovingIntoLowerWall()) {
		setOrderTargetTicks(getOrderTargetTicks()-cmtoticks(3));
	}

	if(getOrderTargetTicks() >= cmtoticks(PLATFORM_PID_THRESHOLD)) {
		if(getOrderLengthToWall() < 8.0) {
			setPIDSmall();
		} else {
			setPIDWide();
		}
		activePID();
	} else {
		deactivatePID();
	}

	if(getOrderLengthToWall() < 8.0 || MP.order_length < 30) {
		set_forward(MOTOR_REDUCED_SPEED, MOTOR_REDUCED_SPEED);
		setOrderTargetTicks(getOrderTargetTicks()+cmtoticks(5));
	} else {
		set_forward(MOTOR_DEFAULT_SPEED, MOTOR_DEFAULT_SPEED);
	}

	//activateRotary();
	setOrderActive();
}
コード例 #5
0
ファイル: startup.c プロジェクト: nobutaka/nanopass
/* Cheney collector */
static void gc_copy_forward(Ptr *p)
{
    unsigned int tag = TAG(*p);
    if (tag == number_tag || tag == immed_tag || tag == float_tag) { return; }  /* number or immediate or float -> ignore */
    Ptr *obj = OBJ(*p);
    if (obj == 0) { return; }                                                   /* null pointer -> ignore */
    if (forwarded(obj)) {   /* update pointer with forwarding info */
        LOG("U%x", tag);
        *p = UNTAG(*obj) | tag;
    } else {                /* copy and forward object */
        LOG("C%x", tag);
        unsigned int size = object_size(obj);
        memcpy(gc_free, obj, size);
        set_forward(obj, PTR(gc_free));
        *p = PTR(gc_free) | tag;
        gc_free += size;
    }
}
コード例 #6
0
ファイル: frame.cpp プロジェクト: burz/tap
Frame::Frame(Vector3 position, Vector3 forward, Vector3 up)
{
  memcpy(this->position, position, sizeof(float) * 3);
  set_forward(forward);
  set_up(up);
}
コード例 #7
0
void FlyingCamera::roll(GLfloat angle) {
  glm::fquat quaternion = create_quaternion(get_forward_dir(),angle);
  set_up(quaternion*get_up());
  set_forward(quaternion * get_forward());
}
コード例 #8
0
void FlyingCamera::pitch(GLfloat angle) {
  glm::fquat quaternion = create_quaternion(glm::cross(get_forward_dir(),get_up_dir()),angle);
  set_forward(quaternion*get_forward());
  set_up(quaternion*get_up());
}
コード例 #9
0
ファイル: camera.hpp プロジェクト: Tomius/vkEarth
 virtual void set_right(const vec3& new_right) override {
   set_forward(glm::cross(up(), new_right));
 }
コード例 #10
0
void process_platform() {
	if(getOrderID() != MP.completed_order) {
		if(!(getOrderState()&ORDER_ACTIVE)) {
			switch(getOrderType()) {
				case(ORDER_TYPE_FORWARD):
					orderStartForward();
					break;
				case(ORDER_TYPE_LEFT_TURN):
					orderStartLeftTurn();
					break;
				case(ORDER_TYPE_RIGHT_TURN):
					orderStartRightTurn();
					break;
			}
		} else {
			if(MP._rotary_driver_state&ROTARY_DRIVER_ACTIVE) {
				if(rotaryDriverDone()) {
					deactivatePID();
					set_stop();
					setOrderDone();
					MP.completed_order = getOrderID();
					rotaryDriverStop();
					rotaryDriverReset();
					MP.adjust_state = 0;
				}
			} else {
				if(MP._state == PLATFORM_FORWARD) {
					if(getOrderTargetTicks() < cmtoticks(PLATFORM_PID_THRESHOLD)) {
						deactivatePID();
						//set_forward(MOTOR_DEFAULT_SPEED, MOTOR_DEFAULT_SPEED);
						if(getOrderCurrentTicks() >= getOrderTargetTicks()) {
							set_stop();
							setOrderDone();
							MP.completed_order = getOrderID();
							MP.adjust_state = 0;
						}
					} else {

						if(!MP.adjust_state&PLATFORM_ADJUST_DONE) {
							if(getOrderLengthToWall() < 7.0) {
								if(getOrderCurrentTicks() >= getOrderTargetTicks()*0.40 && getOrderCurrentTicks() <= getOrderTargetTicks()*0.60) {
									platformFineAdjust();
								}
							}
						}

						if(getOrderCurrentTicks() >= getOrderTargetTicks()*0.6) {

							if(!checkFrontRight()) {
								deactivatePID();
								set_forward(MP._originalLspeed, MP._originalRspeed);
							}

							if((!checkBackRight() && !checkFrontRight()) || (!checkBackLeft() && !checkFrontLeft())) {
								set_stop();
								deactivatePID();
								if(getOrderLengthToWall() >= 7.0) {
									rotaryDriverStartCM(8);
								} else {
									rotaryDriverStartCM(10);
								}

							}
						}
					}
				} else if(MP._state == PLATFORM_LEFT || MP._state == PLATFORM_RIGHT) {
					deactivatePID();
					if(getOrderCurrentTicks() >= getOrderTargetTicks()) {
						set_stop();
						setOrderDone();
						MP.completed_order = getOrderID();
					}
				}

			}
		}
	}

	if(change==1){
		switch(MP._state){
			case(PLATFORM_STOP):
				_stop();
				break;
			case(PLATFORM_FORWARD):
				_go_forward();
				break;
			case(PLATFORM_BACKWARD):
				_go_backward();
				break;
			case(PLATFORM_LEFT):
				_turn_left();
				break;
			case(PLATFORM_RIGHT):
				_turn_right();
				break;
			default:
				_stop();
				break;
		}
		change=0;
	}
}