播放rosbag | 暂停与重启

在写论文的时候需要从rviz中截取一帧雷达的处理结果,由于懒得导出点云,直接将播放中的rosbag暂停截图。

1. 播放

rosbag play xxxx.bag

2. 暂停 ctrl+z

3. 恢复播放

终端输入 fg + 回撤

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
ROS 2(Robot Operating System)是一个开源的机器人操作系统,主要用于构建复杂机器人系统。如果你想在 ROS2 中循环播放 rosbagROS 包含的记录的通信数据),你可以使用 `rclcpp` 和 `rclcpp_action` 的一些工具,如 `rclcpp::spin()` 和 `rclcpp::executors::SingleThreadedExecutor` 结合 `rosbag2::PlayBack`。 以下是一个简单的步骤和代码示例: 1. 首先,你需要安装 `ros2 bag play` 包,可以通过包管理器 `ros2` 命令行工具安装: ``` ros2 package update ros2 package install rosbag2_common rosbag2_msg rosbag2_node rosbag2_py ``` 2. 创建一个节点,引入所需的库: ```cpp #include <rclcpp/rclcpp.hpp> #include <rclcpp_action/client.hpp> #include <rosbag2/bag.hpp> #include <rosbag2/reader.hpp> #include <rosbag2_msgs/msg/BagInfo.hpp> ``` 3. 定义一个循环播放 rosbag 的函数: ```cpp class RosbagPlayer : public rclcpp::Node { public: RosbagPlayer(const std::string& bag_file) : node_(rclcpp::Node::make_shared("rosbag_player", bag_file)) { // 创建播放客户端 auto playback_client = rclcpp_action::create_client<rosbag2_msgs::msg::Play>(node_, "play"); while (!playback_client->wait_for_server(std::chrono::seconds(5))) { RCLCPP_INFO(node_->get_logger(), "Waiting for play action server to become available"); } // 准备播放动作 auto goal = rosbag2_msgs::msg::Play::goal(); goal.bag = bag_file; // 开始循环播放 auto future = playback_client->async_send_goal(goal); future.add_done_callback([this](rclcpp::Future<rosbag2_msgs::msg::Play::Result>&& result) { if (rclcpp::executor::is Ok(result)) { rclcpp::spin_some(node_); } else { RCLCPP_ERROR(node_->get_logger(), "Failed to send goal: %s", result.exception().message()); } }); } private: rclcpp::Node::SharedPtr node_; }; ``` 4. 在 `main()` 函数中创建并启动 RosbagPlayer: ```cpp int main(int argc, char** argv) { rclcpp::init(argc, argv); auto player = RosbagPlayer(argv); rclcpp::spin(player); rclcpp::shutdown(); return 0; } ``` 在运行程序时,传入你想要循环播放rosbag 文件名作为命令行参数,例如: ``` ./your_node_name your_rosbag_file.bag ```
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值