1. 环境配置

这里我们提供两个脚本来配置环境

# 版本选择ROS1,其他配置与默认推荐的相同即可
wget http://fishros.com/install -O fishros && . fishros

# 配置ros相关环境
install.sh

# 配置cuda相关环境
install_cuda.sh

2. 内参标定

要安装 camera_calibration 包并确保它与当前安装的 ROS 版本相匹配,你可以使用以下步骤:

确保你的系统中已经安装 ROS:首先确保你已经按照 ROS 的安装步骤成功安装了 ROS。你可以通过以下命令检查当前安装的 ROS 版本:

   rosversion -d

这将返回你当前的 ROS 发行版(例如 melodic, noetic 等)。

使用环境变量安装:可以使用 rosversion 命令来动态获取当前的 ROS 版本,并将其用于安装相应的 camera_calibration 包。你可以通过以下命令来实现:

sudo apt install ros-$(rosversion -d)-camera-calibration

这里的 $(rosversion -d) 会被替换为当前的 ROS 版本名。

验证安装:安装完成后,可以通过以下命令检查 camera_calibration 包是否成功安装:

rospack find camera_calibration

如果返回了包的路径,则说明安装成功。

使用 camera_calibration:安装完成后,你可以使用 camera_calibration 工具进行相机标定。以下是一个基本的使用示例:

pip install PyYAML rospkg
rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.025 image:=/camera/image camera:=/camera

这里的 --size 参数指定棋盘格的内角点数量,--square 参数指定每个方块的边长(单位为米),imagecamera 参数分别指定相机图像话题和相机的名称。

打印一张棋盘格图片,可以从这里获取 ,下面给出opencv官网给出的一张9*6内角点棋盘格,格子大小为26mm:

具体标定过程。界面中的

x:表示标定板在视野中的左右位置。

y:表示标定板在视野中的上下位置。

size:标定板在占视野的尺寸大小,也可以理解为标定板离摄像头的远近。

skew:标定板在视野中的倾斜位置。

因此,需要移动标定板:x代表左右移动,y代表上下移动,size代表远近移动,skew代表倾斜侧角,可以上下倾,也可以左右倾。
在这里插入图片描述

然后我们需要创建一个calib.txt文件在某路径下,并填写

K: 2152.8 0 971.3 0 2155.5 605.9 0 0 1(内参矩阵)
D: -0.1192 0.162 0.00073985 0.0014(畸变参数)
T: 0.0188623 -0.999822 -9.36529e-05 -0.0323222 0.0288601 0.000638227 -0.999583 -0.396685 0.999405 0.0188516 0.028867 -0.0869361(待标定的外参矩阵)

3. 项目编译

git clone git@github.com:lovelyyoshino/Multi_calib.git
cd Multi_calib/
catkin_make

3.1 代码编译以及测试示例

我们提供了两个数据集的示例:

cd src/LidarToCamera
../../build/LidarToCamera/run_lidar2camera ./data/ours/1
../../build/LidarToCamera/run_lidar2camera ./data/kitti/1

我们给出了外参的参考值。您可以在文件data/initial_error.txt中设置初始误差,并测试算法的准确性。格式为“roll pitch yaw(度) x y z(米)”。

测试您自己的数据

../../build/LidarToCamera/run_lidar2camera <data_folder>

数据文件夹应包含:

  • 图像文件
  • LiDAR文件:需要反射率
  • 校准文件:包含相机内参、畸变系数和粗略外参。格式为:
K: 2152.8 0 971.3 0 2155.5 605.9 0 0 1
D: -0.1192 0.162 0.00073985 0.0014
T: 0.0188623 -0.999822 -9.36529e-05 -0.0323222 0.0288601 0.000638227 -0.999583 -0.396685 0.999405 0.0188516 0.028867 -0.0869361 
  • masks:由Segment Anything生成的掩膜

如果您不想在初始外参中添加误差,请在文件data/initial_error.txt中将初始误差更改为全零。

3.2 深度学习提取分割

首先下载模型检查点。您可以选择vit-l

在这里插入图片描述

3.2.1 环境:python>=3.8,pytorch>=1.7,torchvision>=0.8
3.2.2 安装
cd src/LidarToCamera/python-sam
conda init
conda create -n sam python=3.8
conda activate sam
pip install -e .
pip install catkin_pkg
pip install empy
pip3 install torch==2.0.0 torchvision==0.15.0 torchaudio==2.0.0 --index-url https://mirror.sjtu.edu.cn/pytorch-wheels/cu117
pip install opencv-python pycocotools matplotlib onnxruntime onnx
3.2.3 运行

…详情请参照古月居

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐