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 也没有特征检测出来
解决:发布的图像没有时间戳,换了个带时间戳的可以发布,但是会报对齐的错误。
-
解决了 ROS Melodic 下,相机雷达 ROS 的加载问题。
-
解决了 VIO 系统不进行特征跟踪的问题,主要是发布的图像没有时间戳,使用另外一个发布即可。
-
解决了 VIO 系统的不同步问题,imu_callback 修改这个。主要是因为 IMU 的线性加速度单位是归一化的,需要乘以 9.81。参考:https://github.com/HKUST-Aerial-Robotics/VINS-Mono/issues/62#issuecomment-320622754
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2023-07-04 ubuntu20.04 + windows10 双系统,ubuntu 的wifi 图标消失