鱼香ROS社区
    • 版块
    • 最新
    • 未解决
    • 已解决
    • 群组
    • 注册
    • 登录
    紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
    提问前必看的发帖注意事项: 社区问答规则(小鱼个人)更新 | 高质量帖子发布指南

    如何入门无人机系统研究(1):PX4-Gazebo-ROS2基本框架介绍

    已定时 已固定 已锁定 已移动
    无人机
    px4 gazebo ros2
    3
    3
    2.8k
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • ba1StaB
      ba1Sta
      最后由 ba1Sta 编辑

      如何入门无人机系统研究(1):PX4-Gazebo-ROS2基本框架介绍
      如何入门无人机系统研究(2):PX4 SITL simulation基本框架介绍

      相信很多对无人机相关方向感兴趣或将要从事相关研究的朋友们在真正DIY一个自己的无人机之前,需要对其进行初步的仿真。PX4-Gazebo-ROS2是一个自由度比较高的框架,可以帮助大家实现无人机飞控的二次开发和仿真。

      目前,采用ROS1的无人机控制的相关文档与应用在github以及国内社区中有很多的资料,但针对ROS2的中文文档较少,且新版的PX4固件已经全面支持了ROS2的通讯。这里主要为了方便大家使用ROS2进行无人机相关的研究和实验,我结合自己的使用经验编写了这部分的介绍,删繁就简,从自主飞行无人机研究者的角度直接介绍曾经也困扰过自己的核心问题。通过应用方法介绍来帮助大家动手实践将是本文的关键,具体调试中遇到的问题将在后续提出解决方案。

      该框架的基本组成部分PX4,Gazebo与ROS2网上不乏相关的资料,遇到的问题除了可以直接在文末提问,还可以查阅PX4关于相关主题的文档PX4-SITL以及PX4-Offboard control。对于大多数朋友来说,上手应用前需要得到解答的核心问题是:PX4-Gazebo-ROS2是如何交互的?如何对PX4进行二次开发?以及如何针对不同的实验需求开发对应的外部无人机控制节点(off-board control)?下面将从这三个核心问题展开本话题的主要内容。相信在掌握这部分的知识后大家对无人机仿真会拥有更加深刻的认识。

      A. PX4-Gazebo-ROS2交互方式
      365e0044-7355-4c95-a552-e5ebb58956ba-image.png
      PX4考虑了高级控制功能所需的数据交互,通过client将PX4系统中的数据接口暴露出来供大家收集无人机状态信息以及进行外部控制(off-board control)。从官方的图中可以看到,client包含在PX4的系统内,在完成后续的环境配置流程后PX4 SITL时(make px4_sitl_rtps gazebo)会自动启动client,之后打开一个新的命令行窗口,一行简单的代码就可以部署自己的agent:micrortps_agent -t UDP。命令行显示如下即agent部署成功。

      --- MicroRTPS Agent ---
      [   micrortps_agent   ]	Starting link...
      [   micrortps_agent   ]	UDP transport: ip address: 127.0.0.1; recv port: 2020; send port: 2019
      [ micrortps_transport ]	UDP transport: Trying to connect...
      [ micrortps_transport ]	UDP transport: Connected to server!
      
      ---   Subscribers   ---
      - DebugArray subscriber started
      - DebugKeyValue subscriber started
      - DebugValue subscriber started
      - DebugVect subscriber started
      - OffboardControlMode subscriber started
      - OpticalFlow subscriber started
      - PositionSetpoint subscriber started
      - PositionSetpointTriplet subscriber started
      - TelemetryStatus subscriber started
      - Timesync subscriber started
      - VehicleCommand subscriber started
      - VehicleLocalPositionSetpoint subscriber started
      - VehicleTrajectoryWaypoint subscriber started
      - OnboardComputerStatus subscriber started
      - TrajectoryBezier subscriber started
      - VehicleTrajectoryBezier subscriber started
      - TrajectorySetpoint subscriber started
      - VehicleMocapOdometry subscriber started
      - VehicleVisualOdometry subscriber started
      -----------------------
      
      ----   Publishers  ----
      - Timesync publishers started
      - TrajectoryWaypoint publisher started
      - VehicleControlMode publisher started
      - VehicleOdometry publisher started
      - VehicleStatus publisher started
      - CollisionConstraints publisher started
      - TimesyncStatus publisher started
      - SensorCombined publisher started
      - VehicleTrajectoryWaypointDesired publisher started
      -----------------------
      

      完成agent启动后,打开一个新的命令行窗口,查看Topic(ros2 topic list -t)就可以发现下图中的所有内容。

      /clock
      /fmu/collision_constraints/out
      /fmu/debug_array/in
      /fmu/debug_key_value/in
      /fmu/debug_value/in
      /fmu/debug_vect/in
      /fmu/offboard_control_mode/in
      /fmu/onboard_computer_status/in
      /fmu/optical_flow/in
      /fmu/position_setpoint/in
      /fmu/position_setpoint_triplet/in
      /fmu/sensor_combined/out
      /fmu/telemetry_status/in
      /fmu/timesync/in
      /fmu/timesync/out
      /fmu/trajectory_bezier/in
      /fmu/trajectory_setpoint/in
      /fmu/trajectory_waypoint/out
      /fmu/vehicle_command/in
      /fmu/vehicle_control_mode/out
      /fmu/vehicle_local_position_setpoint/in
      /fmu/vehicle_mocap_odometry/in
      /fmu/vehicle_odometry/out
      /fmu/vehicle_status/out
      /fmu/vehicle_trajectory_bezier/in
      /fmu/vehicle_trajectory_waypoint/in
      /fmu/vehicle_trajectory_waypoint_desired/out
      /fmu/vehicle_visual_odometry/in
      /parameter_events
      /performance_metrics
      /rosout
      /timesync_status
      

      其中topic名称中的in/out,代表了PX4系统是订阅该topic还是发布该topic(/in: 用户publish, PX4 subscribe; /out: PX4 publish, 用户subscribe)。一目了然。此时,对于需要进行无人机相关研究的同学已经完事具备只欠东风了,关于如何借东风(创建ROS2节点订阅与发布topic),鱼哥的课程给出了详细的讲解,欢迎大家查阅鱼香ROS系列课程与社区ROS2板块。

      而大家最为关心的问题就变成了如何利用这些Topic开展相关的研究和实验工作。
      2. PX4飞控二次开发流程
      核心问题:如何解除危险姿态约束?
      3. off-board control 案例

      小鱼小 1 条回复 最后回复 回复 引用 2
      • 小鱼小
        小鱼 技术大佬 @ba1Sta
        最后由 编辑

        @ba1Sta 求更新,求更新

        新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

        1 条回复 最后回复 回复 引用 0
        • 16287993151
          早点睡晚安吧
          最后由 编辑

          @ba1Sta 在 如何入门无人机系统研究(1):PX4-Gazebo-ROS2基本框架介绍 中说:

          (ros2 topic list -t)就可以发现下

          vscode 使用 px4_msgs 找不到 头文件路径 怎么处理呢 ?

          1 条回复 最后回复 回复 引用 0
          • 第一个帖子
            最后一个帖子
          皖ICP备16016415号-7
          Powered by NodeBB | 鱼香ROS