rslidar(robosense16线激光雷达)显示pcap点云数据并转化成pcd数据

一下载ros_rslidar-master.zip这个rslidar可视化ros包
1.首先创建一个ros工作台

mkdir -p rslidar_ws/src

然后把压缩包放进去解压出现ros_rslidar-master

cd rslidar/src
catkin_make

之后遇到如下错误:

ros:velodyne_driver/input.h:37:10: fatal error: pcap.h: No such file or directory

这是应为缺少pcap库,有两种方法解决:
直接

sudo apt-get install libpcap0.8-dev

然后遇到如下错误:

Failed to fetch http://mirrors.ustc.edu.cn/ros/ubuntu/pool/main/r/ros-melodic-stage-ros/ros-melodic-stage-ros_1.8.0-0bionic.20220127.155612_amd64.deb  Could not resolve 'mirrors.ustc.edu.cn'

首先更新源

$ sudo gedit /etc/apt/sources.list
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-proposed main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-proposed main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main multiverse restricted universe
sudo apt update

还是有这个错误,结果发现是没联网,虚拟机设置了手动IP
解决方法:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后重启就OK了
现在sudo apt update就没有问题
2.编译rslidar源码

catkin_make

3.采集pcap文件
通过rsview上位机采集激光雷达的动态数据,得到pcap原始文件。

4,ros上回放pcap文件
在ros上,修改ros_rslidar中的rs_lidar_16.launch文件,回放pcap,修改内容如下:

<param name="pcap" value="your.pcap"/>

//your.pcap为第一步采集到的pcap包地址

然后,打开一个终端,输入如下命令,回放pcap数据:

roslaunch rslidar_pointcloud rs_lidar_16.launch

便可得到如下,显示为之前采集到的动态点云图:

在这里插入图片描述3,录制bag包

此时,第二步中的终端不要关闭。我们采用rosbag命令录制需要的bag包。

rosbag record -O mybag.bag /rslidar_points

这里我们只获取了/rsliar_points节点的数据,当然还可以获取更多的节点或者所有的节点数据,具体可查询rosbag record相关的命令。

5,将bag文件转换成pcd文件
到这一步时可以将之前打开的终端全部关了。接下来讲上一步获取的mybag.bag转换成pcd文件。
新建一个终端,打开ros主节点:

roscore

再新建一个终端,键入如下命令:

rosrun pcl_ros bag_to_pcd mybag.bag /rsliar_points ~/pcd_file

这里我们通过pcl_ros包将bag文件中的/rslidar_points节点生成对应的pcd文件。默认pcl_ros是安装的,如果提示缺少的话,请根据提示自行安装。

6,查看pcd文件
关闭所有终端。
上一步中获取的pcd文件是很多个,每一个pcd是一帧数据。可以通过pcl_viewer命令查看pcd格式的文件:

pcl_viewer yourname.pcd //键入对应的pcd文件名即可
  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用PCL库将txt格式转换为pcd格式的代码示例: ```cpp #include <iostream> #include <string> #include <vector> #include <pcl/io/pcd_io.h> #include <pcl/point_types.h> void txt_to_pcd(const std::string& txt_file, const std::string& pcd_file) { // 读取txt文件中的点数据 std::ifstream fin(txt_file); if (!fin.is_open()) { std::cerr << "无法打开文件 " << txt_file << "!" << std::endl; return; } pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>); float x, y, z; while (fin >> x >> y >> z) { pcl::PointXYZ point; point.x = x; point.y = y; point.z = z; cloud->points.push_back(point); } fin.close(); // 保存点数据pcd文件 pcl::io::savePCDFileBinary(pcd_file, *cloud); std::cout << txt_file << " 转换为 " << pcd_file << " 完!" << std::endl; } void batch_txt_to_pcd(const std::string& folder_path) { // 创建输出文件夹 std::string pcd_folder = folder_path + "/pcd_files"; if (!std::filesystem::exists(pcd_folder)) { std::filesystem::create_directory(pcd_folder); } // 遍历文件夹中的txt文件,逐个转换为pcd文件 for (const auto& entry : std::filesystem::directory_iterator(folder_path)) { if (entry.path().extension() == ".txt") { std::string txt_file = entry.path().string(); std::string pcd_file = pcd_folder + "/" + entry.path().stem().string() + ".pcd"; txt_to_pcd(txt_file, pcd_file); } } } // 测试 int main() { std::string folder_path = "/path/to/folder"; batch_txt_to_pcd(folder_path); return 0; } ``` 将上述代码保存为C++源代码文件,然后使用支持PCL库的编译器编译并运行即可批量将文件夹中的txt文件转换为pcd文件,并保存在与txt文件相同的文件夹中的`pcd_files`子文件夹中。注意,需要将`/path/to/folder`替换为要转换的文件夹路径。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值