PX4学习笔记3: 速度控制(转载)

摘自:https://blog.csdn.net/wbzhang233/article/details/106727276/

 

PX4学习笔记3: 速度控制

 

wbzhang233 2020-06-13 07:58:28 251 收藏 2

分类专栏: 自主避障

版权

记录一下PX4在offboard板外模式下用速度控制四旋翼的过程.
参考资料如下:

  1. PX4板外模式教程
  2. youtube速度控制小实验
  3. PX4飞行模式
  4. offboard模式
  5. offboard模式控制例子
    注意:必须2Hz以上的频率发布控制消息,否则PX4则自动由offboard切会返航return模式(一直网往上飞至一定高度后返航,可由以下参数进行调整)
    在这里插入图片描述

1.mavros话题

详见: mavros话题
四旋翼的控制量主要为[x,y,z,roll,pitch,yaw,vx,vy,vz,wx,wy,wz];也就是位置和姿态以及两者的变化率共12个变量.
其中位置在mavros中包括global和local两种,global指的是经纬高LLA,通常会转化成东北天ENU,local指得是在Gazebo坐标系下的坐标和姿态(xyzw四元数表示). 通常可以使用发布local坐标的位置进行控制, 也可以使用速度控制. 话题如下:
以下为local坐标控制:
在这里插入图片描述
以下为速度控制:
在这里插入图片描述

2.youtube速度控制小实验

详见本文摘要参考链接2.
主要分为一下几步:

  • 启动PX4在Gazebo中的SITL
  • 发布位置控制消息,同时打开QGC地面站,切换到Offboard模式
  • 发布速度控制消息,停止发布位置控制消息
  • PX4飞机将以发布的速度消息飞行.
# 参考: https://www.youtube.com/watch?v=2jksI-S3ojY

## 1.发送位置
rostopic pub -r 20 /mavros/setpoint_position/local geometry_msgs/PoseStamped "header:
+ 'Tab键'+光标输入改变数字  "
## 2.切换到Offboard模式
rosrun mavros mavsys mode -c OFFBOARD
# 解锁
rosrun mavros mavsafety arm

## 3.发送速度
rostopic pub -r 20 /mavros/setpoint_velocity/cmd_vel_unstamped geometry_msgs/Twist "linear:
+ 'Tab键'+光标输入改变数字  "
### 关闭发布位置的终端,飞机将以速度消息控制飞行.

3.body frame下的速度控制

以上速度和位置控制都是在NED坐标系下的,在gazebo的SITL仿真中即为设置在gazebo坐标系的xyz方向的分量。要使用机体系下的速度控制,先给出参考:
机体系速度控制1
机体系速度控制2
body_frame_vel
机体系速度控制3
offboard_avoidance

setpoint_raw/local消息如下:
在这里插入图片描述
其中各个变量含义如下:

坐标系选择

uint8 coordinate_frame表示坐标系;
在这里插入图片描述
1和7分别表示LOCAL的北东地坐标系和offset,8和9分别表示机体坐标系和offset。

控制变量选择

uint16 type_mask 表示要控制变量的忽略码字。
在这里插入图片描述
共12位,如果要忽略多位,只需要将对应的码相加即可。
如速度控制的码字应该是111,111,000,111等于2*2048-1-8-16-32=4039。
速度控制加上偏航角控制应该是:101,111,000,111等于3015
位置控制的码字应该是111,111,111,000,等于4088.
或者参考以下问题中的写法:https://github.com/mavlink/mavros/issues/909
like this:

   while(ros::ok() && !this->manual){
        mavros_msgs::PositionTarget velocity_msg;
        velocity_msg.coordinate_frame = mavros_msgs::PositionTarget::FRAME_BODY_NED;
        velocity_msg.header.frame_id = "drone";
        velocity_msg.type_mask = mavros_msgs::PositionTarget::IGNORE_PX |
                                 mavros_msgs::PositionTarget::IGNORE_PY |
                                 mavros_msgs::PositionTarget::IGNORE_PZ |
                                 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 ;
        velocity_msg.header.stamp = ros::Time::now();

        velocity_msg.velocity.x = this->xs;
        velocity_msg.velocity.y = this->ys;
        velocity_msg.velocity.z = this->zs;

        if(this->testen){
            velocity_msg.velocity.x = 0.0;
            velocity_msg.velocity.y = -0.4;
            velocity_msg.velocity.z = 0.0;
        }

大佬还是很多。参考:
控制节点的学习案例
机体系速度的学习案例2

  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在ROS中控制PX4飞控上的舵机,你可以使用PX4的ROS接口来实现。首先,你需要在你的ROS工作空间中安装px4_ros_com软件包。你可以使用以下命令从GitHub上克隆px4_ros_com软件包: ``` git clone https://github.com/PX4/px4_ros_com.git ``` 安装完成后,进入你的工作空间并编译这个软件包。然后,你可以运行`roslaunch px4_ros_com px4_ros_com.launch`命令来启动PX4 ROS节点。这将建立与PX4飞控的通信,并将舵机控制命令传递给飞控。 在ROS中,你可以使用[mavros](https://github.com/mavlink/mavros)软件包来向PX4发送舵机控制命令。Mavros提供了一个ROS接口,使你能够通过ROS消息与PX4通信。你可以使用mavros的`mavros_msgs`中的`ActuatorControl`消息来控制舵机。通过发布一个`ActuatorControl`消息,你可以指定每个舵机的角度或速度。 例如,你可以使用以下代码来发布一个`ActuatorControl`消息,以将舵机1的角度设置为0.5弧度: ```python import rospy from mavros_msgs.msg import ActuatorControl rospy.init_node('servo_control_node') pub = rospy.Publisher('/mavros/actuator_control', ActuatorControl, queue_size=10) rate = rospy.Rate(10) # 发布频率为10Hz while not rospy.is_shutdown(): msg = ActuatorControl() msg.group_mix = 0 msg.controls = 0.5 # 设置舵机1的角度 pub.publish(msg) rate.sleep() ``` 通过运行上述代码,你可以在ROS中控制PX4飞控上的舵机。 请注意,这只是一个简单的示例,你可以根据你的需求修改`ActuatorControl`消息中的参数来控制舵机的行为。此外,确保你已经正确配置了PX4飞控和ROS系统之间的连接,以确保正常通信 。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [ROS学习笔记之——PX4开发初入门](https://blog.csdn.net/gwplovekimi/article/details/118569078)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值