PX4无人机控制

PX4无人机控制

向话题/mavros/setpoint_raw/local发布无人机目标位置+偏航,或者目标速度+偏航。

发布目标位置+偏航:

mission.positionTarget.type_mask = 
                                    // mavros_msgs::PositionTarget::IGNORE_PX |
                                    // mavros_msgs::PositionTarget::IGNORE_PY |
                                    // mavros_msgs::PositionTarget::IGNORE_PZ |
                                    mavros_msgs::PositionTarget::IGNORE_VX |
                                    mavros_msgs::PositionTarget::IGNORE_VY |
                                    mavros_msgs::PositionTarget::IGNORE_VZ |
                                    mavros_msgs::PositionTarget::IGNORE_AFX |
                                    mavros_msgs::PositionTarget::IGNORE_AFY |
                                    mavros_msgs::PositionTarget::IGNORE_AFZ |
                                    mavros_msgs::PositionTarget::FORCE |
                                    // mavros_msgs::PositionTarget::IGNORE_YAW |
                                    mavros_msgs::PositionTarget::IGNORE_YAW_RATE;

发布目标速度+偏航:

mission.positionTarget.type_mask = 
                                    mavros_msgs::PositionTarget::IGNORE_PX |
                                    mavros_msgs::PositionTarget::IGNORE_PY |
                                    mavros_msgs::PositionTarget::IGNORE_PZ |
                                    // mavros_msgs::PositionTarget::IGNORE_VX |
                                    // mavros_msgs::PositionTarget::IGNORE_VY |
                                    // mavros_msgs::PositionTarget::IGNORE_VZ |
                                    mavros_msgs::PositionTarget::IGNORE_AFX |
                                    mavros_msgs::PositionTarget::IGNORE_AFY |
                                    mavros_msgs::PositionTarget::IGNORE_AFZ |
                                    mavros_msgs::PositionTarget::FORCE |
                                    // mavros_msgs::PositionTarget::IGNORE_YAW |
                                    mavros_msgs::PositionTarget::IGNORE_YAW_RATE;

可以选择发布的是局部坐标系:

mission.positionTarget.coordinate_frame = mavros_msgs::PositionTarget::FRAME_LOCAL_NED;

或是机体坐标系:

mission.positionTarget.coordinate_frame = mavros_msgs::PositionTarget::FRAME_BODY_NED;

但是我发现在机体系下发布目标位置会有问题,飞机飞行的位置并不是跟随机体系变化而变化的。比方说,飞机目前正在(0,0,5)这个位置,在机体系下发布目标位置(5,0,5),和将飞机偏航改变一定角度后再发布目标位置(5,0,5),飞机将前往同一个地方。

当偏航和位置或速度同时变化的时候,飞机会同时进行这二者的动作,这在局部坐标系下是没有问题的,飞机还是会前往期望的地方。但是当是在机体系下速度和偏航同时变化时,比方说,飞机目前正在(0,0,5)这个位置,偏航是0,在机体系下发布目标速度(1,0,0),以及偏航90度,飞机将会绕个小圈。

  • 2
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值