Mavros: 对 ~set_stream_rate 服务调用没有响应

创建于 2018-05-24  ·  18评论  ·  资料来源: mavlink/mavros

问题详情

我正在尝试使用 ~set_stream_rate 服务调用来提高 IMU 的更新率。 我也尝试增加和减少速率,不幸的是没有成功。

我尝试了以下方法:
在终端中: rosservice call /mavros/set_stream_rate 1 200 1 (也用 0 200 1, 0 10 1, 0 10 0 等尝试过)

在 C++ 中:

#include <mavros_msgs/StreamRate.h>

    ros::ServiceClient stream_rate_client;
    ros::NodeHandle nh;
    stream_rate_client = nh.serviceClient<mavros_msgs::StreamRate>("/mavros/set_stream_rate");

    mavros_msgs::StreamRate streamRate;
    streamRate.request.stream_id = 1;
    streamRate.request.message_rate = 200;
    streamRate.request.on_off = true;
    stream_rate_client.call(streamRate);

这些都没有用,不知道为什么。 我也不知道如何进行调试。

MAVROS 版本和平台

马夫罗斯:0.25.1
ROS:动力学
Ubuntu:16.04

自动驾驶仪类型和版本

[ ] ArduPilot
[×] PX4

版本:1.7.3

节点日志

$ rosrun mavros mavros_node _fcu_url:=tcp://127.0.0.1:5760 _system_id:=2
[ INFO] [1527166997.534725386]: FCU URL: tcp://127.0.0.1:5760
[ INFO] [1527166997.538179020]: tcp0: Server address: 127.0.0.1:5760
[ INFO] [1527166997.538583530]: GCS URL: udp://@
[ INFO] [1527166997.538851787]: udp1: Bind address: 0.0.0.0:14555
[ INFO] [1527166997.582075509]: Plugin 3dr_radio loaded
[ INFO] [1527166997.587216072]: Plugin 3dr_radio initialized
[ INFO] [1527166997.587433590]: Plugin actuator_control loaded
[ INFO] [1527166997.602908470]: Plugin actuator_control initialized
[ INFO] [1527166997.608098772]: Plugin adsb loaded
[ INFO] [1527166997.624933409]: Plugin adsb initialized
[ INFO] [1527166997.625174728]: Plugin altitude loaded
[ INFO] [1527166997.629202189]: Plugin altitude initialized
[ INFO] [1527166997.629439220]: Plugin cam_imu_sync loaded
[ INFO] [1527166997.631736889]: Plugin cam_imu_sync initialized
[ INFO] [1527166997.632005870]: Plugin command loaded
[ INFO] [1527166997.656271690]: Plugin command initialized
[ INFO] [1527166997.656518171]: Plugin debug_value loaded
[ INFO] [1527166997.679747716]: Plugin debug_value initialized
[ INFO] [1527166997.680021635]: Plugin distance_sensor loaded
[ WARN] [1527166997.684616922]: DS: plugin not configured!
[ INFO] [1527166997.684730488]: Plugin distance_sensor initialized
[ INFO] [1527166997.684972781]: Plugin fake_gps loaded
[ INFO] [1527166997.728127889]: Plugin fake_gps initialized
[ INFO] [1527166997.728480748]: Plugin ftp loaded
[ INFO] [1527166997.758929019]: Plugin ftp initialized
[ INFO] [1527166997.759219651]: Plugin global_position loaded
[ INFO] [1527166997.818296662]: Plugin global_position initialized
[ INFO] [1527166997.818588156]: Plugin hil loaded
[ INFO] [1527166997.882781780]: Plugin hil initialized
[ INFO] [1527166997.883048549]: Plugin home_position loaded
[ INFO] [1527166997.903052314]: Plugin home_position initialized
[ INFO] [1527166997.903807895]: Plugin imu loaded
[ INFO] [1527166997.933612538]: Plugin imu initialized
[ INFO] [1527166997.933850257]: Plugin local_position loaded
[ INFO] [1527166997.952751657]: Plugin local_position initialized
[ INFO] [1527166997.953008414]: Plugin manual_control loaded
[ INFO] [1527166997.968141910]: Plugin manual_control initialized
[ INFO] [1527166997.968481980]: Plugin mocap_pose_estimate loaded
[ INFO] [1527166997.984059425]: Plugin mocap_pose_estimate initialized
[ INFO] [1527166997.984304531]: Plugin obstacle_distance loaded
[ INFO] [1527166997.997733823]: Plugin obstacle_distance initialized
[ INFO] [1527166997.998059268]: Plugin odom loaded
[ INFO] [1527166998.013623175]: Plugin odom initialized
[ INFO] [1527166998.013984083]: Plugin param loaded
[ INFO] [1527166998.023299249]: Plugin param initialized
[ INFO] [1527166998.023588331]: Plugin px4flow loaded
[ INFO] [1527166998.042473344]: Plugin px4flow initialized
[ INFO] [1527166998.042727126]: Plugin rangefinder loaded
[ INFO] [1527166998.045338152]: Plugin rangefinder initialized
[ INFO] [1527166998.045632059]: Plugin rc_io loaded
[ INFO] [1527166998.062006661]: Plugin rc_io initialized
[ INFO] [1527166998.062537311]: Plugin safety_area loaded
[ INFO] [1527166998.083768132]: Plugin safety_area initialized
[ INFO] [1527166998.084033551]: Plugin setpoint_accel loaded
[ INFO] [1527166998.097458792]: Plugin setpoint_accel initialized
[ INFO] [1527166998.097776863]: Plugin setpoint_attitude loaded
[ INFO] [1527166998.135016088]: Plugin setpoint_attitude initialized
[ INFO] [1527166998.135395910]: Plugin setpoint_position loaded
[ INFO] [1527166998.199004407]: Plugin setpoint_position initialized
[ INFO] [1527166998.199288389]: Plugin setpoint_raw loaded
[ INFO] [1527166998.247947782]: Plugin setpoint_raw initialized
[ INFO] [1527166998.248232176]: Plugin setpoint_velocity loaded
[ INFO] [1527166998.276827990]: Plugin setpoint_velocity initialized
[ INFO] [1527166998.277159823]: Plugin sys_status loaded
[ INFO] [1527166998.313704869]: Plugin sys_status initialized
[ INFO] [1527166998.314003064]: Plugin sys_time loaded
[ INFO] [1527166998.325176275]: TM: Timesync mode: MAVLINK
[ INFO] [1527166998.327852553]: Plugin sys_time initialized
[ INFO] [1527166998.328095534]: Plugin vfr_hud loaded
[ INFO] [1527166998.330919928]: Plugin vfr_hud initialized
[ INFO] [1527166998.331147359]: Plugin vibration loaded
[ INFO] [1527166998.335247172]: Plugin vibration initialized
[ INFO] [1527166998.335499616]: Plugin vision_pose_estimate loaded
[ INFO] [1527166998.369932485]: Plugin vision_pose_estimate initialized
[ INFO] [1527166998.370189466]: Plugin vision_speed_estimate loaded
[ INFO] [1527166998.383793912]: Plugin vision_speed_estimate initialized
[ INFO] [1527166998.384077019]: Plugin waypoint loaded
[ INFO] [1527166998.403765289]: Plugin waypoint initialized
[ INFO] [1527166998.404032333]: Plugin wind_estimation loaded
[ INFO] [1527166998.406681323]: Plugin wind_estimation initialized
[ INFO] [1527166998.406813352]: Built-in SIMD instructions: SSE, SSE2
[ INFO] [1527166998.406874153]: Built-in MAVLink package version: 2018.5.5
[ INFO] [1527166998.406924542]: Known MAVLink dialects: common ardupilotmega ASLUAV autoquad icarous matrixpilot paparazzi slugs standard uAvionix ualberta
[ INFO] [1527166998.406979693]: MAVROS started. MY ID 2.240, TARGET ID 1.1
[ INFO] [1527166998.408225699]: IMU: Attitude quaternion IMU detected!
[ INFO] [1527166998.408474430]: IMU: High resolution IMU detected!
[ INFO] [1527166999.200899783]: CON: Got HEARTBEAT, connected. FCU: PX4 Autopilot
[ INFO] [1527166999.204518434]: IMU: High resolution IMU detected!
[ INFO] [1527166999.204972608]: IMU: Attitude quaternion IMU detected!
[ INFO] [1527167000.246101700]: VER: 1.1: Capabilities         0x00000000000024ef
[ INFO] [1527167000.246399932]: VER: 1.1: Flight software:     01060500 (00000000B9C7CD26)
[ INFO] [1527167000.246488372]: VER: 1.1: Middleware software: 01060500 (00000000B9C7CD26)
[ INFO] [1527167000.246534273]: VER: 1.1: OS software:         000000c0 (0000000000000000)
[ INFO] [1527167000.246748090]: VER: 1.1: Board hardware:      0000a4a7
[ INFO] [1527167000.246867818]: VER: 1.1: VID/PID:             0525:a4a7
[ INFO] [1527167000.246908907]: VER: 1.1: UID:                 3335511839343335
[ WARN] [1527167000.247388481]: CMD: Unexpected command 520, result 0
[ WARN] [1527167013.218527443]: PR: request param #452 timeout, retries left 2, and 1 params still missing
[ INFO] [1527167014.241870430]: WP: mission received
[ WARN] [1527167359.915573803]: CMD: Unexpected command 200, result 4
[ WARN] [1527168934.267074100]: TM: Clock skew detected (-763580720.440153122 s). Hard syncing clocks.

诊断

header: 
  seq: 3416
  stamp: 
    secs: 1527169233
    nsecs: 907997653
  frame_id: ''
status: 
  - 
    level: 0
    name: "mavros: FCU connection"
    message: "connected"
    hardware_id: "tcp://127.0.0.1:5760"
    values: 
      - 
        key: "Received packets:"
        value: "60196"
      - 
        key: "Dropped packets:"
        value: "0"
      - 
        key: "Buffer overruns:"
        value: "0"
      - 
        key: "Parse errors:"
        value: "0"
      - 
        key: "Rx sequence number:"
        value: "159"
      - 
        key: "Tx sequence number:"
        value: "39"
      - 
        key: "Rx total bytes:"
        value: "147758546"
      - 
        key: "Tx total bytes:"
        value: "580048"
      - 
        key: "Rx speed:"
        value: "100808.000000"
      - 
        key: "Tx speed:"
        value: "390.000000"
  - 
    level: 0
    name: "mavros: GPS"
    message: "3D fix"
    hardware_id: "tcp://127.0.0.1:5760"
    values: 
      - 
        key: "Satellites visible"
        value: "8"
      - 
        key: "Fix type"
        value: "3"
      - 
        key: "EPH (m)"
        value: "1.24"
      - 
        key: "EPV (m)"
        value: "2.39"
  - 
    level: 0
    name: "mavros: Heartbeat"
    message: "Normal"
    hardware_id: "tcp://127.0.0.1:5760"
    values: 
      - 
        key: "Heartbeats since startup"
        value: "2229"
      - 
        key: "Frequency (Hz)"
        value: "0.962947"
      - 
        key: "Vehicle type"
        value: "Quadrotor"
      - 
        key: "Autopilot type"
        value: "PX4 Autopilot"
      - 
        key: "Mode"
        value: "AUTO.RTL"
      - 
        key: "System status"
        value: "Standby"
  - 
    level: 0
    name: "mavros: System"
    message: "Normal"
    hardware_id: "tcp://127.0.0.1:5760"
    values: 
      - 
        key: "Sensor present"
        value: "0x00000000"
      - 
        key: "Sensor enabled"
        value: "0x00000000"
      - 
        key: "Sensor helth"
        value: "0x00000000"
      - 
        key: "CPU Load (%)"
        value: "77.8"
      - 
        key: "Drop rate (%)"
        value: "0.0"
      - 
        key: "Errors comm"
        value: "0"
      - 
        key: "Errors count #1"
        value: "0"
      - 
        key: "Errors count #2"
        value: "0"
      - 
        key: "Errors count #3"
        value: "0"
      - 
        key: "Errors count #4"
        value: "0"
  - 
    level: 0
    name: "mavros: Battery"
    message: "Normal"
    hardware_id: "tcp://127.0.0.1:5760"
    values: 
      - 
        key: "Voltage"
        value: "17.91"
      - 
        key: "Current"
        value: "0.0"
      - 
        key: "Remaining"
        value: "100.0"
---

查身份证

WARNING: mavros/target_system_id not set. Used default value: 1
WARNING: mavros/target_component_id not set. Used default value: 1
NOTE: Target parameters may be unset, but that may be result of incorrect --mavros-ns option.Double check results!
OK. I got messages from 1:1.

---
Received 9307 messages, from 1 addresses
sys:comp   list of messages
  1:1     0, 1, 2, 266, 140, 141, 147, 24, 30, 31, 32, 33, 36, 74, 76, 83, 85, 87, 230, 231, 105, 111, 241, 242, 245

PX4 question

所有18条评论

PX4 不支持该消息。 阅读有关如何配置消息速率的 PX4 固件文档。

PX4 支持 MAV_CMD_GET_MESSAGE_INTERVAL 和 MAV_CMD_SET_MESSAGE_INTERVAL。

https://mavlink.io/en/messages/common.html#MAV_CMD_GET_MESSAGE_INTERVAL

是的,但是 mavros 尚不支持该 iface(需要新的 rosapi 调用)。

@vooon@dagar感谢您为我指明正确的方向。 您能否建议一种将 MAV_CMD_SET_MESSAGE_INTERVAL mavlink 命令发送到 PX4 的方法?

我试过rosrun mavros mavcmd int 511 105 10000 100 1 1 1 1 ,但没有成功。 数字代表以下内容:
511: https :
105: https :
1 1 1 1: 必须填充一些东西,否则得到mavcmd int: error: too few arguments

还通过 PX4 mavlink stream -u 14556 -s HIGHRES_IMU -r 100的 mavlink 模块提高了 IMU 率。 当我用rostopic hz /mavros/imu/data检查时,汇率仍然保持 50 。 在 mavros 之外需要做什么才能更快地发布/mavros/imu/data主题?

也试试命令长, mavcmd long 511 105 1000 0 0 0 0 0 0

感谢您的快速回复@vooon

尝试了rosrun mavros mavcmd long 511 105 1000 0 0 0 0 0 ,不幸的是价格仍然是 50。

什么触发 mavros 在/mavros/imu/data ? 我发现数据在这里发布在函数handle_attitude_quaternion ,但我还没有找到触发该函数的原因。

@szebedy Aero 正在通过 UDP 传输数据,对吗? 它使用的端口是什么? 你为什么要通过 TCP 插入呢? mavlink stream -u 14556 -s HIGHRES_IMU -r 100仅在 Aero 实际通过该 UDP 端口进行流式传输时才有效。

什么触发 mavros 在/mavros/imu/data ? 我发现数据在这里发布在函数handle_attitude_quaternion ,但我还没有找到触发该函数的原因。

当 MAVROS 从流中收到HIGHRES_IMU msg 时触发。

@TSC21非常好的评论,Aero Flight Controller 实际上是通过串行端口 (/dev/ttyS1) 将数据流式传输到计算板。 但是,为了使事情“更容易”,计算板有一个代理,它将串行端口公开为网络套接字(端口 5760)。

因此我尝试了mavlink stream -d /dev/ttyS1 -s HIGHRES_IMU -r 100 ,但不幸的是流率仍然是 50 :(

在 PX4 上, data_raw应该与 HIGHRES_IMU 具有相同的速率,但是data结合了ATTITUDE_QUATERNION和 hr-imu,所以也尝试改变它的速率。

计算板有一个代理,它将串行端口公开为网络套接字(端口 5760)。

那么问题可能出在代理上。 我会保证瓶颈不存在。

非常感谢@vooon (和@TSC21),成功了!!! 所以目前的解决方案是:

  1. 在 QGC Mavlink 控制台中执行以下操作:
mavlink stream -d /dev/ttyS1 -s HIGHRES_IMU -r 100
mavlink stream -d /dev/ttyS1 -s ATTITUDE_QUATERNION -r 100
  1. 在一个终端
rosrun mavros mavcmd long 511 105 10000 0 0 0 0 0
rosrun mavros mavcmd long 511 31 10000 0 0 0 0 0

是否可以在 ROS 启动文件(或 C++ ROS 节点)中包含这两个命令?

是否可以在 ROS 启动文件(或 C++ ROS 节点)中包含这两个命令?

就放:

mavlink stream -d /dev/ttyS1 -s HIGHRES_IMU -r 100

或者

mavlink stream -d /dev/ttyS1 -s ATTITUDE_QUATERNION -r 100

https://github.com/PX4/Firmware/blob/master/ROMFS/px4fmu_common/init.d/4070_aerofc 中,重新编程您的 Aero 板并重新启动它。 而且您甚至不需要使用 ROS 命令。
到此为止。

也只是一句话:
如果你想从mavros/imu/data_raw获取数据,你只需要增加HIGHRES_IMU的流。 如果你想从mavros/imu/data (过滤态度)中获取,你只需从ATTITUDE_QUATERNION 。 两者都不需要增加(因为您会无缘无故地增加带宽使用量)。 您最初只是从错误的主题中获取数据。 如果您发出rostopic hz /mavros/imu/data_raw ,您会看到数据速率的增加。

就放:

mavlink 流 -d /dev/ttyS1 -s HIGHRES_IMU -r 100

或者

mavlink 流 -d /dev/ttyS1 -s ATTITUDE_QUATERNION -r 100

https://github.com/PX4/Firmware/blob/master/ROMFS/px4fmu_common/init.d/4070_aerofc 中,重新编程您的 Aero 板并重新启动它。 而且您甚至不需要使用 ROS 命令。
到此为止。

@TSC21出于某种原因,这没有任何影响,知道为什么吗? 我将mavlink stream -d /dev/ttyS1 -s ATTITUDE_QUATERNION -r 100插入到https://github.com/PX4/Firmware/blob/master/ROMFS/px4fmu_common/init.d/4070_aerofc的末尾,用make aerofc-v1_default构建,然后上传make aerofc-v1_default upload 。 上传完成,我重新启动但mavros/imu/data的速率保持 50。

@TSC21 aero 没有extras.txt脚本功能? Pixhawk 可以从 SD 卡执行 extras.txt 脚本,允许设置流。

@TSC21出于某种原因,这没有任何影响,知道为什么吗? 我将 mavlink stream -d /dev/ttyS1 -s ATTITUDE_QUATERNION -r 100 插入到https://github.com/PX4/Firmware/blob/master/ROMFS/px4fmu_common/init.d/4070_aerofc的末尾,使用 make aerofc 构建-v1_default,然后用 make aerofc-v1_default 上传。 上传完成,我重新启动,但 mavros/imu/data 的速率保持 50。

也许它被这一行覆盖了: https :

我目前的工作解决方案是将configure_stream("ATTITUDE_QUATERNION", 50.0f);替换configure_stream("ATTITUDE_QUATERNION", 100.0f); ,然后构建和上传。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

mohand150 picture mohand150  ·  5评论

shening picture shening  ·  10评论

fionachui picture fionachui  ·  9评论

zhahaoyu picture zhahaoyu  ·  12评论

y22ma picture y22ma  ·  7评论