示例#1
0
int main(void) {
	for (int i=0; i<3; i++) {
		set_output(DDRB, led[i]);
	}

	uint8_t tick = 0;
	while(1) {
		for (int i=0; i<3; i++) {
			if (tick < current[i]) {
				output_high(PORTB, led[i]);
			} else {
				output_low(PORTB, led[i]);
			}
		}
		tick = (tick+1)%256;
		if (tick == 0) {
			if (reached()) {
				retarget();
			} else {
				approach();
			}
		}
	}
	return 0;
}
示例#2
0
文件: Ship.cpp 项目: LSaldyt/Projects
void Ship::update()
{
	awaiting_action = true;
	Entity::update();
	if (approaching)
	{
		approach();
	}

	frame.clean();
}
示例#3
0
/**
 * @function updateBehavior
 */
void robotController::updateBehavior() {

  // Following wall left
  if( mMode == 0 ) {
    //  peekaboo_left( 0.3, 1.57, 5 );
  }
  // Following wall right
  else if( mMode == 1 ) {
    //  peekaboo_right( 0.3, 1.57, 5 );
  }
  approach( 1.0, 0.3, 3 );
}
示例#4
0
int main(int argc, char** argv) {
	ros::init(argc,argv,"pr2_actions");
	ros::NodeHandle node_handle;

	Approach approach(node_handle);
	Dock dock(node_handle);
	Undock undock(node_handle);
	Pick pick(node_handle);
	Place place(node_handle);

	ros::spin();
	return 0;
}
示例#5
0
void update_transition(void) {
	if(!check_transition()) {
		return;
	}

	if(transition.state == TRANS_FADE_IN) {
		transition.fade = approach(transition.fade, 1.0, 1.0/transition.dur1);
		if(transition.fade == 1.0) {
			transition.state = TRANS_FADE_OUT;
			call_callback();
			if(popq()) {
				call_callback();
			}
		}
	} else if(transition.state == TRANS_FADE_OUT) {
		transition.fade = transition.dur2 ? approach(transition.fade, 0.0, 1.0/transition.dur2) : 0.0;
		if(transition.fade == 0.0) {
			transition.state = TRANS_IDLE;
			popq();
		}
	}
}
    ~EclMultiplexerMaterialParams()
    {
        switch (approach()) {
        case EclStone1Approach:
            delete static_cast<Stone1Params*>(realParams_);
            break;

        case EclStone2Approach:
            delete static_cast<Stone2Params*>(realParams_);
            break;

        case EclDefaultApproach:
            delete static_cast<DefaultParams*>(realParams_);
            break;

        case EclTwoPhaseApproach:
            delete static_cast<TwoPhaseParams*>(realParams_);
            break;
        }
    }
示例#7
0
void Player::Update()
{
    if(CanMove()==false)
    {
        return;
    }else
    {
        Move();
		approach();
        vector<Tail>::iterator iter=tails.begin();
        vector<Tail>::iterator e=tails.end();
        for(;iter!=e;iter++)
        {
            iter->Update();
        }
        if(ateApple)
        {
            AddTail();
            ateApple=false;
        }
    }
}
    void setApproach(EclMultiplexerApproach newApproach)
    {
        assert(realParams_ == 0);
        approach_ = newApproach;

        switch (approach()) {
        case EclStone1Approach:
            realParams_ = new Stone1Params;
            break;

        case EclStone2Approach:
            realParams_ = new Stone2Params;
            break;

        case EclDefaultApproach:
            realParams_ = new DefaultParams;
            break;

        case EclTwoPhaseApproach:
            realParams_ = new TwoPhaseParams;
            break;
        }
    }
示例#9
0
void Colour::quickApproach(Colour c) {
	for (uint8_t i = 0; i < 3; i++) {
		approach(c);
	}
}
 typename std::enable_if<approachV == EclTwoPhaseApproach, const TwoPhaseParams>::type&
 getRealParams() const
 {
     assert(approach() == approachV);
     return *static_cast<const TwoPhaseParams*>(realParams_);
 }
 typename std::enable_if<approachV == EclDefaultApproach, DefaultParams>::type&
 getRealParams()
 {
     assert(approach() == approachV);
     return *static_cast<DefaultParams*>(realParams_);
 }
 typename std::enable_if<approachV == EclStone2Approach, Stone2Params>::type&
 getRealParams()
 {
     assert(approach() == approachV);
     return *static_cast<Stone2Params*>(realParams_);
 }
示例#13
0
    //! Default constructor.
    RowsStages::RowsStages(const IMC::Rows* maneuver, Tasks::Task* task)
    {
      // Setup offsets (without bearing rotation)
      m_man = *maneuver;
      // Save a pointer to the task to call debug message
      m_task = task;

      double curve_sign = curveRight() ? 1 : -1;
      double alt_frac_up = 0.01 * (double)m_man.alternation;
      double alt_frac_down = 2 - 0.01 * (double)m_man.alternation;

      m_stages.clear();

      Stage approach("approach", -m_man.coff, 0);
      m_stages.push_back(approach);

      Stage start_point("start", m_man.coff, 0);
      m_stages.push_back(start_point);

      Stage up("up", m_man.length + m_man.coff, 0);

      m_stages.push_back(up);

      Stage up_curve("begin curve (up)", 0, curve_sign * alt_frac_up * m_man.hstep);
      Stage up_curve_end("end curve (up)", -m_man.coff, 0);

      if (!squareCurve())
      {
        Angles::rotate(m_man.cross_angle, curveLeft(), up_curve.x, up_curve.y);
        up_curve.x -= m_man.coff;
        m_stages.push_back(up_curve);
      }
      else
      {
        Angles::rotate(m_man.cross_angle, curveLeft(), up_curve.x, up_curve.y);
        m_stages.push_back(up_curve);
        m_stages.push_back(up_curve_end);
      }

      Stage down("down", -up.x, 0);
      m_stages.push_back(down);

      Stage down_curve("begin curve (down)", 0, curve_sign * alt_frac_down * m_man.hstep);
      Stage down_curve_end("end curve (down)", -up_curve_end.x, 0);

      if (!squareCurve())
      {
        Angles::rotate(m_man.cross_angle, curveLeft(), down_curve.x, down_curve.y);
        down_curve.x += m_man.coff;
        m_stages.push_back(down_curve);
      }
      else
      {
        Angles::rotate(m_man.cross_angle, curveLeft(), down_curve.x, down_curve.y);
        m_stages.push_back(down_curve);
        m_stages.push_back(down_curve_end);
      }

      if (m_task != NULL)
      {
        m_task->debug("-- row stages and offsets -- ");
        for (uint8_t i = 0; i < m_stages.size(); ++i)
        {
          m_task->debug("%s | %0.2f %0.2f", m_stages[i].label,
                        m_stages[i].x, m_stages[i].y);
        }
      }

      // Other init
      m_curves = (int)std::floor(m_man.width / m_man.hstep);
      m_curr = 0;
      m_sabs = Stage("undefined", 0, 0);

      m_index = 0;
    }
示例#14
0
		const Point approach(const Point other) const{
			return approach(other, 0.5);
		}