Plotjuggler简介
PlotJuggler
是一个类似于rqt_plot
的基于Qt的数据可视化工具。但PlotJuggler
拥有更强大和好用的功能。你可以导入文本文件让它显示文本文件中的数据。你也可以导入ros的bag包,它能自动解析bag包中的数据。并可以回放bag包的数据,然后用Rviz
来显示数据。PlotJuggler
的功能有很多,这里只介绍几种我常用的功能。应该足以应付日常的机器人开发调试工作。
Plotjuggler
官方网址:
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二进制文件安装(推荐)
使用下面的命令:
1 | sudo apt install ros-${ROS_DISTRO}-plotjuggler-ros |
运行Plotjuggler
对于ROS1
1 | rosrun plotjuggler plotjuggler |
对于ROS2
1 | ros2 run plotjuggler plotjuggler |
升级新版本时也可以使用该命令
1 | sudo apt-get update |
源码安装
用这种方式的话,你可能是想对Plotjuggler
的代码进行修改。源码编译分两种情况,与ROS无关的源码编译和需要与ROS联合使用的源码编译。
如果拉取github代码很慢,可尝试使用github下载加速工具https://ghproxy.com/ 。
- 与ROS无关的源码编译
克隆仓库
1 | git clone https://github.com/facontidavide/PlotJuggler.git |
安装编译前的依赖
1 | sudo apt -y install qtbase5-dev libqt5svg5-dev libqt5websockets5-dev libqt5opengl5-dev libqt5x11extras5-dev libprotoc-dev |
执行编译
1 | mkdir build; cd build |
注意:使用该方式编译是没有ROS相关的插件的。
- 需要与ROS联合使用的源码编译
对于ROS1
- 建立工作空间并拉取代码
1 | mkdir -p ~/ws_plotjuggler/src |
- 解决依赖并编译
1 | cd ~/ws_plotjuggler |
- 启动
Plotjuggler
1 | source devel/setup.bash |
对于ROS2 Galactic
- 建立工作空间并拉取代码
1 | mkdir -p ~/ws_plotjuggler/src |
- 解决依赖并编译
1 | cd ~/ws_plotjuggler |
- 启动
Plotjuggler
1 | source install/setup.bash |
用Plotjuggler显示机器人路径
保存机器人轨迹为CSV文件
使用下面的示例代码来存储机器人的位置。存储其他数据也可以用类似的方法。
1 |
|
Plotjuggler显示CSV文件路径
打开Plotjuggler
,选中Data
加载CSV
文件。
选择num
作为x轴
显示ROS bag中的数据
录制bag的命令
1 | ros2 bag record -o bagname 话题名称 |
示例:
1 | 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
网址:
觉得有用就点赞吧!
我是首飞,一个帮大家填坑的机器人开发攻城狮。
另外在公众号《首飞》内回复“机器人”获取精心推荐的C/C++,Python,Docker,Qt,ROS1/2等机器人行业常用技术资料。