使机器人在执行任务倒快递

这段代码是用来控制机器人在不同模式下的行为,具体是处理 residencerightresidenceleft 两种模式下的过渡过程。代码中使用了一个 mythread 结构体,该结构体包含了机器人的当前模式 (mode) 和过渡过程的阶段 (residenceTransientProcess)。以下是对这段代码的详细解释:

模式 residenceright

cpp 复制代码
if(mythread.mode==residenceright){
    if(mythread.residenceTransientProcess==1){
        stand_height=0.3;
        v_des[0]=0.03;
    }else if(mythread.residenceTransientProcess==2){
        stand_height=0.3;
        v_des[0]=0.0;
        gait_type=4;
        rpy_des[0]=0.4;
    }else if(mythread.residenceTransientProcess==3){
        average=getAverage(frame);
        gait_type=3; step_height=0.03; stand_height=0.25;
        rpy_des[0]=0; rpy_des[1]=0; rpy_des[2]=0;
        v_des[0]=0.1; // 前进
        v_des[2]=0.01*(goalAverage-average); // 转向
    }else if(mythread.residenceTransientProcess==4){
        mythread.mode=track;
        mythread.residenceTransientProcess=1;
    }
}
  1. mythread.residenceTransientProcess==1

    • 设置站立高度为 0.3。
    • 设置机器人前进速度为 0.03。
  2. mythread.residenceTransientProcess==2

    • 站立高度仍为 0.3。
    • 停止前进 (v_des[0]=0.0)。
    • 设置步态类型为 4 (gait_type=4)。
    • 设置期望的横滚角为 0.4 (rpy_des[0]=0.4)。
  3. mythread.residenceTransientProcess==3

    • 计算当前帧的平均值 (average=getAverage(frame))。
    • 设置步态类型为 3,步高为 0.03,站立高度为 0.25。
    • 将期望的横滚、俯仰、偏航角设置为 0 (rpy_des[0]=0; rpy_des[1]=0; rpy_des[2]=0)。
    • 设置前进速度为 0.1 (v_des[0]=0.1)。
    • 根据目标平均值与当前平均值的差异设置转向速度 (v_des[2]=0.01*(goalAverage-average))。
  4. mythread.residenceTransientProcess==4

    • 切换模式为 track
    • 重置过渡过程阶段为 1 (mythread.residenceTransientProcess=1)。

模式 residenceleft

cpp 复制代码
if(mythread.mode==residenceleft){
    if(mythread.residenceTransientProcess==1){
        stand_height=0.3;
        v_des[0]=0.03;
    }else if(mythread.residenceTransientProcess==2){
        stand_height=0.3;
        v_des[0]=0.0;
        v_des[2]=0.0;
        gait_type=4;
        rpy_des[0]=-0.4;
    }else if(mythread.residenceTransientProcess==3){
        average=getAverage(frame);
        gait_type=3; step_height=0.03; stand_height=0.25;
        rpy_des[0]=0; rpy_des[1]=0; rpy_des[2]=0;
        v_des[0]=0.1; // 前进
        v_des[2]=0.01*(goalAverage-average); // 转向
    }else if(mythread.residenceTransientProcess==4){
        mythread.mode=track;
        mythread.residenceTransientProcess=1;
    }
}
  1. mythread.residenceTransientProcess==1

    • 设置站立高度为 0.3。
    • 设置机器人前进速度为 0.03。
  2. mythread.residenceTransientProcess==2

    • 站立高度仍为 0.3。
    • 停止前进 (v_des[0]=0.0)。
    • 停止转向 (v_des[2]=0.0)。
    • 设置步态类型为 4 (gait_type=4)。
    • 设置期望的横滚角为 -0.4 (rpy_des[0]=-0.4)。
  3. mythread.residenceTransientProcess==3

    • 计算当前帧的平均值 (average=getAverage(frame))。
    • 设置步态类型为 3,步高为 0.03,站立高度为 0.25。
    • 将期望的横滚、俯仰、偏航角设置为 0 (rpy_des[0]=0; rpy_des[1]=0; rpy_des[2]=0)。
    • 设置前进速度为 0.1 (v_des[0]=0.1)。
    • 根据目标平均值与当前平均值的差异设置转向速度 (v_des[2]=0.01*(goalAverage-average))。
  4. mythread.residenceTransientProcess==4

    • 切换模式为 track
    • 重置过渡过程阶段为 1 (mythread.residenceTransientProcess=1)。

总结

这段代码通过不同的模式 (residencerightresidenceleft) 以及相应的过渡过程阶段 (residenceTransientProcess),控制机器人的行走行为,包括站立高度、前进速度、转向速度以及步态类型。这些参数的调整和计算是为了使机器人能够在不同的环境下稳定地行走并准确地按照预定路线前进。

相关推荐
Leiditech__32 分钟前
人工智能时代电子机器人静电问题及电路设计防范措施
人工智能·嵌入式硬件·机器人·硬件工程
JAMES费1 小时前
figure机器人技术架构的演进初探——Helix人形机器人控制的革新
架构·机器人
【云轩】3 小时前
基于STM32与BD623x的电机控制实战——从零搭建无人机/机器人驱动系统
stm32·机器人·无人机
AWS官方合作商19 小时前
Amazon Lex:AI对话引擎重构企业服务新范式
人工智能·ai·机器人·aws
风口猪炒股指标1 天前
想象一个AI保姆机器人使用场景分析
人工智能·机器人·deepseek·深度思考
圆内~搁浅1 天前
langchain本地知识库问答机器人集成本地知识库
数据库·langchain·机器人
【云轩】1 天前
基于STM32与IFX007T的电机驱动全解析(无人机/机器人实战)
stm32·机器人·无人机
鸭鸭鸭进京赶烤1 天前
数学建模:解锁智能计算的密码!
人工智能·计算机网络·算法·数学建模·信息可视化·机器人·信息与通信
qqqweiweiqq1 天前
Resource not found: roslaunchROS path [0]=/opt/ros/noetic/share/ros
机器人
编程之力2 天前
宇树机器人G1 SDK实战和交付
机器人·宇树科技