如何将 sensor_msgs/FluidPressure 重新发布为 geometry_msgs/PointStamped?

How to republish sensor_msgs/FluidPressure as the geometry_msgs/PointStamped?

我正在做一些水下 UUV 凉亭模拟,想使用

hector_pose_estimation

用于融合 IMU 和流体压力传感器输入以进行姿势估计的软件包。但是当 运行 我得到 ERROR

的节点
Client [/hector_pose_estimation] wants topic /rexrov2/pressure to have datatype/md5sum [geometry_msgs/PointStamped/c63aecb41bfdfd6b7e1fac37c7cbe7bf], but our version has [sensor_msgs/FluidPressure/804dc5cea1c5306d6a2eb80b9833befe]. Dropping connection.

所以我的压力传感器有 sensor_msgs/FluidPressure 但包需要 pressure_height (geometry_msgs/PointStamped) 作为输入。任何帮助如何如何将 sensor_msgs/FluidPressure 重新发布为 geometry_msgs/PointStamped?

特纳克斯

据我所知,没有执行此直接翻译的节点。话虽这么说,从压力中获得深度有点微不足道。这可以通过等式 P=ρgh 来完成。这里:

P = Pressure in Pascals

ρ = Fluid density

g = Acceleration due to gravity

h = Depth

粗略地说,淡水的密度为 997.04 kg/m^3,盐水的密度为 1023.60 kg/m^3。地球上的加速度是 9.8 m/s^2 并且你的压力正在脱离 ros 主题。如果你有一个定义为 pressure_callbacksensor_msgs/FluidPressure 回调,它看起来像这样

def pressure_callback(msg):
    pressure = msg. fluid_pressure
    depth = pressure / (997.04 * 9.8) #This assumes fresh water

    output_msg = PointMessage()
    output_msg.z = depth
    some_publisher.publish(output_msg)