从 bash 脚本调用 rosbag 信息

Calling rosbag info from a bash script

当您调用 ROS rosbag info abag.bag 时,您会得到类似

的结果
path:        abag.bag
version:     2.0
duration:    1:35s (95s)
start:       Aug 23 2021 03:34:46.34 (1629689686.34)
end:         Aug 23 2021 03:36:21.45 (1629689781.45)
size:        1.1 GB
messages:    952
compression: none [952/952 chunks]
types:       sensor_msgs/Image [060021388200f6f0f447d0fcd9c64743]
topics:      image_results   952 msgs    : sensor_msgs/Image

有没有办法从 bash shell 文件中调用这个程序,然后提取 一个字段(例如 messages) 将其与某物进行比较

伪代码类似于

call rosbag info and get messages
if messages== 952
then print("everything ok")
else print("some messages were skipped"

这在 bash 脚本中可行吗?

是的,你确实可以。 rosbag info 有一个标志,-k,用于提取特定字段;您还需要使用 -y 才能正常工作。因此,在您的示例中,提取消息的数量看起来像 rosbag info -y -k messages abag.bag。如果你想把所有这些都放在一个 bash 脚本中,它可能看起来像你将预期的消息数量作为命令行参数传递的地方:

expectedNum=
actualNum=$(rosbag info -y -k messages abag.bag)
if (( expectedNum==actualNum )); then
    echo "everything okay"
else
    echo "everything not okay"
fi