数据集建设需要对采集的数据进行标注,这里我选择南方科技大学的开源标注工具SuSTechPOINTS作为点云的标注软件,OpenCalib作为点云和相机联合标定的变换矩阵手动调参的软件,LabelmeAI版作为图像的标注。系统则选择在我电脑上装个双系统以便能使用GPU加速
一 Ubuntu20.04 双系统安装
1 硬盘空间划分
随便安装一个硬盘空间管理的软件,这里我选择的是傲梅的分区助手下载分区助手
打开文件夹中的PartAssist.exe。右键点击你要划分的盘,点击拆分分区,划分出500G-1T左右的空间
而后右键点击你划分出的这个分区(我这里是I盘),点击删除分区,让它变成未分配空间
最后右上角点击提交即可,流程走完即可
2 U盘烧录
官网下载用于烧录系统的iso文件
Ubuntu 20.04.6 LTS (Focal Fossa)
下载rufus(标准版即可)用于烧录iso到U盘
准备一个可以格式化的U盘,插到电脑里。rufus会自动识别你的U盘并格式化(不要选错了U盘酿成悲剧)
选择你刚刚下的镜像文件,其他都选择默认的。直接点击开始便可以烧录了
3 BIOS切换引导U盘启动 安装Ubuntu双系统并划分硬盘空间
重启电脑,不停按F8或F10或F2(不同主板进入BIOS的按键不同,请自行百度),直到进入BIOS
在引导设置里将U盘启动优先级升到最高,并且设置Secure Boot选项为disabled
保存,电脑会从U盘启动,然后点击进入到Ubuntu安装界面
选英文系统,Install Ubuntu(虽然感觉中文的也差不多)
这些都随便选
直到安装方法那选something else(忘拍了用了别人的图)
然后就是到了最重要的环节,选安装的地方了。在所有freespace里找和你留的大小最接近的那个(会有很多freespace,但都是1M左右的,那就明显不是你要找的)
我这里是留了250多G,正好和这一个对上了。然后点击左下加号
这里先给根目录/分配空间(作为系统盘),我设置了50G,如果你们要设置别的就在Size那里改,其他的按照我的来
然后点OK,继续找freespace,这次只剩下200G了
把剩下的空间全给/home,作为数据盘
然后就大功告成!设置用户名和密码后慢慢等即可
4 Anaconda安装
到Anaconda官网下载linux版本
# cd到下载目录后安装 请勿使用sudo!
bash Anaconda3-xxx.sh
然后一直按Enter直到出现 Do you accept the license terms? [yes|no] ,表示协议阅读完毕输入yes
即可继续安装(这部分用的别人的图超详细Ubuntu安装Anaconda步骤+Anconda常用命令_ubuntu 安装anaconda-CSDN博客)
提示确认安装位置,这里点击Enter,默认即可,界面如下
最后一步 初始化Anaconda,这一步只需要根据提示输入yes
即可,界面如下:
5 其他配置
下载源的配置。在以下网站拷贝相应的下载源网址
ubuntu | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
覆盖到以下的位置 sudo gedit /etc/apt/sources.list
二 SuSTechPOINTS编译
1 软件安装
从SuSTechPOINTS的github上下载所需的包GitHub - naurril/SUSTechPOINTS: 3D Point Cloud Annotation Platform for Autonomous Driving
或者直接git clone https://github.com/naurril/SUSTechPOINTS
创建一个专用于点云标注的环境
conda create -n pointlabel python==3.8
conda activate pointlabel
cd到你刚才下载的文件中,安装其要求的python库
pip install -r requirement.txt
下载软件自动标注所使用的模型到指定的文件夹中
wget https://github.com/naurril/SUSTechPOINTS/releases/download/0.1/deep_annotation_inference.h5 -P algos/models
(如果下载不下来,可以在浏览器中打开这个页面https://github.com/naurril/SUSTechPOINTS/blob/dev-auto-annotate/doc/install_from_source.md而后点击下载)
然后就可以启动了(以后每次启动需要conda activate pointcloud激活环境后再运行main.py)
python main.py
在浏览器中输入 http://127.0.0.1:8081,就可以打开标注页面了
2 数据组织
数据组织应参考SUSTechPOINTS的data文件夹中的example的目录结构。以下是本次标注的目录结构
camera_n存着第n个摄像头(全景一共4个摄像头)的图片,lidar存着点云文件
其中calib的camera下存放着4个json文件,对应camera中四个文件夹名。json文件中存着camera_n到点云的相机内参和外参
数据组织这部分目前不需要自己动手,只需要在你自己的电脑上做如下操作
1 给你的ubuntu安装一个zerotier。安装完成后会显示一个id号,应该是10位,由数字和小写字母组成。把id交给管理员
curl -s https://install.zerotier.com | sudo bash
sudo service zerotier-one start
2 安装ssh
sudo apt install openssh-client
sudo systemctl start ssh
sudo systemctl enable ssh
3 在你的SUSTechPOINTS程序的data目录下创建一个目录用于挂载远程硬盘。这里假设创建名为mnt的文件夹,并得到这个文件夹的绝对路径,比如我就是/home/ubuntu/SUSTechPOINTS-dev-auto-annotate/data/mnt
4 运行以下代码即可,管理员会告诉你你是usr几,同时还会给你usr几的密码
sudo sshfs -o allow_other usr*@tmp虚拟机的IP:/home/usr*/data /home/ubuntu/SUSTechPOINTS-dev-auto-annotate/data/mnt
5 连接成功后可以在mnt下看到文件了,再激活环境并进入SUSTechPOINTS即可
conda activate pointlabel
python main.py
6 标注完成后,请解除挂载
sudo fusermount -u /home/ubuntu/SUSTechPOINTS-dev-auto-annotate/data/mnt
三 OpenCalib编译
1 ROS安装
添加清华源
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'
添加key
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
更新软件库并安装ros
sudo apt update
sudo apt install ros-noetic-desktop-full
设置环境变量
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
ROS 内置了一些小程序,可以通过运行这些小程序以检测 ROS 环境是否可以正常运行(来源1.2.5 测试 ROS · Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程)
-
首先启动三个命令行(ctrl + alt + T)
-
命令行1键入:roscore
-
命令行2键入:rosrun turtlesim turtlesim_node(此时会弹出图形化界面)
-
命令行3键入:rosrun turtlesim turtle_teleop_key(在3中可以通过上下左右控制2中乌龟的运动)
2 Pangolin安装
从https://github.com/stevenlovegrove/Pangolin/releases
下载Pangolin0.9(注意版本,请和下文pcl一样,在release中找到对应的版本再下载源码)的安装包进行编译(缺什么直接按提示安装依赖即可)
cd Pangolin
mkdir build
cd build
cmake ..
make -j2
sudo make -j2 install
3 PCL1.9.1安装
先安装相关依赖
sudo apt-get install libeigen3-dev
sudo apt-get install libflann1.9 libflann-dev
sudo apt-get install libboost-all-dev
sudo apt-get install libpcap-dev
sudo apt-get install libqhull* libgtest-dev
sudo apt-get install libusb-1.0-0-dev libusb-dev libudev-dev
sudo apt-get install freeglut3-dev pkg-config
sudo apt-get install libxmu-dev libxi-dev
sudo apt-get install mono-complete
sudo apt-get install libopenni-dev libopenni2-dev
打开并下载pcl源码,点击右边的Releases,找到1.9.1 Releases · PointCloudLibrary/pcl · GitHub
选择source code下载并解压
cd pcl-pcl-1.9.1
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j2
sudo make -j2 install
sudo ldconfig
如果全程没有报错即完成安装
4 OpenCalib手动标定相机和雷达
从github上下载OpenCalibhttps://github.com/PJLab-ADG/SensorsCalibration
cd到/SensorsCalibration/lidar2camera/manual_calib文件夹下cmake出可执行文件
mkdir build && cd build
cmake ..
make -j2
而后cd到上一级目录(cd ..),可以运行一下示例(示例在data文件夹下)并自己尝试下左边的按钮看看会有什么样的反映
./bin/run_lidar2camera data/0.png data/0.pcd data/center_camera-intrinsic.json data/top_center_lidar-to-center_camera-extrinsic.json
调整结束后关闭软件终端会显示需要记录的值,到时候这个值需要写到calib文件夹中的extrinsic中
正式使用时,在使用SuSTechPOINTS时发现点云和图像的框对不上时,需要打开OpenCalib对点云和图像进行手动的配准,然后记录配准后得到的变换矩阵并记录到calib/camera/camera_n中(请写文件记录是哪个图片和点云开始使用你这次修改后的参数,并保存前面未修改的)不然前面的不又白修改了吗)
四 Labelme AI安装
1 软件安装
为图片标注新建一个环境
conda create -n label python==3.10
conda activate label
安装labelme
pip install labelme
在终端激活label环境并运行即可
labelme
2 数据组织与软件操作
每个场景之间用日期隔开,每个场景文件夹下应该组织如下:
将图像都在xxx_images中,而标注的结果都存储到xxx_images_labels文件夹中,标注文件夹中的路径格式应该与xxx_images相同,比如cam_images中的子目录是这样的,那么cam_images_labels的子目录也应该与之相同(calib的子目录与cam_images_labels相同)。在标注时应该按照对应关系存储标注文件
激活环境并运行labelme,点击打开目录,即打开图片的目录。然后在文件里点击更改输出路径,这里是设置存储相应label的目录
上方可以选择使用的AI辅助工具和模型。同时可以创建多边形和编辑多边形。创建多边形后会让选取一个类别标签,这里就选择我们决定的几个大类中的其中一类即可。后续如何分类会在实际使用时说明。
至于操作教程,该软件很简单,就不多做赘述。