首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >[ROS2]数据回放伴侣Rviz+plotjuggler

[ROS2]数据回放伴侣Rviz+plotjuggler

原创
作者头像
首飞
发布于 2022-05-01 14:43:12
发布于 2022-05-01 14:43:12
1.5K0
举报
文章被收录于专栏:ROS2ROS2

Plotjuggler简介

PlotJuggler是一个类似于rqt_plot的基于Qt的数据可视化工具。但PlotJuggler拥有更强大和好用的功能。你可以导入文本文件让它显示文本文件中的数据。你也可以导入ros的bag包,它能自动解析bag包中的数据。并可以回放bag包的数据,然后用Rviz来显示数据。PlotJuggler的功能有很多,这里只介绍几种我常用的功能。应该足以应付日常的机器人开发调试工作。

Plotjuggler官方网址:

https://www.plotjuggler.io/

github地址:

https://github.com/facontidavide/PlotJuggler

安装Plotjuggler

注意一下,如果是配合ROS1来使用,推荐安装PlotJuggler 2.X.X,如果是配合ROS2来使用,则推荐安装PlotJuggler 3.X.X

基于二进制AppImage文件安装

可以在二进制文件下载网页直接下载。

下载网页:https://github.com/facontidavide/PlotJuggler/releases

文件下载好后需要给文件增加执行权限,然后双击即可打开使用。

ROS二进制文件安装(推荐)

使用下面的命令:

代码语言:txt
AI代码解释
复制
sudo apt install ros-${ROS_DISTRO}-plotjuggler-ros

运行Plotjuggler

对于ROS1

代码语言:txt
AI代码解释
复制
rosrun plotjuggler plotjuggler

对于ROS2

代码语言:txt
AI代码解释
复制
ros2 run plotjuggler plotjuggler

升级新版本时也可以使用该命令

代码语言:c++
AI代码解释
复制
sudo apt-get update
sudo apt install ros-${ROS_DISTRO}-plotjuggler-ros

源码安装

用这种方式的话,你可能是想对Plotjuggler的代码进行修改。源码编译分两种情况,与ROS无关的源码编译需要与ROS联合使用的源码编译

如果拉取github代码很慢,可尝试使用github下载加速工具https://ghproxy.com/

  • 与ROS无关的源码编译

克隆仓库

代码语言:txt
AI代码解释
复制
git clone https://github.com/facontidavide/PlotJuggler.git

安装编译前的依赖

代码语言:txt
AI代码解释
复制
sudo apt -y install qtbase5-dev libqt5svg5-dev libqt5websockets5-dev libqt5opengl5-dev libqt5x11extras5-dev libprotoc-dev

执行编译

代码语言:txt
AI代码解释
复制
 mkdir build; cd build
 cmake ..
 make
 sudo make install

注意:使用该方式编译是没有ROS相关的插件的。

  • 需要与ROS联合使用的源码编译

对于ROS1

  1. 建立工作空间并拉取代码
代码语言:txt
AI代码解释
复制
 mkdir -p ~/ws_plotjuggler/src
 cd ~/ws_plotjuggler/src
 git clone https://ghproxy.com/https://github.com/PlotJuggler/plotjuggler_msgs.git
 git clone https://ghproxy.com/https://github.com/facontidavide/PlotJuggler.git
 git clone https://ghproxy.com/https://github.com/PlotJuggler/plotjuggler-ros-plugins.git
  1. 解决依赖并编译
代码语言:txt
AI代码解释
复制
cd ~/ws_plotjuggler
rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y
catkin_make
  1. 启动Plotjuggler
代码语言:txt
AI代码解释
复制
source devel/setup.bash
roslaunch plotjuggler_ros plotjuggler.launch

对于ROS2 Galactic

  1. 建立工作空间并拉取代码
代码语言:txt
AI代码解释
复制
 mkdir -p ~/ws_plotjuggler/src
 cd ~/ws_plotjuggler/src
 git clone https://ghproxy.com/https://github.com/PlotJuggler/plotjuggler_msgs.git -b ros2
 git clone https://ghproxy.com/https://github.com/facontidavide/PlotJuggler.git
 git clone https://ghproxy.com/https://github.com/PlotJuggler/plotjuggler-ros-plugins.git -b galactic
  1. 解决依赖并编译
代码语言:txt
AI代码解释
复制
cd ~/ws_plotjuggler
rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y
colcon build
  1. 启动Plotjuggler
代码语言:txt
AI代码解释
复制
source install/setup.bash
ros2 run plotjuggler plotjuggler

用Plotjuggler显示机器人路径

保存机器人轨迹为CSV文件

使用下面的示例代码来存储机器人的位置。存储其他数据也可以用类似的方法。

代码语言:c++
AI代码解释
复制
#include <fstream>
#include <ios>
#include <iostream>
#include <string>
#include <vector>

struct Pose
{
    double x;
    double y;
}

void saveCvsFile(std::string file_name, std::vector<Pose> path)
{
    std::ofstream outfile;
    outfile.open(file_name.c_str(), std::ios::trunc);
    outfile << "x"
        << ","
        << "y"
        << ","
        << "yaw"
        << ","
        << "num" << std::endl;
    int num_count = 0;
    for (int i = 0; i < path->size(); ++i)
    {
        outfile << path->at(i).x << "," << path->at(i).y << ","  
            << path->at(i).yaw << "," << num_count << std::endl;
        num_count++;
    }
    outfile.close();
}

Plotjuggler显示CSV文件路径

打开Plotjuggler,选中Data加载CSV文件。

选择num作为x轴

显示ROS bag中的数据

录制bag的命令

代码语言:c++
AI代码解释
复制
ros2 bag record -o bagname 话题名称

示例:

代码语言:c++
AI代码解释
复制
ros2 bag record -o turtlebot /turtle1/cmd_vel /turtle1/pose

Plotguggler加载ROS2 bag

这里以加载ROS2记录的bag为例。对于ROS1 bag,操作过程也是类似的。

ros bag中的数据是按时间顺序记录的,所以在Plotguggler中可以随意拖动进度条查看不同时间点的数据内容。这个功能对调试来说太方便了。

订阅ROS话题

点击下面的是start按钮开始订阅话题数据,点击stop结束话题订阅。然后左下方就能看到已经记录好的数据了。

Plotguggler回放ROS2 bag,Rviz显示数据

目前该功能在ROS2环境中还是有问题。Plotguggler的github中已经开了相关的Issue,但作者似乎修改的不彻底。仍然有崩溃的问题。Plotguggler 2.x.x的版本在ROS1环境下亲测可以正常使用。拖动进度条,可按任意节奏播放记录的话题数据。

Issue网址:

Segmentation Fault when trying to topic Re-Publisher

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
[ROS2]下载Navigation2源码来学习
注意:链接中的https://ghproxy.com/ 为使用代理下载github代码。
首飞
2022/04/24
6480
[ROS2]下载Navigation2源码来学习
webots和ros2笔记02-启程
看完01-资料篇https://zhangrelay.blog.csdn.net/article/details/112670542。
zhangrelay
2021/03/03
8900
​[ROS2]源码安装turtlebot3用于调试(简易版)
注意:链接中的https://ghproxy.com/ 为使用代理下载github代码。
首飞
2022/04/13
5820
​[ROS2]源码安装turtlebot3用于调试(简易版)
机器人如何使用cartographer进行slam定位建图同时使用navigation实现导航???
现有大部分资料都是使用cartographer先进行环境地图构建,然后保存地图后,再使用其导航。故学生有如下提问:
zhangrelay
2021/03/03
2.5K0
Webots和ROS2使用说明(部分翻译)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
zhangrelay
2019/09/18
1.7K0
Webots和ROS2使用说明(部分翻译)
ROS2、slam_toolbox、Navigation2、Gazebo(转)
Slam Toolbox软件包基于LaserScan消息的形式组合来自激光测距仪的信息,并从odom-> base链接中进行了TF转换,从而创建了空间的二维地图。该软件包将允许完全序列化重新加载的SLAM地图的数据和姿态图,用于持续建图、定位,合并或进行其他操作。允许SLAM Toolbox在同步(即,处理所有有效的传感器测量,无论是否滞后)和异步(即,在可能的情况下处理有效的传感器测量)模式下运行。
zhangrelay
2020/03/09
2.8K0
ROS2、slam_toolbox、Navigation2、Gazebo(转)
Github项目推荐 | PlotJuggler:时序数据可视化工具
PlotJuggler是一款值得好好享受的时间序列可视化工具,https://www.plotjuggler.io
AI研习社
2019/03/14
7.2K0
Github项目推荐 | PlotJuggler:时序数据可视化工具
ROS2中的行为树 BehaviorTree
BehaviorTree.CPP是一个开源的C++行为树库。在游戏领域,行为树已经比较流行了。主要用于维护游戏角色的各种动作和状态。但在机器人领域还很少使用的。Navigation2中引入了行为树来组织机器人的工作流程和动作执行。
首飞
2022/06/26
3.7K0
ROS2中的行为树 BehaviorTree
ROS机器人程序设计(原书第2版)及完整可运行例子仿真demo代码
https://github.com/AaronMR/Learning_ROS_for_Robotics_Programming_2nd_edition
CreateAMind
2018/07/24
1.4K0
ROS机器人程序设计(原书第2版)及完整可运行例子仿真demo代码
ROS机器人虚拟仿真挑战赛本地电脑环境配置记录
上述过程是一个详细的步骤列表,用于在ROS Noetic环境中设置并运行Tianbot的Tianracer项目。这个过程涉及多个方面,包括更新软件包、安装ROS包、克隆源代码、构建工作空间、配置环境以及启动仿真。以下是对整个过程的详细总结:
zhangrelay
2024/05/25
3500
ROS机器人虚拟仿真挑战赛本地电脑环境配置记录
ROS2 中 使用奥比中光 Orbbec Astra Pro 深度相机
前面的文章《ROS2 机器人操作系统入门和安装以及如何使用 .NET 进行开发》中提到,组成机器人的关键部分主要是电机、传感器、软件和电池。机器人的智能感知主要通过视觉传感器,视觉传感器对于机器人来说,就像人类之于眼睛的关系,可说非常重要。那么如何通过 ROS 获取远端机器人的摄像机传感器的图像信息呢?
桑榆肖物
2023/08/22
2.2K0
ROS2 中 使用奥比中光 Orbbec Astra Pro 深度相机
Tello和ROS的一些资料
之前,一些博文给出了Cozmo和Vector等地面小型机器人的资料,这篇博文,针对空中机器人---Tello。
zhangrelay
2019/01/31
2.6K0
Tello和ROS的一些资料
Windows使用ROS机器人操作系统教程说明
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
zhangrelay
2019/10/22
1.7K0
Windows使用ROS机器人操作系统教程说明
ROS2 机器人操作系统入门和安装以及如何使用 .NET 进行开发
ROS(Robot Operating System,机器人操作系统,下文简称“ROS”)是一组软件库和工具的组合,可以帮助构建机器人应用程序。从驱动程序到最先进的算法,以及强大的开发工具,ROS 满足设计一个机器人项目所需要的一切东西,并且这些都是开源的。
桑榆肖物
2023/01/03
2.2K0
ROS2 机器人操作系统入门和安装以及如何使用 .NET 进行开发
ROS2使用OpenCV基础
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
zhangrelay
2019/08/31
1.5K0
ROS2实时性案例分析之倒立摆系统使用(Inverted pendulum)
平衡倒立摆是通常由实时计算解决的控制问题的经典示例之一。 如果控制器阻塞时间过长,摆锤将掉落或变得不稳定。 但是,如果控制器比控制摆锤的电动机运行的速度更快的速度可靠地更新,则摆锤将成功地对传感器数据做出反应平衡摆锤。
zhangrelay
2019/12/26
1.8K0
ROS2实时性案例分析之倒立摆系统使用(Inverted pendulum)
ROS2编程基础课程--colcon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
zhangrelay
2019/09/19
2.9K0
ROS新功能包PlotJuggler绘图
http://www.ros.org/news/2017/01/new-package-plotjuggler.html
zhangrelay
2022/05/10
1.1K0
【C++】ROS:ROS2环境配置与基础示例
ROS 2 (Robot Operating System 2)是一个开源的机器人操作系统,它是ROS(Robot Operating System)的下一代版本。它提供了一系列工具、库和约定,用于构建机器人应用程序。与ROS 1相比,ROS 2具有更强大的功能,更好的性能和更好的可靠性。
DevFrank
2024/07/24
2.7K0
【C++】ROS:ROS2环境配置与基础示例
最火爆的ROS教程-机器人操作系统入门-Melodic-
原文链接:https://github.com/anchuanxu/ROS-Academy-for-Beginners-Book-Melodic
zhangrelay
2019/08/15
3K0
最火爆的ROS教程-机器人操作系统入门-Melodic-
相关推荐
[ROS2]下载Navigation2源码来学习
更多 >
交个朋友
加入行业数字化趋势交流群
解读转型政策方向 参考企业落地案例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档