示例#1
0
bool _SSD::init(void* pKiss)
{
    CHECK_F(!this->_ThreadBase::init(pKiss));
    Kiss* pK = (Kiss*)pKiss;
    pK->m_pInst = this;

    //Setup Caffe Classifier
    string caffeDir = "";
    string modelFile;
    string trainedFile;
    string meanFile;
    string labelFile;
    string presetDir = "";

    F_INFO(pK->root()->o("APP")->v("presetDir", &presetDir));

    F_INFO(pK->v("dir", &caffeDir));
    F_FATAL_F(pK->v("modelFile", &modelFile));
    F_FATAL_F(pK->v("trainedFile", &trainedFile));
    F_FATAL_F(pK->v("meanFile", &meanFile));
    F_FATAL_F(pK->v("labelFile", &labelFile));
    F_INFO(pK->v("minConfidence", &m_confidence_threshold));

    setup(caffeDir + modelFile, caffeDir + trainedFile, caffeDir + meanFile, presetDir + labelFile);
    LOG_I("Initialized");

    m_pFrame = new Frame();

    return true;
}
示例#2
0
bool APMrover_base::init(void* pKiss)
{
	CHECK_F(this->ActionBase::init(pKiss)==false);
	Kiss* pK = (Kiss*)pKiss;
	pK->m_pInst = this;

	Kiss* pCC;
	APMrover_PID cPID;

	pCC = pK->o("steer");
	CHECK_F(pCC->empty());

	F_ERROR_F(pCC->v("P", &cPID.m_P));
	F_INFO(pCC->v("I", &cPID.m_I));
	F_INFO(pCC->v("Imax", &cPID.m_Imax));
	F_INFO(pCC->v("D", &cPID.m_D));
	F_INFO(pCC->v("dT", &cPID.m_dT));
	m_pidSteer = cPID;

	pCC = pK->o("thrust");
	CHECK_F(pCC->empty());

	F_ERROR_F(pCC->v("P", &cPID.m_P));
	F_INFO(pCC->v("I", &cPID.m_I));
	F_INFO(pCC->v("Imax", &cPID.m_Imax));
	F_INFO(pCC->v("D", &cPID.m_D));
	F_INFO(pCC->v("dT", &cPID.m_dT));
	m_pidThrust = cPID;

	//init controls
	m_lastHeartbeat = 0;
	m_iHeartbeat = 0;

	return true;
}
示例#3
0
bool HM_follow::link(void)
{
	CHECK_F(this->ActionBase::link()==false);
	Kiss* pK = (Kiss*)m_pKiss;
	string iName = "";

	F_INFO(pK->v("HM_base", &iName));
	m_pHM = (HM_base*) (pK->parent()->getChildInstByName(&iName));

	F_INFO(pK->v("_Universe", &iName));
	m_pUniv = (_Universe*) (pK->root()->getChildInstByName(&iName));

	return true;
}
示例#4
0
bool RC_visualFollow::link(void)
{
	CHECK_F(!this->ActionBase::link());
	Kiss* pK = (Kiss*)m_pKiss;

	string iName = "";

	F_INFO(pK->v("_RC", &iName));
	m_pRC = (_RC*) (pK->root()->getChildInstByName(&iName));

	F_INFO(pK->v("RC_base", &iName));
	m_pRCconfig = (RC_base*) (pK->root()->getChildInstByName(&iName));

	F_ERROR_F(pK->v("ROItracker", &iName));
	m_pROITracker = (_ROITracker*) (pK->root()->getChildInstByName(&iName));

	return true;
}
示例#5
0
/**
 * @brief f_size - returns the size of the file
 *
 * @param f_name  - name of the file including path
 *
 * @return success/fail
 */
signed long f_size(const char *f_name)
{
	struct stat f_stat;
	if (stat(f_name, &f_stat)) {
		F_ERROR("Could not stat %s\n", f_name);
		return FILE_ERROR;
	}
	F_INFO("File size is %d\n", (unsigned int)f_stat.st_size);
	return f_stat.st_size;
}
示例#6
0
/**
 * @brief f_read - read from file
 *
 * @param buffer buffer
 * @param read_size size to read
 *
 * @return num bytes read
 */
signed int f_read(unsigned char *buffer, unsigned int read_size)
{
	int ret;
	if (file == NULL) {
		F_ERROR("file is not open\n");
		return FILE_ERROR;
	}
	ret = fread(buffer, 1, read_size, file);
	F_INFO("read operation returned %d\n", ret);
	return ret;
}
示例#7
0
/**
 * @brief f_seek - seek to location in file
 *
 * @param offset in file
 *
 * @return status
 */
int f_seek(long offset)
{
	int ret;
	if (file == NULL) {
		F_ERROR("file is not open\n");
		return FILE_ERROR;
	}
	ret = fseek(file, offset, SEEK_SET);
	F_INFO("seek operation returned %d\n", ret);
	return ret;
}
示例#8
0
bool APMrover_base::link(void)
{
	CHECK_F(!this->ActionBase::link());
	Kiss* pK = (Kiss*)m_pKiss;

	string iName = "";

	F_INFO(pK->v("_Mavlink", &iName));
	m_pMavlink = (_Mavlink*) (pK->root()->getChildInstByName(&iName));

	return true;
}
示例#9
0
bool _Flow::init(void* pKiss)
{
	CHECK_F(!this->_ThreadBase::init(pKiss));
	Kiss* pK = (Kiss*)pKiss;
	pK->m_pInst = this;

	string presetDir = "";
	string labelFile;

	F_INFO(pK->root()->o("APP")->v("presetDir", &presetDir));
	F_INFO(pK->v("bDepth", &m_bDepth));
	F_INFO(pK->v("width", &m_width));
	F_INFO(pK->v("height", &m_height));
	F_INFO(pK->v("flowMax", &m_flowMax));
	F_INFO(pK->v("colorFile", &labelFile));

	m_pDepth = new Frame();
	m_pFarn = cuda::FarnebackOpticalFlow::create();

	m_pGrayFrames = new FrameGroup();
	m_pGrayFrames->init(2);

	m_GDMat = GpuMat(m_height, m_width, CV_32FC1, Scalar(0));

	return true;

	//	m_labelColor = imread(presetDir+labelFile, 1);
	//	m_pGpuLUT = cuda::createLookUpTable(m_labelColor);
	//	m_pSeg = new CamFrame();
	//	m_flowMat = GpuMat(SMALL_WIDTH, SMALL_HEIGHT, CV_32FC2);
}
示例#10
0
/**
 * @brief f_open - open the file
 *
 * @param f_name file name
 *
 * @return success/fail
 */
signed char f_open(const char *f_name)
{
	if (file != NULL) {
		F_ERROR("file %s already open\n", f_name);
		return FILE_ERROR;
	}
	file = fopen(f_name, "r");
	if (file == NULL) {
		F_ERROR("could not open file %s\n", f_name);
		return FILE_ERROR;
	}
	F_INFO("file %s opened\n", (char *)f_name);
	return FILE_OK;
}
示例#11
0
bool RC_visualFollow::init(void* pKiss)
{
	CHECK_F(!this->ActionBase::init(pKiss));
	Kiss* pK = (Kiss*)pKiss;

	m_roll.reset();
	m_pitch.reset();
	m_yaw.reset();
	m_alt.reset();

	F_ERROR_F(pK->v("targetX", &m_roll.m_targetPos));
	F_ERROR_F(pK->v("targetY", &m_pitch.m_targetPos));
	F_INFO(pK->v("ROIsizeFrom", &m_ROIsizeFrom));
	F_INFO(pK->v("ROIsizeTo", &m_ROIsizeTo));
	F_INFO(pK->v("ROIsizeStep", &m_ROIsizeStep));

	//setup UI
	Kiss* pC;

	pC = pK->o("assist");
	if (!pC->empty())
	{
		m_pUIassist = new UI();
		F_FATAL_F(m_pUIassist->init(pC));
	}

	pC = pK->o("drawRect");
	if (!pC->empty())
	{
		m_pUIdrawRect = new UI();
		F_FATAL_F(m_pUIdrawRect->init(pC));
	}

	pK->m_pInst = this;

	return true;
}
示例#12
0
/**
 * @brief f_close - close the file
 *
 * @return pass/fail
 */
signed char f_close(void)
{
	if (file == NULL) {
		F_ERROR("file is not open\n");
		return FILE_ERROR;
	}
	if (fclose(file)) {
		F_ERROR("could not close file!\n");
		file = NULL;
		return FILE_ERROR;
	}
	file = NULL;
	F_INFO("file closed\n");
	return FILE_OK;
}
示例#13
0
bool ActionBase::link(void)
{
	CHECK_F(!this->BASE::link());
	Kiss* pK = (Kiss*)m_pKiss;

	string iName="";
	F_INFO(pK->v("_Automaton", &iName));
	m_pAM = (_Automaton*) (pK->root()->getChildInstByName(&iName));

	CHECK_T(m_pAM==NULL);
	iName="";
	CHECK_T(pK->v("activeState", &iName)==false);
	m_iActiveState = m_pAM->getStateIdx(&iName);

	return true;
}
示例#14
0
bool _AutoPilot::link(void)
{
    CHECK_F(!this->BASE::link());
    Kiss* pK = (Kiss*)m_pKiss;

    int i;
    for(i=0; i<m_nAction; i++)
    {
        ActionBase* pA = m_pAction[i];
        F_ERROR_F(pA->link());
    }

    string iName="";
    F_INFO(pK->v("_Automaton", &iName));
    m_pAM = (_Automaton*) (pK->root()->getChildInstByName(&iName));

    return true;
}
示例#15
0
bool _AutoPilot::init(void* pKiss)
{
    CHECK_F(!this->_ThreadBase::init(pKiss));
    Kiss* pK = (Kiss*)pKiss;
    pK->m_pInst = this;

    //create action instance
    Kiss* pCC = pK->o("action");
    CHECK_T(pCC->empty());
    Kiss** pItr = pCC->getChildItr();

    int i = 0;
    while (pItr[i])
    {
        Kiss* pAction = pItr[i];
        i++;

        bool bInst = false;
        F_INFO(pAction->v("bInst", &bInst));
        if (!bInst)continue;
        if (m_nAction >= N_ACTION)LOG(FATAL);

        ActionBase** pA = &m_pAction[m_nAction];
        m_nAction++;

        //Add action modules below

        ADD_ACTION(RC_visualFollow);
        ADD_ACTION(APMcopter_landing);
        ADD_ACTION(APMcopter_guided);
        ADD_ACTION(HM_base);
        ADD_ACTION(HM_follow);
        ADD_ACTION(APMrover_base);
        ADD_ACTION(APMrover_follow);

        //Add action modules above

        LOG_E("Unknown action class: "+pAction->m_class);
    }

    return true;
}
示例#16
0
bool HM_follow::init(void* pKiss)
{
	CHECK_F(this->ActionBase::init(pKiss) == false);
	Kiss* pK = (Kiss*)pKiss;
	pK->m_pInst = this;

	F_INFO(pK->v("targetX", &m_destX));
	F_INFO(pK->v("targetY", &m_destY));
	F_INFO(pK->v("targetArea", &m_destArea));
	F_INFO(pK->v("targetClass", &m_targetClass));

	F_INFO(pK->v("speedP", &m_speedP));
	F_INFO(pK->v("steerP", &m_steerP));

	F_INFO(pK->v("filterWindow", &m_filterWindow));
	m_pTargetX->startMedian(m_filterWindow);
	m_pTargetY->startMedian(m_filterWindow);
	m_pTargetArea->startMedian(m_filterWindow);


	return true;
}
示例#17
0
bool _Bullseye::init(void* pKiss)
{
	CHECK_F(!this->_ThreadBase::init(pKiss));
	Kiss* pK = (Kiss*)pKiss;
	pK->m_pInst = this;

	//format params
	F_ERROR_F(pK->v("areaRatio", &m_areaRatio));
	F_ERROR_F(pK->v("minSize", &m_minMarkerSize));

	F_INFO(pK->v("method", &m_method));
	F_INFO(pK->v("medBlueKsize", &m_kSize));

	F_INFO(pK->v("HoughMinDist", &m_houghMinDist));
	F_INFO(pK->v("HoughParam1", &m_houghParam1));
	F_INFO(pK->v("HoughParam2", &m_houghParam2));
	F_INFO(pK->v("HoughMinR", &m_houghMinR));
	F_INFO(pK->v("HoughMaxR", &m_houghMaxR));

	m_pFrame = new Frame();

	return true;
}