fre1228 2023-11-23 11:14 采纳率: 84.4%
浏览 8
已结题

c语言,想把这个代码改成走方波轨迹,走直角的那种


int COSLRobot::PathPlanning()
{


    static int idx=0;
    static double des_X = 1;
    static double des_Y = 1;
    double A;
    curpose.x,curpose.y,curpose.a;
    tgtpos.x,tgtpos.y,tgtpos.a;
    if (idx==0) SetTargetP(1,1);
    A = sqrt(pow(tgtpos.x - curpose.x, 2) + pow(tgtpos.y - curpose.y, 2));
    if(A<0.1)
    {
        idx=idx+1;
        des_X = idx;
        if((idx%2,) == 0)
            des_Y=2;
        if((idx%2)  == 1)
            des_Y=1;
    }
    SetTargetP(des_X,des_Y);

    return 1;
}

img

  • 写回答

5条回答 默认 最新

  • 社区专家-Monster-XH 2023-11-23 11:33
    关注
    
    int COSLRobot::PathPlanning()
    {
        static int idx = 0;
        static double des_X = 1;
        static double des_Y = 1;
        double A;
        // 假设curpose和tgtpos已经被正确定义和初始化
        // double curpose.x, curpose.y, curpose.a;
        // double tgtpos.x, tgtpos.y, tgtpos.a;
    
        // 初始化目标位置
        if (idx == 0) SetTargetP(1, 1);
    
        // 计算当前位置到目标位置的距离
        A = sqrt(pow(tgtpos.x - curpose.x, 2) + pow(tgtpos.y - curpose.y, 2));
        
        // 如果距离小于阈值,则更新目标位置
        if(A < 0.1)
        {
            idx = idx + 1; // 增加步骤数
            
            if((idx % 4) == 0) // 每四步后Y坐标减小
                des_Y -= 1;
            else if((idx % 4) == 2) // 每四步中的第三步Y坐标增大
                des_Y += 1;
            else if((idx % 4) == 1) // 每四步中的第二步X坐标增大
                des_X += 1;
            else if((idx % 4) == 3) // 每四步中的第四步X坐标减小
                des_X -= 1;
        }
        
        // 设置新的目标位置
        SetTargetP(des_X, des_Y);
        
        return 1;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 12月1日
  • 已采纳回答 11月23日
  • 赞助了问题酬金15元 11月23日
  • 创建了问题 11月23日