Esempio n. 1
0
bool jointData::write(const yarp::os::idl::WireWriter& writer) const {
  if (!write_jointPosition(writer)) return false;
  if (!write_jointPosition_isValid(writer)) return false;
  if (!write_jointVelocity(writer)) return false;
  if (!write_jointVelocity_isValid(writer)) return false;
  if (!write_jointAcceleration(writer)) return false;
  if (!write_jointAcceleration_isValid(writer)) return false;
  if (!write_motorPosition(writer)) return false;
  if (!write_motorPosition_isValid(writer)) return false;
  if (!write_motorVelocity(writer)) return false;
  if (!write_motorVelocity_isValid(writer)) return false;
  if (!write_motorAcceleration(writer)) return false;
  if (!write_motorAcceleration_isValid(writer)) return false;
  if (!write_torque(writer)) return false;
  if (!write_torque_isValid(writer)) return false;
  if (!write_pwmDutycycle(writer)) return false;
  if (!write_pwmDutycycle_isValid(writer)) return false;
  if (!write_current(writer)) return false;
  if (!write_current_isValid(writer)) return false;
  if (!write_controlMode(writer)) return false;
  if (!write_controlMode_isValid(writer)) return false;
  if (!write_interactionMode(writer)) return false;
  if (!write_interactionMode_isValid(writer)) return false;
  return !writer.isError();
}
Esempio n. 2
0
int main(void)
{
	/*init all the things*/
	motors_init(PHASE_CORRECT, PRESCALE_8);
	uart_init(BAUD_CALC(9600));
	sei();
	adc_init();
	wdt_init(WDTO_500MS);
	/********************/
	go(0, 0);
	uart_putc(ACK);
	over_current_a = 0;
	over_current_b = 0;
	while (1)
	{
		current_a = analog_read(C_SENS_A);
		current_b = analog_read(C_SENS_B);

		req_t = get_request_type();
		if (req_t == CURRENT_REQ)
		{	
			write_current(current_a, current_b);
		}
		else if (req_t == MOTORS_SET)
		{
			read_motors(&speed_a, &speed_b);
			wdt_reset();
		}
		
		//manage current sens
		#ifdef CURRENT_LIMIT
		if ((current_a < CURRENT_LIMIT) && (current_b < CURRENT_LIMIT))
		{
			go(speed_a, speed_b);
			over_current_a = over_current_b = 0;
		}
		else
		{
			//overcurrent
			go(0, 0);
			uart_putc('!');
			over_current_a = current_a - CURRENT_LIMIT;
			over_current_b = current_b - CURRENT_LIMIT;
		}
		#endif
	}
	return (0);
}