ego_swarm代码框架

plannnerV1

ego_plannner_node:main函数初始化

init

  rebo_replan.init(nh);

ego_replan_fsm(重规划状态机)
将launch文件的参数引入
在这里插入图片描述
订阅状态机回调函数+碰撞检测回调函数
在这里插入图片描述
判断模式是手动设置目标模式或者waypoint模式
后者进入读取waypoint点函数
在这里插入图片描述
在该函数中先进行全局轨迹规划
然后将状态从WAIT_TARGET切换到GEN_NEW_TRAJ(生成新轨迹)模式
循环等待EXEC_TRAJ模式

如果等待到了EXEC_TRAJ模式,状态转换为REPLAN_TRAJ模式

状态机回调函数

在GEN_NEW_TRAJ状态中进行全局轨迹规划
然后将状态转换成EXEC_TRAJ模式

在EXEC_TRAJ模式中检测是否需要replan
如果满足条件则进入REPLAN_TRAJ模式

在REPLAN_TRAJ模式中一直调用planFromCurrentTraj函数进行rebounds
直到成功,将状态转移至EXEC_TRAJ

轨迹数据流向

Bspline解析

  1. (ego-replan-fsm.cpp中)callReboundReplan函数下调用reboundReplan进行轨迹重优化,最终将轨迹发布到planning/bspline话题中
  2. planning/bspline== 经过traj-server处理过后=/position_cmd
  3. /position_cmd == cmd == cmd_data == 在get_cmd_des调用cmd_data
  4. get_cmd_des ==des=经过calculateControl=debug_msg和输出u

最终进入mavros控制

  • debug_msg=通过debug_pub=发布到/debugPx4ctrl上面 ===可能用于调试

  • u通过publish_attitude_ctrl和publish_bodyrate_ctrl函数发布到(“/mavros/setpoint_raw/attitude”,话题上面进行姿态控制,成功控制无人机

px4ctrl控制逻辑

    // 1
    if (last_mode < API_MODE_THRESHOLD_VALUE && mode > API_MODE_THRESHOLD_VALUE)
        enter_hover_mode = true;
    else
        enter_hover_mode = false;

    if (mode > API_MODE_THRESHOLD_VALUE)
        is_hover_mode = true;
    else
        is_hover_mode = false;

    // 2
    if (is_hover_mode)
    {
        if (last_gear < GEAR_SHIFT_VALUE && gear > GEAR_SHIFT_VALUE)
            enter_command_mode = true;
        else if (gear < GEAR_SHIFT_VALUE)
            enter_command_mode = false;

        if (gear > GEAR_SHIFT_VALUE)
            is_command_mode = true;
        else
            is_command_mode = false;
    }

    // 3
    if (!is_hover_mode && !is_command_mode)
    {
        if (last_reboot_cmd < REBOOT_THRESHOLD_VALUE && reboot_cmd > REBOOT_THRESHOLD_VALUE)
            toggle_reboot = true;
        else
            toggle_reboot = false;
    }
    else
        toggle_reboot = false;

channel5

mode
mode变大 enter_hover_mode=1
mode>0.75 is_hover_mode=1

channel6

gear
gear 变大 enter_command_mode =1
gear >0.75 is_command_mode =1

channel8

reboot_cmd
reboot_cmd 变大 toggle_reboot

ch5上拉,L1=L2
6上拉 L2=L3

更改ID

在这里插入图片描述

egoplannerV2

### 多臂机器人避障算法的技术实现 多臂机器人的避障技术主要依赖于路径规划和实时感知能力。为了使多臂机器人能够在复杂环境中高效运行并避开障碍物,通常会结合多种传感器数据以及先进的计算模型来完成任务。 #### 1. 基于轨迹引导的避障方法 类似于多无人机编队中的EGO-Swarm方法[^1],对于多臂机器人而言,基于轨迹引导的方法同样是一种有效的解决方案。该方法的核心在于提前预测可能遇到的障碍,并通过全局路径优化调整每条机械臂的动作轨迹。具体来说: - **全局路径规划**:利用A*、Dijkstra或其他启发式搜索算法预先设计一条无碰撞的初始路径。 - **局部动态调整**:当检测到未预期的障碍时,立即重新评估当前状态并通过微调动作参数规避冲突。 这种方案能够显著提升系统的稳定性和效率,因为它不仅考虑到了单个手臂的行为,还兼顾了整体协作的需求。 ```python def plan_trajectory(arms, obstacles): trajectories = [] for arm in arms: path = a_star_search(start=arm.position, goal=arm.target, obstacle_map=obstacles) adjusted_path = smooth_path(path) # 平滑处理减少抖动 trajectories.append(adjusted_path) return synchronize_trajectories(trajectories) def detect_obstacle(sensor_data): if sensor_data['distance'] < threshold: return True return False ``` 上述伪代码展示了如何为多个机械臂生成安全可行的运动路线,并且包含了简单的障碍探测逻辑。 #### 2. 势场法及其改进版 势场法(Potential Field Method)被广泛应用于移动机器人领域,它也可以扩展至多自由度机械结构上用于解决避障难题。基本原理是把目标设定成吸引力源,而周围物体则作为排斥力中心;最终合力决定下一步前进方向。然而传统版本容易陷入局部极小值问题,因此引入虚拟弹簧或者随机扰动机制可以有效缓解这一缺陷。 另外还有混合型变体比如VFH*(Vector Field Histogram*)等专门针对特定场景做了针对性增强。 #### 3. 深度学习驱动下的端到端训练模式 近年来随着人工智能的发展,越来越多的研究者尝试借助神经网络构建更加智能化的控制系统。这类框架往往不需要显式的物理建模过程而是直接从大量样本中习得规律从而具备更强泛化能力和适应新环境的能力。 不过需要注意的是尽管DL-based approaches拥有诸多优点但也存在诸如可解释性差等问题亟待进一步探讨研究。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值