LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1896|回复: 4

驱动小车巡线功能,各位帮我看看,控制巡线功能,想做拐弯,以及随时停车的修改,但是不知道从

[复制链接]
发表于 2010-5-7 12:16:21 | 显示全部楼层 |阅读模式
ret = read(fd_sensor, &sensorData, sizeof(unsigned char));
                        if(ret > 0)
                        {
#ifdef DEBUG_CARCONTROL
                                printf("sensorData is 0x%x \n", sensorData);
#endif
                        } else
                        {
                                perror("error to read fd_Sensor\n");
                                exit(1);
                        }
                       
                        // 根据传感器的原始值计算出小车偏移黑线值和在黑线上的传感器数目
                        ret = calc_sensor(sensorData, &biasValue,  &blackSum);
                        count += ret;
                }
               
#ifdef DEBUG_CARCONTROL
                printf("biasValue = %f, blackSum = %d \n", biasValue, blackSum);
#endif
                // 检测是否到达探测点
                // 若已到达则采集数据并上传,注意上传过程都分别用独立的进程来完成
                if(blackSum == 6 && count > 6 && countS > 5)
                {
                        countS = 0;
                        flagID ++;
                        printf("flagID = %d\n", flagID);
                       
                        ////////////////////////////////////////////////////////
                        wr_buf[2] = 0;
                        wr_buf[3] = 0;
                        sleep(1);
                        /////////////////////
                        fetch_picture(pCamFb);
                        image_recognize(pCamFb, flagID, pObj);
                        printf("ID: %d, x=%d, scale: %f\n", flagID, pObj->X, pObj->scale);
                        //if()
                        ///////////////////
                        if(flagID == 1)
                        {
                                wr_buf[2] = 90;
                                wr_buf[3] = 90;
                                wr_buf[4] = 1;
                                wr_buf[5] = 0;
                                //usleep(500000);
                                init_imageHandler(pObj);
                                do
                                {
                                        usleep(20000);
                                        fetch_picture(pCamFb);
                                        image_recognize(pCamFb, flagID, pObj);
                                        ret = pObj->X-80;
                                }
                                while(ret < -10 || ret > 10);
                                wr_buf[2] = 0;
                                wr_buf[3] = 0;
                                sleep(1);
                        }
                        wr_buf[2] = 60;
                        wr_buf[3] = 60;
                        wr_buf[4] = 1;
                        wr_buf[5] = 1;
                        sleep(2);
                        countMs = 0;
                        init_imageHandler(pObj);
                        while(1)               
                        {
                                usleep(20000);
                               
                                fetch_picture(pCamFb);
                                image_recognize(pCamFb, flagID, pObj);
                               
                                countMs += 20;
                                if(countMs > 600 || pObj->scale > scaleGrp[flagID-1]) break;        // 注意这两个条件
                        }
                        printf("OBJ: x=%d, y=%d, scale=%f\n", pObj->X, pObj->Y, pObj->scale);
发表于 2010-5-7 13:39:26 | 显示全部楼层
!!莫名~~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-5-7 14:31:22 | 显示全部楼层
这个是程序的主要部分,现在小车走到两根黑粗线相交的十字路口,黑线重叠部分是白线,小车本应该骑着黑线走,走到白色十字部分,小车要停下来 但是现在停不下来。。。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-5-7 14:32:18 | 显示全部楼层
Post by x11;2088452
!!莫名~~


麻烦帮我看下啊 如果需要程序的全部 ,我就贴出来
回复 支持 反对

使用道具 举报

发表于 2010-5-7 20:33:33 | 显示全部楼层
可以先贴出来看看
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表