0. 前言
- 关于 ROS1 的 librviz 文档已经很完善了,但 ROS2 下的相关文档目前缺失,但在 ROS2 下开发可视化界面又是一个迫切的需求,好在官方给出了 ROS2 下 librviz 的一个简单范例,在学习的过程中,需要类比 ROS1 下的 librviz,对一些函数和头文件进行替换,迁移也就不那么困难了。
- 官方的范例是针对目前最新的 ROS2 Rolling 的,头文件和函数相比 ROS2 Foxy 存在一些区别,虽然 Foxy 的支持在今年就截止了,但就像 ROS1 Kinetic 一样,后续一些年仍会有大量人使用该旧版本。我从官方的仓库 fork 了一份,从 ros2 分支迁出了一个 foxy-devel 分支,在此基础进行了完善。
- Github 仓库连接:visualization_tutorials
1. 基于 QT5 实现 rviz 窗口
- 使用 QT 的 ROS2 插件新建一个工作空间,不会的同学可以参考上一篇博客](https://www.guyuehome.com/43738))
- 克隆源码:
cd src git clone -b foxy-devel https://github.com/SEUZTh/visualization_tutorials.git
- 编译后的工作空间下的目录如下,虽然
src
和功能包之间多了一层文件夹,但并不影响编译:. ├── build ├── install ├── log ├── ros2_rviz.workspace ├── ros2_rviz.workspace.user └── src └── visualization_tutorials ├── interactive_marker_tutorials ├── librviz_tutorial ├── README.md ├── rviz_plugin_tutorials ├── rviz_python_tutorial ├── tutorialformatter.py ├── visualization_marker_tutorials └── visualization_tutorials
- 使用 QT5 进行编译 。
原仓库中的 ROS2 分支可能是适配了 ROS2 Rolling 版本,在 Foxy 下有的函数和头文件是不存在的,具体修改的内容在这个 commit 中。
-
进入工作空间根目录执行:
source install/setup.sh ros2 run librviz_tutorial myviz # 会报很多找不到图标的错,暂时忽略
-
效果如下:
2. 可视化点云
-
修改代码,以在 Rivz 中显示点云话题消息。修改的局部代码如下,参数可以自己修改,可以打开一个 rviz 界面,参考其中存在的参数进行添加和修改:
manager_->setFixedFrame("livox_frame"); // Create a pointcloud display. pointcloud_ = manager_->createDisplay("rviz_default_plugins/PointCloud2", "pointcloud", true); if (pointcloud_ == NULL) { throw std::runtime_error("Error creating pointcloud display"); } // Configure the pointcloud the way we like it. pointcloud_->subProp("Topic")->setValue("/livox/lidar"); // 这里改为自己的点云话题消息 pointcloud_->subProp("Style")->setValue("Points"); pointcloud_->subProp("Size (Pixels)")->setValue("2"); pointcloud_->subProp("Color Transformer")->setValue("Intensity"); pointcloud_->subProp("Invert Rainbow")->setValue("true"); pointcloud_->subProp("Decay Time")->setValue("5");
-
该功能在这个 commit 中添加。
- livox 的点云可视化效果如下:
3. Livox ROS2 驱动和功能包配置
3.1 Livox 驱动(ROS2)
需要做部分修改才能在 ROS2 下使用,所以这里提一下。
- 下载: Livox-SDK
-
修改
sdk_core/CMakeLists.txt
中的内容,否则后面的 ROS2 下无法正常编译 Livox ROS2 驱动的工作空间:target_compile_options(${SDK_LIBRARY} PRIVATE $<$<CXX_COMPILER_ID:GNU>:-Wall -Werror -Wno-c++11-long-long> -fPIC PRIVATE $<$<CXX_COMPILER_ID:AppleClang>:-Wno-unknown-pragmas -Wall -Werror -Wno-c++11-long-long> -fPIC PRIVATE $<$<CXX_COMPILER_ID:Clang>:-Wno-unknown-pragmas -Wall -Werror -Wno-c++11-long-long> -fPIC)
-
编译安装:
sudo apt install cmake # 下载安装包后解压 cd Livox-SDK cd build && cmake .. make sudo make install
-
修改电脑的静态ip:
-
测试:
cd build/sample/lidar/ ./lidar_sample
3.2 Livox ROS2 功能包
-
克隆代码并编译:
git clone https://github.com/Livox-SDK/livox_ros2_driver.git ws_livox/src cd ws_livox colcon build
-
测试:
source ./install/setup.sh cd ./src/livox_ros2_driver/launch ros2 launch livox_lidar_rviz_launch.py # 激光雷达连接模式下
-
效果如下:
评论(1)
您还未登录,请登录后发表或查看评论