void RemoteKinematics::LookAtMethod::execute(xmlrpc_c::paramList const& paramList, xmlrpc_c::value* const resultP) {
    paramList.verifyEnd(4);
    double x = paramList.getDouble(0);
    double y = paramList.getDouble(1);
    double z = paramList.getDouble(2);
    bool top_camera = paramList.getBoolean(3);
    this->m_kinematics->lookAt(x, y, z, top_camera);
    *resultP = value_nil();
}
	virtual void get_rate_limit(xmlrpc_c::paramList const& paramList, xmlrpc_c::value* retvalP) {
		ACE_TRACE("modEmulateRate_Interface::get_rate");
		int rate = 0;

		if (paramList.size() > 2 ) {
			rate = find_handler(paramList)->getRateLimitAtTime(paramList.getDouble(2));
		}
		else {
			rate = find_handler(paramList)->getRateLimit();
		}

		*retvalP = xmlrpc_c::value_double(rate);
	}
void RemoteKinematics::JointsLookAtMethodLookAtMethod::execute(xmlrpc_c::paramList const& paramList,
                                                               xmlrpc_c::value* const resultP) {
    paramList.verifyEnd(4);
    double x = paramList.getDouble(0);
    double y = paramList.getDouble(1);
    double z = paramList.getDouble(2);
    bool top_camera = paramList.getBoolean(3);
    ValuesVectorPtr data = this->m_kinematics->jointsLookAt(x, y, z, top_camera);

    xmlrpc_env env;
    xmlrpc_env_init(&env);
    xmlrpc_value* elem;
    xmlrpc_value* values;
    values = xmlrpc_array_new(&env);
    for (int i = 0; i < data->size(); ++i) {
        elem = xmlrpc_double_new(&env, data->at(i));
        xmlrpc_array_append_item(&env, values, elem);
        xmlrpc_DECREF(elem);
    }
    resultP->instantiate(values);
    // Clean this shit!
    xmlrpc_DECREF(values);
    xmlrpc_env_clean(&env);
}