如何将 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_callback
的 sensor_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)
我正在做一些水下 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_callback
的 sensor_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)