< >
Home » PX4与仿真入门教程 » PX4与仿真入门教程-dronedoc-使用游戏手柄操作无人机

PX4与仿真入门教程-dronedoc-使用游戏手柄操作无人机

PX4与仿真入门教程-dronedoc-使用游戏手柄操作无人机

说明:

  • 本页介绍如何使用游戏手柄(操纵杆)和 mavros_extras 包的 mavteleop 节点操作无人机。

步骤:

  • 安装xbox360手柄,参考教程

  • 启动joy_node

  • joy_node 是包含在joy 包中的一个节点,它读取游戏手柄输入并发布sensor_msgs/Joy 类型的消息。

  • 要使用它,请连接您的游戏手柄并运行以下命令

  • 新终端,启动roscore

roscore
  • 新终端,启动joy_node
rosrun joy joy_node
  • 如果节点运行成功,导航游戏手柄将向 /joy 主题发布类似于以下内容的消息:
  • 查看话题
rostopic echo /joy
  • 内容如下:
header:
seq: 69
stamp:
    secs: 1544540912
    nsecs: 248934345
frame_id: ''
axes: [-0.0, -0.0, 0.0, 0.0, 0.0, 0.0]
buttons: [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
---
header:
seq: 70
stamp:
    secs: 1544540912
    nsecs: 312954596
frame_id: ''
axes: [-0.0, -0.0, 0.0, 0.0, 0.0, 0.0]
buttons: [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
---
  • 启动 mavteleop 节点
  • mavteleop 节点通过将游戏手柄输入转换为无人机控制输入并将它们发布到 setpoint_ * 主题(setpoint_velocity、setpoint_attitude、setpoint_position 等)来操纵无人机。
  • 由于您可以根据给定的参数更改操作方法,因此这次我们将提供 -vel 选项来控制无人机的速度。
rosrun mavros_extras mavteleop -vel
  • 除了 -vel 选项之外,还有 -att 和 -pos 选项,它们分别是操纵姿势和位置的模式。
  • 目前的参数配置,xbox360手柄和ps手柄通用

创建参数设置文件

  • 检查游戏手柄映射
  • 调用joy_node 节点会将操纵杆输入发布到/joy 主题,如启动joy_node 中所述。
  • 在发布的消息中,轴是棒输入,按钮是按钮输入。 请注意,每个索引都从 0 开始。
  • 您可以在查看 /joy 主题内容的同时操作游戏手柄来查看游戏手柄映射。
  • 游戏手柄硬件(按钮、摇杆等)与操作系统识别的按钮 ID 之间的对应关系称为映射。
  • 创建一个 YAML 文件
  • 在ROS中,可以使用YAML文件批量加载和保存参数(参考)。
  • 这一次,我们将使用这种机制来加载与游戏手柄映射相关的所有参数。
  • 以下是包含 Logitech F310 参数的文件。
  • 这个文件中写入的内容保存为ROS参数,被mavteleop节点引用。
  • 更改axes_map 和button_map 部分以匹配您的游戏手柄的映射。
  • 也可以通过改变axis_scale来改变摇杆操作量和无人机移动速度的对应关系。
  • f310_joy.yaml内容如下:
# Joystic configuration for Logitech F310 gamepad
axes_map:
  roll: 3
  pitch: 2
  yaw: 0
  throttle: 1
axes_scale:
  roll: 0.5
  pitch: 0.5
  yaw: 0.5
  throttle: 0.5
button_map:
  takeoff: 0
  land: 1
  enable: 2
  • 加载参数
  • 使用以下命令加载参数。
rosparam load ~/dronedoc_ws/src/px4_sim_pkg/config/f310_joy.yaml mavteleop
  • rosparam load 作为文件命名空间写入。 命名空间可以省略。

测试:

  • 新开终端,启动PX4 SITL仿真
cd ~/tools/dronedoc/
source load_environment.sh
roslaunch px4_sim_pkg mymodel_sitl_tf.launch
  • 新开终端,运行手柄
rosrun joy joy_node _autorepeat_rate:=5
  • 新开终端,运行mavteleop
rosparam load ~/dronedoc_ws/src/px4_sim_pkg/config/f310_joy.yaml mavteleop
rosrun mavros_extras mavteleop -vel
  • 在启动PX4 SITL仿真的终端下,执行起飞
commander takeoff
  • 为了能够从游戏手柄操作无人机,必须处于OFFBOARD模式,因此请起飞然后更改模式。
  • 新开终端,设置为OFFBOARD模式
rosrun mavros mavsys mode -c OFFBOARD
  • 您必须已经有关于 setpoint_ * 主题的消息才能更改为 OFFBOARD 模式。 在这种情况下,mavteleop 节点已经向 /mavros/setpoint_velocity/cmd_vel 主题发布了一条消息,因此您可以更改模式。 如果您无法在自己的节点上更改为 OFFBOARD 模式,请确保在 setpoint_ * 主题上发布消息。

  • 如果您操作游戏手柄,则无人机应如下移动。

请输入图片描述

  • 左边摇杆,左右控制左右旋转,前后控制升降
  • 右边摇杆,左右控制左右飞行,前后控制前后飞行

利用launch启动

  • 您可以在启动 joy_node 和 mavteleop 节点的同时使用 Launch 文件设置参数。
  • 使用 mavteleop 节点的 Launch 文件mavros_teleop.launch如下所示。
<launch>
  <arg name="teleop_args" default="-vel" />

  <node pkg="joy" type="joy_node" name="joy" required="True">
    <param name="autorepeat_rate" value="5" /> <!-- Minimal update rate, Hz -->
  </node>

  <node pkg="mavros_extras" type="mavteleop" name="mavteleop" args="$(arg teleop_args)" required="True" output="screen">
    <rosparam command="load" file="$(find px4_sim_pkg)/config/f310_joy.yaml" />
  </node>
</launch>
  • 位置放在px4_sim_pkg/launch/teleop/mavros_teleop.launch

  • 在 mavros_teleop.launch 中,描述游戏手柄映射的文件 (f310_joy.yaml) 作为带有 rosparam 标签的 ROS 参数加载

  • 新开终端,启动仿真

cd ~/tools/dronedoc/
source load_environment.sh
roslaunch px4_sim_pkg mymodel_sitl_tf.launch
  • 新开终端,启动控制
cd ~/tools/dronedoc/
source load_environment.sh
roslaunch px4_sim_pkg mavros_teleop.launch
  • 在启动仿真的终端,执行起飞
commander takeoff
  • 新开终端,设置模式
rosrun mavros mavsys mode -c OFFBOARD

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: px4与仿真入门教程