r3live gazebo仿真(补充开发中)

2023-01-08
4分钟阅读时长

基于melodic gazebo的r3live 仿真 文章是半成品

使用melodic和gazebo11的原因

  1. melodic比noetic的适配性更好

  2. livox雷达的仿真包目前仅支持gazebo9 melodic,如果用noetic需要很多功夫改。

  3. r3live 支持16.04-20.04

故本文将基于melodic来介绍

gazebo9源代码有问题,现更新为gazebo11并适配了

环境配置

尽量把一些要装的包给了,但是如果不全,结合这篇一起看 Ubuntu ROS安装

melodic

安装melodic:略

一堆包:

software_version=melodic
#
sudo apt-get install ros-${software_version}-serial
sudo apt-get install -y ros-${software_version}-navigation
sudo apt-get install -y ros-${software_version}-robot-localization
sudo apt-get install -y ros-${software_version}-robot-state-publisher
#
sudo apt install -y ros-${software_version}-joy 
sudo apt install -y ros-${software_version}-move-base 
sudo apt install -y ros-${software_version}-mrpt* 
sudo apt install -y ros-${software_version}-geographic-msgs 
sudo apt install -y ros-${software_version}-map-server 
sudo apt install -y ros-${software_version}-gmapping 
sudo apt install -y ros-${software_version}-amcl 
sudo apt install -y ros-${software_version}-rviz-imu-plugin 
sudo apt install -y ros-${software_version}-dwa-local-planner 
sudo apt install -y ros-${software_version}-controller-manager
sudo apt install -y ros-${software_version}-effort-controllers
sudo apt install -y ros-${software_version}-joint-state-controller 
sudo apt install -y ros-${software_version}-driver-base 
sudo apt install -y ros-${software_version}-rtabmap-ros
sudo apt install -y ros-${software_version}-ackermann-msgs
sudo apt install -y ros-${software_version}-teb-local-planner 
sudo apt install -y ros-${software_version}-open-karto
sudo apt install -y ros-${software_version}-slam-karto 
sudo apt install -y ros-${software_version}-roslint
sudo apt install -y ros-${software_version}-joint-state-publisher-gui
sudo apt install -y ros-${software_version}-ros-controllers
sudo apt install -y ros-${software_version}-global-planner
sudo apt install -y ros-${software_version}-driver-base
sudo apt install -y ros-${software_version}-cv-bridge 
sudo apt install -y ros-${software_version}-image-geometry

sudo apt install -y ros-${software_version}-gazebo-ros-pkgs ros-${software_version}-gazebo-ros-control ros-${software_version}-ros-controllers ros-${software_version}-twist-mux

sudo apt-get install -y ros-${software_version}-cv-bridge ros-${software_version}-tf ros-${software_version}-message-filters ros-${software_version}-image-transport ros-${software_version}-image-transport*
    
sudo apt install libignition-math4-dev 
sudo apt install ros-${software_version}-libnabo
sudo apt install ros-${software_version}-libpointmatcher

加入环境(可选)

gazebo11

software_version=noetic
sudo apt-get remove gazebo9 gazebo9-common gazebo9-plugin-base libgazebo9:amd64 libgazebo9-dev:amd64 ros-${software_version}-gazebo-*   

sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'

wget http://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
 
sudo apt-get update
sudo apt-get install -y gazebo11 libgazebo11-dev ros-${software_version}-gazebo11-ros-pkgs ros-${software_version}-gazebo11-ros-control


 
 gazebo -version

可选:地图中的模型下载,否则gazebo打开会很慢,要先下载完才能打开地图

cd ~/.gazebo/
ls
mkdir -p models
ls
cd ~/.gazebo/models/
wget http://file.ncnynl.com/ros/gazebo_models.txt
ls
#下载
wget -i gazebo_models.txt
#解压
ls model.tar.g* | xargs -n1 tar xzvf

eigen

sudo apt-get install libeigen3-dev

pcl

点云库

尽量用库安装,直接编译很慢

预编译库安装

sudo apt-get install libcgal-dev pcl-tools

编译安装

依赖

sudo apt-get update
sudo apt-get install -y git build-essential linux-libc-dev
sudo apt-get install -y cmake cmake-gui
sudo apt-get install -y libusb-1.0-0-dev libusb-dev libudev-dev
sudo apt-get install -y mpi-default-dev openmpi-bin openmpi-common
sudo apt-get install -y libflann1.8 libflann-dev
sudo apt-get install -y libeigen3-dev
sudo apt-get install -y libboost-all-dev
sudo apt-get install -y libqhull* libgtest-dev  
sudo apt-get install -y freeglut3-dev pkg-config  
sudo apt-get install -y libxmu-dev libxi-dev   
sudo apt-get install -y mono-complete   
sudo apt-get install -y libopenni-dev   
sudo apt-get install -y libopenni2-dev 
sudo apt-get install -y libx11-dev libxext-dev libxtst-dev libxrender-dev libxmu-dev libxmuu-dev
sudo apt-get install build-essential libgl1-mesa-dev libglu1-mesa-dev
sudo apt-get install -y cmake cmake-gui


编译安装

GHPROXY=https://ghproxy.com/
git clone ${GHPROXY}https://github.com/PointCloudLibrary/pcl.git
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 -j2  #很占内存 线程可以少一点

安装Ceres

非线性优化库

官网下载链接:https://github.com/ceres-solver/ceres-solver 安装依赖:

# CMake
sudo apt-get install -y cmake
# google-glog + gflags
sudo apt-get install -y libgoogle-glog-dev libgflags-dev
# Use ATLAS for BLAS & LAPACK
sudo apt-get install -y libatlas-base-dev
# Eigen3
sudo apt-get install -y libeigen3-dev
# SuiteSparse (optional)
sudo apt-get install -y libsuitesparse-dev

安装完后查看Ceres版本: 因为Ceres库版本的定义在 /usr/local/include/ceres/version.h 里面,所以

sudo cat /usr/local/include/ceres/version.h 

for 18.04 20.04 太新版本的ceres ros编译会报错

要点:glog和ceres的版本要对

wget https://github.com/ceres-solver/ceres-solver/archive/refs/tags/2.0.0.zip
unzip 2.0.0.zip
cd ceres-solver-2.0.0
mkdir build
cd build
cmake ..
make -j8
sudo make install -j8

glog

for 18.04

wget https://github.com/google/glog/archive/refs/tags/v0.5.0.zip
unzip v0.5.0.zip
cd glog-0.5.0
cd build
cmake ..
make -j 24
sudo make install

opencv

注意ubuntu 18.04的默认opencv库为3.2.0,不满足r3live的要求

必须编译安装

以3.4.16版本为例

sudo apt-get install -y cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
GHPROXY=https://ghproxy.com/
#wget -O opencv_build.zip ${GHPROXY}https://github.com/opencv/opencv/archive/refs/tags/4.7.0.zip
unzip opencv_build.zip
wget -O opencv_build.zip ${GHPROXY}https://github.com/opencv/opencv/archive/refs/tags/3.4.16.zip
unzip opencv_build.zip
cd ~/opencv-*
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
sudo make install -j8
pkg-config --modversion opencv

echo "export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig  " >> ~/.bashrc 
echo "export LD_LIBRARY_PATH=/usr/local/lib " >> ~/.bashrc 

livox-sdk

cd ~/robot_ws/src/livox_ros_driver_for_R2LIVE/livox_ros_driver
git clone https://github.com/Livox-SDK/Livox-SDK
cd Livox-SDK
cd build && cmake ..
make
sudo make install

标定

相机标定内参

可选:把/urdf/base.xarco的livox雷达注释掉,否则太吃性能了

方法1(暂时存在问题,建议方法2:[cameraCalib-2] process has died)

参考:

https://zhaohailong.blog.csdn.net/article/details/125644165?spm=1001.2014.3001.5502

https://zhaohailong.blog.csdn.net/article/details/125676777?spm=1001.2014.3001.5502

https://github.com/Shelfcol/livox_camera_lidar_calibration_modified/blob/master/doc_resources/README_cn.md

要求: 要准备20张以上的照片数据,各个角度和位置都要覆盖

roslaunch scout_gazebo scout_calibration.launch

image-20230114110932015

通过rqt_image_view来保存获取的图像

rqt_image_view

image-20230114113343844

点击那个保存的图标就行,保存到在livox_camera_lidar_calibration文件夹下,新建data/camera/photos文件夹中

默认是把照片数据放在data/camera/photos下,然后在data/camera/in.txt中写入所有需要使用的照片名称

控制小车调整相机位置

 rosrun teleop_twist_keyboard teleop_twist_keyboard.py

在gazebo中将标定板旋转

image-20230114113737400

各个角度准备个20+张照片

image-20230114115422488

输入指令开始标定

roslaunch camera_lidar_calibration cameraCalib.launch

然后编辑cameraCalib.launch文件,将里面的配置弄好

方法2

参考:https://blog.csdn.net/bingda_robot/article/details/126718291

安装ros包

sudo apt install ros-melodic-camera-calibration
sudo apt install gnome-themes-standard

安装完成后启动仿真环境

roslaunch scout_gazebo scout_calibration.launch

然后启动标定节点,启动这个节点传入的参数比较多,拆分来看一下

--size 5x7 用于指明标定板的内角点数量,如下图每个红圈的位置就是一个内角点,我所使用的仿真标定板有横向有7个内角点,纵向有5个内角点。需要注意的时5x7中的‘x’时小写的英文字母‘x’,不是数学符号‘*’。

如下图每个红圈的位置就是一个内角点,这图有横向有11个内角点,纵向有8个内角点。

img

使用时根据你所使用标定板实际尺寸修稿

--square 0.20指明标定板中每个方块的边长0.20m,即20cm,根据你所使用标定板实际尺寸修稿

rosrun camera_calibration cameracalibrator.py --size 5x7 --square 0.2 image:=/camera/color/image_raw

image-20230114130246234

image-20230114130907388

分别在左右移动(X),直到标定界面上X下方的精度条为绿色,然后依次在上下(Y),远近(Size),倾斜(Skew)方向移动,移动过程尽量缓慢,避免大幅度的移动使相机成像产生拖影。持续移动直到所有的进度条都为绿色。

image-20230114132207605

雷达和相机标定

还没写

一些说明

在base.xarco中的livox雷达的pointcloud_type

一下几个case分别代表0 1 2 3选项

r3live貌似需要它的自建消息类型,所以在搞r3live时用pointcloud_type应当设置为3

image-20230114134531129

运行

mkdir -p robot_ws/src
cd robot_ws/src
git clone https://github.com/qhlai/r3live_simulization.git
cd ..
catkin_make

一些命令:

roslaunch livox_laser_simulation livox_simulation.launch

roslaunch scout_gazebo scout_gazebo.launch

roslaunch scout_gazebo show_sensor.launch

 rosrun teleop_twist_keyboard teleop_twist_keyboard.py
 
 rosrun rqt_tf_tree rqt_tf_tree
 rostopic list

参考

https://zhaohailong.blog.csdn.net/?type=blog