| 
 | 
 
 
发表于 2024-8-30 15:25:37
 4669 浏览  1 回复
                                 
 
 
[新手上路]
利用pos_controller_cascade_PID进行航线控制,无法更改速度
                                
 
prometheus问答
| 提问前请先确定以下问题:: | 
成功  | 
 
| 第一步:问题BUG描述: | 
利用pos_controller_cascade_PID进行航线控制,更改各种参数,发现无人机的速度最大是1.6,不明白什么地方限制了?  | 
 
| 第二步:PX4版本是否为Prometheus_PX4_V1.11.1分支?: | 
是 Prometheus_PX4_V1.11.1  | 
 
| 第三步:测试prometheus_px4是否正常: | 
正常  | 
 
| 第四步:Prometheus版本是否为最新master?: | 
是master版本  | 
 
| 第五步:测试Prometheus是否正常: | 
正常  | 
 
 
 
void update_command() 
{ 
    if(Command_Now.Mode != prometheus_msgs::ControlCommand::Takeoff){ 
        float pos_x[2] = {100,200}; 
        float pos_y[2] = {100,0}; 
        static int index = 0; 
        float dx = pos_x[index] - _DroneState.position[0]; 
        float dy = pos_y[index] - _DroneState.position[1]; 
        float distanceSquared = dx * dx + dy * dy; 
        float delta = 0.25; 
        if(distanceSquared < delta){ 
            index++; 
            if(index >1){ 
                index = 1; 
            } 
        } 
 
        Command_Now.Reference_State.position_ref[0] = pos_x[index]; 
        Command_Now.Reference_State.position_ref[1] = pos_y[index]; 
        Command_Now.Reference_State.position_ref[2] = Takeoff_position[2] + Takeoff_height; 
        Command_Now.Reference_State.yaw_ref         = _DroneState.attitude[2]; 
    } 
} 
 
我理解的是pos_controller_cascade_PID最大速度由位置误差和最大速度限幅决定的,但是不明白为什么怎么调整,无人机最大速度只能是1.6 
 
我知道答案
 回答被采纳将会获得 4 阿木币  已有1人回答
 
 |   
 
  扫一扫浏览分享 
 
 |  
| 
 | 
 
 
 | 
 | 
 
| 
 | 
 | 
 
 
| 
 | 
 
 楼主|
发表于 2024-8-30 15:42:23
                                 
 
 
| 
我换了航线,最大合速度还是不超过3,但是我设置的最大速度是10,误差产生的速度期望肯定是远超10的,按我的理解它应该会以设置的最大速度10朝着航线飞行一段时间,为什么它会以1.6或者很小的某个速度进行匀速飞行呢? |   
 
 
 
 |  
| 
 | 
 
 
 | 
 | 
 
| 
 | 
 | 
 
 
 
 
         
  
         
 |