r3live gazebo仿真(补充开发中)
基于melodic gazebo的r3live 仿真 文章是半成品
使用melodic和gazebo11的原因
-
melodic比noetic的适配性更好
-
livox雷达的仿真包目前仅支持gazebo9 melodic,如果用noetic需要很多功夫改。
-
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
要求: 要准备20张以上的照片数据,各个角度和位置都要覆盖
roslaunch scout_gazebo scout_calibration.launch
通过rqt_image_view来保存获取的图像
rqt_image_view
点击那个保存的图标就行,保存到在livox_camera_lidar_calibration文件夹下,新建data/camera/photos文件夹中
默认是把照片数据放在data/camera/photos下,然后在data/camera/in.txt中写入所有需要使用的照片名称
控制小车调整相机位置
rosrun teleop_twist_keyboard teleop_twist_keyboard.py
在gazebo中将标定板旋转
各个角度准备个20+张照片
输入指令开始标定
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个内角点。
使用时根据你所使用标定板实际尺寸修稿
--square 0.20
指明标定板中每个方块的边长0.20m,即20cm,根据你所使用标定板实际尺寸修稿
rosrun camera_calibration cameracalibrator.py --size 5x7 --square 0.2 image:=/camera/color/image_raw
分别在左右移动(X),直到标定界面上X下方的精度条为绿色,然后依次在上下(Y),远近(Size),倾斜(Skew)方向移动,移动过程尽量缓慢,避免大幅度的移动使相机成像产生拖影。持续移动直到所有的进度条都为绿色。
雷达和相机标定
还没写
一些说明
在base.xarco中的livox雷达的pointcloud_type
一下几个case分别代表0 1 2 3选项
r3live貌似需要它的自建消息类型,所以在搞r3live时用pointcloud_type应当设置为3
运行
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