我很早以前就想把公众号的广告关了,我虽然粉丝少,但是却注重体验。
应该大家看不到什么广告了,我还是很爱我滴粉丝们的
另外也感谢俊哥把他的显示器给我用,虽然有些光线,但是不重要了:
终于有了外置的屏幕
但是可能立着看代码是好的,但是实在是太长了,有点受不了~
工友在机器上面编译了好几天也失败了,后面又换了MAC(笑死M1的片子,开虚拟机编译)又是报错的一天。
没啥办法了,现在就是这样接外面搞
相当于雷达和计算平台,就处理回传的点云数据,然后,这里使用一个Ubuntu的桌面版本来运行建图的包。
先安装PCL库:
代码语言:javascript复制$ sudo apt-get update
$ sudo apt-get install git build-essential linux-libc-dev
$ sudo apt-get install cmake cmake-gui
$ sudo apt-get install libusb-1.0-0-dev libusb-dev libudev-dev
$ sudo apt-get install mpi-default-dev openmpi-bin openmpi-common
$ sudo apt-get install libflann1.9 libflann-dev
$ sudo apt-get install libeigen3-dev 这个需要自己下载正确版本安装,我的是3.3.7
$ sudo apt-get install libboost-all-dev
$ sudo apt-get install libvtk7.1p-qt
$ sudo apt-get install libvtk7.1p
$ sudo apt-get install libvtk7-qt-dev(按照错误提示一步一步安装所需要的东西)
$ sudo apt-get install libqhull* libgtest-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 openjdk-8-jdk openjdk-8-jre
遇到错误自己研究
代码语言:javascript复制$ git clone https://github.com/PointCloudLibrary/pcl.git
PCL的库
代码语言:javascript复制$ cd pcl
$ mkdir release
$ cd release
$ cmake -DCMAKE_BUILD_TYPE=None -DCMAKE_INSTALL_PREFIX=/usr -DBUILD_GPU=ON-DBUILD_apps=ON -DBUILD_examples=ON -DCMAKE_INSTALL_PREFIX=/usr ..
$ make
$ sudo make install
然后安装,这里我就不验证了,应该我是安装上了,如果没有安装好,寄了
在/usr/include,/usr/lib, /usr/bin d等目录下可以看到于pcl有关的头文件、库、和可执行程序等文件。
继续安装数值计算的模板库:
Eigen 是C 语言里的一个开源模版库,支持线性代数运算,矩阵和矢量运算,数值分析及其相关的算法。
代码语言:javascript复制sudo apt-get install libeigen3-dev
安装
代码语言:javascript复制git clone https://github.com/eigenteam/eigen-git-mirror
#安装
cd eigen-git-mirror
mkdir build
cd build
cmake ..
sudo make install
#安装后,头文件安装在/usr/local/include/eigen3/
#移动头文件
sudo cp -r /usr/local/include/eigen3/Eigen /usr/local/include
后面这个移动的命令我没有执行
Ceres solver 是谷歌开发的一款用于非线性优化的库,在谷歌的开源激光雷达slam项目cartographer中被大量使用。使用ceres库必须先安装eigen库,ceres库是基于eigen的。
这个库需要在Git里面下载解压一下,然后安装的时候不要按照官方的安装命令来,有很多的错误。
代码语言:javascript复制sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3 libgflags-dev libgoogle-glog-dev libgtest-dev
安装这个
代码语言:javascript复制cd ceres-solver-2.0.0
mkdir build
cd build
cmake ..
make -j4
执行这个命令
代码语言:javascript复制sudo make install
我的ROS安装了这么多
激光雷达的SDK安装:
代码语言:javascript复制sudo apt install cmake
这个不用执行,不然你以为上面是这么编译的
代码语言:javascript复制git clone https://github.com/Livox-SDK/Livox-SDK.git
cd Livox-SDK
cd build && cmake ..
make
sudo make install
按照顺序一条一条的执行,笑死了,有的人一股脑的全复制执行,我喂你吃饭好不好。
代码语言:javascript复制https://github.com/Livox-SDK/Livox-SDK/blob/master/README_CN.md
SDK的位置
代码语言:javascript复制https://github.com/Livox-SDK/livox_ros_driver
这个就是我们要安装的雷达的ROS驱动,相当于比SDK更加高一层的包装。不愧是中国人做的东西,真长脸,有中文的doc。
代码语言:javascript复制git clone https://github.com/Livox-SDK/livox_ros_driver.git ws_livox/src
执行
代码语言:javascript复制cd ws_livox
catkin_make
这个执行的时候,注意要把ros的环境激活一下,不然就报错了
代码语言:javascript复制source ./devel/setup.sh
记得安装好以后搞一下这个
代码语言:javascript复制roslaunch livox_ros_driver [launch file] [param]
这个是使用雷达的命令
- 如果 [param] 参数项为空,则览沃 ROS 驱动程序会根据配置文件中的具体配置来连接对应的设备,具体连接规则如下:
当配置文件中指定的设备连接状态配置为使能连接时 (true) ,览沃 ROS 驱动程序只会连接该配置文件中指定的设备;
说明
(1)该配置文件位于 "ws_livox/src/livox_ros_driver/config" 目录下;
(2)当配置文件中指定的设备连接状态全部配置为禁止连接 (false) 时,览沃 ROS 驱动程序会自动连接扫描到的所有设备;
- 如果 [param] 参数为 LiDAR 的广播码,以 LiDAR( 广播码为 0TFDG3B006H2Z11 ) 和 LiDAR ( 广播码为 1HDDG8M00100191 ) 为例,使用的具体命令如下 :
roslaunch livox_ros_driver livox_lidar_rviz.launch bd_list:="0TFDG3B006H2Z11&1HDDG8M00100191"
每台览沃 LiDAR 设备拥有一个唯一的广播码。广播码由14位字符长度的序列号和一个额外的字符组成( 1、2或者 3),一共 15 位字符长度,上述序列号位于 LiDAR 机身外壳的二维码下面(见下图)。广播码被用来指定要连接的 LiDAR 设备,详细组成格式如下:
我的小工友数了一晚上然后笃定的告诉我,这个东西上面是14位和doc上面写的15不一样,我也数量,确实是14,然后15是需要末尾 1,哥哥,我吐了。
上图中 X ,在 MID-100_Left/MID-40/Horizon/Tele 产品中对应为 1 ,在 MID-100_Middle 中对应为 2,在MID-100_Right 中对应为 3 。
这个是驱动可以跑起来的任务
三个参数是具体任务跑起来可以设置的一些参数
代码语言:javascript复制
float32 x # X axis, unit:m
float32 y # Y axis, unit:m
float32 z # Z axis, unit:m
float32 intensity # the value is reflectivity, 0.0~255.0
uint8 tag # livox tag
uint8 line # laser number in lidar
雷达的点云格式
直接连接 LiDAR 时,使用 livox_lidar_config.json 来配置 LiDAR 参数,文件内容示例如下:
代码语言:javascript复制{
"lidar_config": [
{
"broadcast_code": "0TFDG3B006H2Z11",
"enable_connect": true,
"return_mode": 0,
"coordinate": 0,
"imu_rate": 1,
"extrinsic_parameter_source": 0
}
]
}
格式
乱吗?确实乱,下篇文章继续写,先溜了。
代码语言:javascript复制https://blog.csdn.net/weixin_44857882/article/details/119877566
代码语言:javascript复制https://github.com/ceres-solver/ceres-solver/releases/tag/2.1.0
代码语言:javascript复制http://eigen.tuxfamily.org/index.php?title=Main_Page
代码语言:javascript复制https://blog.csdn.net/weixin_41836738/article/details/121451965