【发布时间】:2022-12-12 05:10:22
【问题描述】:
我在 MSI GF66 上的 Ubuntu 20.04(内核版本 5.15.0-53-generic)上使用 ROS Noetic,在分析记录的 rosbag 时遇到了一个奇怪的问题。
我必须通过 Simulink 模型以 10 Hz 的速度向 Turtlebot 的 /cmd_vel 主题发布一些消息,该 Turtlebot 在 Gazebo 中移动并记录 /odom 和 /cmd_vel 主题。在分析记录的包时,我发现了一个奇怪的现象:每隔一段时间,两个连续的时间戳完全相等,即使主题的两个对应消息的值不相等(它同时适用于/odom和@987654326 @).
我在 Matlab 中使用以下脚本从包中提取信息:
bagSelect = rosbag('BagPubSimulink.bag');
odomBag = select(bagSelect, 'Time', [bagSelect.StartTime bagSelect.EndTime], 'Topic', '/odom');
odomStructs = readMessages(odomBag, 'DataFormat','struct');
odomTime = odomBag.MessageList.Time;
然后,我在odomStructs 上循环以提取我需要的消息,比方说odomX。
出现问题时,用两个瞬间k和k + 1:
odomTime(k : k + 1) = {149.674000000000; 149.674000000000}
odomX(k : k + 1) = {-0.790906331505904; -0.787962666465643}`
我注意到当考虑的主题具有较高的发布频率时,这个问题在记录包中更频繁地发生,例如如果我记录/clock话题,这个连续时间戳相等的问题被放大,可以持续超过两个连续时间戳。
你能帮我解决这个问题吗?
为了安装 ROS,我按照 https://emanual.robotis.com/docs/en/platform/turtlebot3/quick-start/ 上的说明进行操作,直到第 1.1.5 段。
实际上,我不得不从同一页面中链接的视频中添加一些代码行,因为它们没有写在那里。
如果有什么不清楚的地方以及我是否没有使用正确的措辞,我很抱歉,但我是 Ubuntu 和 ROS 的新手,我还有很多东西要学。
请告诉我是否必须提供更多详细信息才能制定解决方案。
编辑
问题不是因为重复的时间戳属于我记录的两个主题的两条消息。其实这是变量bagSelect的MessageList:
Time Topic MessageType FileOffset
99.3160000000000 '/cmd_vel' 'geometry_msgs/Twist' 402403
99.3170000000000 '/odom' 'nav_msgs/Odometry' 402497
99.3270000000000 '/odom' 'nav_msgs/Odometry' 403261
99.3690000000000 '/odom' 'nav_msgs/Odometry' 404025
99.4150000000000 '/cmd_vel' 'geometry_msgs/Twist' 404789
99.4170000000000 '/odom' 'nav_msgs/Odometry' 404883
99.4610000000000 '/odom' 'nav_msgs/Odometry' 405647
99.4610000000000 '/odom' 'nav_msgs/Odometry' 406411
99.5050000000000 '/odom' 'nav_msgs/Odometry' 407175
99.5160000000000 '/cmd_vel' 'geometry_msgs/Twist' 407939
99.5270000000000 '/odom' 'nav_msgs/Odometry' 408033
99.5730000000000 '/odom' 'nav_msgs/Odometry' 408797
99.6160000000000 '/cmd_vel' 'geometry_msgs/Twist' 409561
99.6170000000000 '/odom' 'nav_msgs/Odometry' 409655
99.6650000000000 '/odom' 'nav_msgs/Odometry' 410419
99.6650000000000 '/odom' 'nav_msgs/Odometry' 411183
99.7120000000000 '/odom' 'nav_msgs/Odometry' 411947
99.7150000000000 '/cmd_vel' 'geometry_msgs/Twist' 412711
有趣的是,/odom 是这个包中唯一遇到时间戳重复问题的主题。因此,该问题似乎不影响我自己发布的主题。
事实上,我已经尝试记录 /clock 主题,只有 Turtlebot 保持静止在 Gazebo 世界中,而在 MessageList 中,我得到一堆相同的时间戳,指的是不同的时间瞬间,这意味着消息/clock 主题正确地彼此不同。
【问题讨论】:
标签: matlab ros gazebo-simu