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

这段代码是用来控制机器人在不同模式下的行为,具体是处理 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),控制机器人的行走行为,包括站立高度、前进速度、转向速度以及步态类型。这些参数的调整和计算是为了使机器人能够在不同的环境下稳定地行走并准确地按照预定路线前进。

相关推荐
Lenz's law4 小时前
智元灵犀X1-本体通讯架构分析2:CAN/FD总线性能优化分析
架构·机器人·can·1024程序员节
@LetsTGBot搜索引擎机器人4 小时前
Telegram 被封是什么原因?如何解决?(附 @letstgbot 搜索引擎重连技巧)
开发语言·python·搜索引擎·机器人·.net
灵犀物润14 小时前
使用 Blender 对四足机器宠物(例如机器猫、机器狗、机器猪等)进行细节雕刻的完整、专业级流程
机器人·blender·宠物
kuan_li_lyg1 天前
笛卡尔坐标机器人控制的虚拟前向动力学模型
人工智能·stm32·机器人·机械臂·动力学·运动学·导纳控制
晚风残1 天前
【机器人】RViz中LaserScan的参数信息说明
机器人
陈苏同学2 天前
笔记1.4:机器人学的语言——三维空间位姿描述 (旋转矩阵 - 齐次变换矩阵 - 欧拉角 - 四元数高效表示旋转)
笔记·线性代数·算法·机器人
普蓝机器人2 天前
面向智慧农业的自主移动果蔬采摘机器人:融合视觉识别与自动驾驶的智能化农作系统研究
人工智能·学习·机器人·移动机器人·三维仿真导航
Wnq100722 天前
巡检机器人户外视觉识别困境剖析与自动优化模式构建
图像处理·目标检测·低代码·计算机视觉·目标跟踪·机器人·需求分析
haing20192 天前
SCARA 机器人点到点(PTP)轨迹规划方法
机器人·ptp速度规划·主运动轴
2501_927283583 天前
WMS市场中的专业力量:为何天津荣联汇智是制造企业的重点关注对象
运维·人工智能·机器人·自动化·制造·agv