当前位置: 首页 > news >正文

ROS 点云配准与姿态估计

这边博客介绍了我们的一个开源仓库,该仓库实现了在 ROS Noetic 环境下使用点云配准并进行姿态估计的功能,并以服务的形式进行调用。博客的剩下部分直接搬运 Github 仓库中的 README 中文片段。如果你对这个功能感兴趣,建议关注该仓库,因为所有 Bug 修复与功能更新都以 Github 仓库优先,CSDN 博客更新可能存在滞后。

  • Github 链接:https://github.com/GaohaoZhou-ops/pointcloud_registration

在这里插入图片描述


PointCloud Registration

这个功能包是基于 open3d 实现了 ROS 点云配准服务节点。该仓库的功能在以下配准中通过了测试:

DevicePlantformOSROS
Nvidia Jetson OrinArm64Ubuntu 20.04Noetic

Contributors

该工程由 中国科学院自动化研究所 提供硬件与测试场地,同时以下人员在该项目的开发中做出了巨大贡献,在此感谢他们的付出:

WenJiang Xu 徐文江,PengFei Yi 易鹏飞,JingKai Xu 徐靖凯,XingYu Wang 王行宇,YaNan Hao 郝亚楠,YuWei Wang 王雨薇


How to Use

Step1. Clone this repo

进入到你的工作空间中拉取该仓库,假设你的工作空间为 reg_ws

$ cd reg_ws/src
$ git clone xxx

Step2. Create conda env

新建一个 conda 环境并安装以下依赖:

$ conda create -n o3d python=3.10
$ pip install open3d pyyaml rospkg numpy==1.24.3

Step3. Build Workspace

返回到工作空间目录下编译该空间,编译成功后激活 conda 环境:

(base) $ cd reg_ws
(base) $ conda deactivate 
(base) $ catkin_make(base) $ conda activate o3d

Step4. [optional] Run Test

在使用之前可以先运行测试脚本以确保 open3d 配准功能正常。如果你不想要打开 GUI 界面,修改脚本中的 DISPLAY 变量为 False

(o3d) $ python src/pointcloud_registration/scripts/test_without_ros.py demo
Before RegAfter Reg
在这里插入图片描述在这里插入图片描述

如果你在运行后遇到了 Segmentation Fault 问题,有可能是由于 numpy 版本导致的,将其降级为 1.xx 版本:

(o3d) $ pip install -U numpy==1.24.3

Step5. [optional] Create Target File

我们建议使另外一个开源的 RGBD 重建仓库创建 target 点云,或者如果你有带有 Lidar 的 iPhone 设备可以下载 App Store 中的 3D Scanner 软件扫描你感兴趣的物体用于重建。

如果上述条件你都不具备,那么运行下面的节点来采集当前帧点云:

(o3d) $ roslaunch pointcloud_registration allocate_pcd.launch

调用服务并传入参数,如果你不修改 min max 参数则会使用 bounding box 范围为 x=[-1.0,1.0], y=[-1.0,1.0], z=[-1.0,1.0]

(o3d) $ rosservice call /pointcloud_accumulator_node/save_cloud "{filename: 'demo', min_x: 0.0, max_x: 0.
0, min_y: 0.0, max_y: 0.0, min_z: 0.0, max_z: 0.0}" success: True
message: "Successfully saved point cloud with 6705 points to /home/orin/Desktop/point_reg/src/pointcloud_registration/pcd_files/demo.pcd"

在这里插入图片描述


Step6. Use Point Cloud Register

在执行脚本之前需要确保 pcd_files 文件夹中有你的 target 点云文件,如果你需要保存当前正在使用的 target 和 source 点云用于 debug,可以修改 launch 文件中的 write_file 参数。

(o3d) $ roslaunch pointcloud_registration registration.launch

调用服务并将 target 点云文件名作为参数 target_cloud_name 传入:

(o3d) $ rosservice call /pointcloud_registration_node/register "{target_cloud_name: 'demo', voxel_size: 0.0, max_correspondence_distance: 0.0, crop_min_x: 0.0,crop_max_x: 0.0, crop_min_y: 0.0, crop_max_y: 0.0, crop_min_z: 0.0, crop_max_z: 0.0}" success: True
message: "Registration successful with fitness score: 0.9940"
transformation: translation: x: -0.060025553054253854y: 0.03020713014616973z: -0.00028744602569820155rotation: x: 0.019895079499856496y: -0.06213543298323554z: -0.0037846292055216057w: 0.9978622401721878

在这里插入图片描述

http://www.dtcms.com/a/470230.html

相关文章:

  • 活动预告|海天瑞声与您相约 NCMMSC 2025
  • Java入门级教程22——Socket编程
  • 【Linux系统编程】2. Linux基本指令(上)
  • 网站系统介绍如何设置wordpress的内存
  • 毕业设计做网站做不出网站建设手机端pc端分开
  • Git删除本地与远程tag操作指南
  • 爱网站推广优化wordpress第三方登录教程
  • 23种设计模式——享元模式(Flyweight Pattern)
  • 游戏编程模式-享元模式(Flyweight)
  • 新郑做网站优化桂林网站优化公司
  • B站排名优化:知识、娱乐、生活类内容的差异化实操策略
  • 闵行网站制作设计公司昆明哪些做网站建设的公司
  • Spring Boot 3.x核心特性与性能优化实战
  • 域名解析后多久打开网站建个人网站
  • 基于MATLAB的PIV(粒子图像测速) 实现方案
  • 北京市网站建设企业怎么自己开发一个app软件
  • 基于springboot的技术交流和分享平台的设计与实现
  • Spring Boot 处理JSON的方法
  • 在Gin项目中使用API接口文档Swagger
  • asp.net 4.0网站开发高级视频教程订阅号怎么做免费的视频网站吗
  • 重庆响应式网站制作没有后台的网站怎么做排名
  • ENSP Pro Lab笔记:配置STP/RSTP/MSTP(1)
  • ajax 效果网站中国室内装饰设计网
  • 5-流程控制语句
  • Dify实战:调试技巧深度解析
  • Linux下Mysql初始化如,密码如何查找
  • 2025知识管理平台深度测评:从工具进化为智能决策引擎
  • 网站后台开发教程jsp网站缓存在哪
  • 网站页面怎么做的好看百度在西安的公司叫什么
  • Python 打印1-100的素数