ubuntu 20.04 搭建 docker 环境(18.04) 运行 vins-mono

1. 安装 docker

安装:
https://www.cnblogs.com/odesey/p/18262624

拉取失败:
https://www.cnblogs.com/odesey/p/18235889

免sudo 和使用 GPU:
https://www.cnblogs.com/odesey/p/18233348

为了使用 gpu 需要 nvidia 驱动。

注意:代理的 IP 视你的情况而定。

2. 镜像

mkdir ~/docker_workspace # 用于将本地代码映射到 容器中。
 docker pull hyeonjaegil/vins-mono:melodic
docker run -it --privileged     --network host  --gpus all \
-v /tmp/.X11-unix:/tmp/.X11-unix   \
-e DISPLAY -e NVIDIA_VISIBLE_DEVICES=all   \
-e NVIDIA_DRIVER_CAPABILITIES=all   \
-e FASTRTPS_DEFAULT_PROFILES_FILE=/usr/local/share/middleware_profiles/rtps_udp_profile.xml   \
--device-cgroup-rule='c 189:* rmw'  \
--device=/dev/bus/usb \
-v /dev/*:/dev/*       \
-v /etc/localtime:/etc/localtime:ro       \
-v ~/.Xauthority:/root/.Xauthority:rw   \
-v ~/docker_workspace:/workspace      \
--name vins-mono      \
hyeonjaegil/vins-mono:melodic     /bin/bash

docker run -it --privileged --network host --gpus all
-v /tmp/.X11-unix:/tmp/.X11-unix
-e DISPLAY -e NVIDIA_VISIBLE_DEVICES=all
-e NVIDIA_DRIVER_CAPABILITIES=all
-e FASTRTPS_DEFAULT_PROFILES_FILE=/usr/local/share/middleware_profiles/rtps_udp_profile.xml
-v /dev/:/dev/
-v /etc/localtime:/etc/localtime:ro
-v ~/.Xauthority:/root/.Xauthority:rw
-v ~/docker_workspace:/workspace
--name vins-mono-test
hyeonjaegil/vins-mono:melodic /bin/bash

3. 运行 vins-mono

宿主机:

xhost +

容器:

# 终端1:
cd /workspace/
mkdir -p vins_ws/src
cd vins_ws/src/
git clone https://github.com/HKUST-Aerial-Robotics/VINS-Mono.git
cd ../
catkin_make
source  devel/setup.bash
roslaunch vins_estimator euroc.launch
# 终端2:
docker exec -it vins-mono /bin/bash
cd /workspace/vins_ws/
source  devel/setup.bash
roslaunch vins_estimator vins_rviz.launch
# 终端3:
docker exec -it vins-mono /bin/bash
rosbag play /workspace/datasets/MH_01_easy.bag

euroc 数据集就可以跑起来了。

3. docker 安装海康工业相机驱动

下载海康工业相机客户端:

机器视觉工业相机客户端MVS V2.1.2 (Linux_x86_64)

解压到: ~/docker_workspace

里面有很多不同平台的包。

dpkg -i ./MVS-2.1.1_x86_64_20220511.deb
source ~/.bashrc # 一定要运行该命令,否则无法打开相机,这TM卡了我一天

cd /opt/MVS/bin
./MVS.sh # 打开软件界面

安装完,这些包就没用了。把这些包删除即可。

rm -r MVS_STD_V3.0.1_240422/

4. docker 安装海康工业相机ROS环境

mkdir -p hik_camera_ws/src

把之前的 ROS 包 copy 为 hik_camera_ws

rm -r build devel 
catkin_make
source  devel/setup.bash
roslaunch mvs_ros_pkg mvs_camera_trigger.launch

5. 安装雷达驱动+ROS 包

cd Livox-SDK
cd build && cmake ..
make
sudo make install
cd /workspace/lidar_color_map
catkin_make

报错:

ImportError: "catkin_pkg.workspaces import get_spaces" failed: No module named 'catkin_pkg'
Make sure that you have installed "catkin_pkg", it is up to date and on the PYTHONPATH.
CMake Error at /opt/ros/melodic/share/catkin/cmake/safe_execute_process.cmake:11 (message):

execute_process(/workspace/lidar_color_map/build/catkin_generated/env_cached.sh
"/usr/bin/python3" "/opt/ros/melodic/share/catkin/cmake/order_paths.py"
"/workspace/lidar_color_map/build/livox_ros_driver/catkin_generated/ordered_paths.cmake"
"--paths-to-order" "/opt/ros/melodic/include" "/usr/include"
"/opt/ros/melodic/share/xmlrpcpp/cmake/../../../include/xmlrpcpp"
"/usr/include/eigen3" "/usr/include/pcl-1.8" "/usr/include/vtk-6.3"
"/usr/include/freetype2"
"/usr/lib/x86_64-linux-gnu/openmpi/include/openmpi"
"/usr/lib/x86_64-linux-gnu/openmpi/include/openmpi/opal/mca/event/libevent2022/libevent"
"/usr/lib/x86_64-linux-gnu/openmpi/include/openmpi/opal/mca/event/libevent2022/libevent/include"
"/usr/lib/x86_64-linux-gnu/openmpi/include" "/usr/include/python2.7"
"/usr/include/x86_64-linux-gnu" "/usr/include/hdf5/openmpi"
"/usr/include/libxml2" "/usr/include/jsoncpp" "/usr/include/tcl"
"/usr/include/ni" "/usr/include/openni2" "--prefixes"
"/workspace/lidar_color_map/devel" "/root/catkin_ws/devel"
"/opt/ros/melodic") returned error code 1
Call Stack (most recent call first):
/opt/ros/melodic/share/catkin/cmake/list_insert_in_workspace_order.cmake:26 (safe_execute_process)
/opt/ros/melodic/share/catkin/cmake/catkinConfig.cmake:108 (list_insert_in_workspace_order)
livox_ros_driver/CMakeLists.txt:25 (find_package)

原因:

ROS Melodic 默认使用Python 2.7,catkin_pkg 在 :

echo $PYTHONPATH

而这个驱动使用的是 python3, 但是python3 没有装 catkin_pkg, 所以报错。

解决:

vim src/livox_ros_driver/CMakeLists.txt
set(PYTHON_EXECUTABLE /usr/bin/python)
source  devel/setup.bash
roslaunch livox_ros_driver livox_lidar.launch
# 可能第一次运行会失败,再运行一次

问题: 不报错,运行 vins-mono 也没有特征检测出来

解决:发布的图像没有时间戳,换了个带时间戳的可以发布,但是会报对齐的错误。

  1. 解决了 ROS Melodic 下,相机雷达 ROS 的加载问题。

  2. 解决了 VIO 系统不进行特征跟踪的问题,主要是发布的图像没有时间戳,使用另外一个发布即可。

  3. 解决了 VIO 系统的不同步问题,imu_callback 修改这个。主要是因为 IMU 的线性加速度单位是归一化的,需要乘以 9.81。参考:https://github.com/HKUST-Aerial-Robotics/VINS-Mono/issues/62#issuecomment-320622754

posted @ 2024-07-04 18:33  cold_moon  阅读(12)  评论(0编辑  收藏  举报