Nvblox ROS1 安装配置

简介: 这篇文章提供了Nvblox ROS1在Ubuntu系统上的安装和配置指南,包括使用Docker容器构建ROS工作空间、运行节点和测试数据包的步骤,以及解决CUDA和Docker相关问题的方法。

安装并配置Nvblox ROS1

  • 下载Nvblox ROS1
mkdir -p ~/nvblox_ros1_ws/src/
mkdir  ~/data
cd ~/nvblox_ros1_ws/src/
git clone https://github.com/ethz-asl/nvblox_ros1.git
cd nvblox_ros1
git submodule update --init --recursive
  • 安装Docker
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo docker run hello-world
sudo usermod -aG docker $USER
sudo reboot
  • 构建Docker镜像
cd ~/nvblox_ros1_ws/src/nvblox_ros1/docker
bash run_docker.sh -b -w /home/$USER/nvblox_ros1_ws
  • 在Docker容器内构建ROS工作空间

注意: 这些操作应当在Docker的nvblox容器中进行。

docker exec -it nvblox bash

cd ~/nvblox_ws/
catkin init
catkin config --extend /opt/ros/noetic 
catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release
catkin build
echo "source ~/nvblox_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc

测试

  • 下载测试数据包
cd ~/data/
wget http://robotics.ethz.ch/~asl-datasets/2023_nvblox_datasets/panopt/run1.bag
  • 启动nvblox docker容器
cd nvblox_ros1/docker
./run_docker.sh

注意: 以下操作应当在Docker的nvblox容器中进行。

docker exec -it nvblox bash

  • 运行nvblox_ros节点
# Terminal 1 in docker
roslaunch nvblox_ros nvblox_ros_panopt.launch rviz:=true
  • 回放测试数据包
# Terminal 2 in docker
rosbag play --clock ~/data/run1.bag
  • 保存Mesh文件
# Terminal 3 in docker
rosservice call /nvblox_node/save_ply "file_path: '/root/nvblox_ws'"

TroubleShooting

CUDA

Occurred on x86_64 Ubuntu20.04 RTX4070Ti

 Error string: CUDA driver version is insufficient for CUDA runtime version.
[nvblox_node-3] process has died [pid 6628, exit code 99, cmd /root/nvblox_ws/devel/lib/nvblox_ros/nvblox_node depth/image:=/data/depth_image depth/camera_info:=/data/depth_image/camera_info color/image:=/data/color_image color/camera_info:=/data/color_image/camera_info __name:=nvblox_node __log:=/root/.ros/log/25507420-a6c3-11ee-8137-70a8d35674a3/nvblox_node-3.log].
log file: /root/.ros/log/25507420-a6c3-11ee-8137-70a8d35674a3/nvblox_node-3*.log
sudo apt update
sudo apt install nvidia-driver-535

docker

删除所有容器

docker rm -f $(docker ps -a -q)

删除所有镜像

docker rmi -f $(docker images -q)

删除所有未使用的镜像

docker image prune -a

删除所有未使用的数据

docker system prune
相关实践学习
使用ROS创建VPC和VSwitch
本场景主要介绍如何利用阿里云资源编排服务,定义资源编排模板,实现自动化创建阿里云专有网络和交换机。
ROS入门实践
本课程将基于基础设施即代码 IaC 的理念,介绍阿里云自动化编排服务ROS的概念、功能和使用方式,并通过实际应用场景介绍如何借助ROS实现云资源的自动化部署,使得云上资源部署和运维工作更为高效。
目录
相关文章
搭建内网的NTP时间服务器
NTP时间服务器 标签: linux 笔者Q:972581034 交流群:605799367。有任何疑问可与笔者或加群交流 1.简介 NTP(Network Time Protocol,网络时间协议)是用来使网络中的各个计算机时间同步的一种协议。
2152 0
|
9月前
|
存储 机器学习/深度学习 人工智能
RAG系统嵌入模型怎么选?选型策略和踩坑指南
嵌入是RAG系统的核心,直接影响检索质量。本文详解嵌入原理,解析稠密/稀疏、长上下文、多向量等类型,梳理选型关键:领域匹配、上下文长度、维度与成本,并结合MTEB基准给出实用建议,助你为业务挑选高效稳健的嵌入方案。
1093 2
RAG系统嵌入模型怎么选?选型策略和踩坑指南
|
JSON 监控 JavaScript
开发者必备的 WebSocket 指南
WebSocket 是一种支持双向、全双工通信的协议,能够以低开销实现实时数据交互。与传统 HTTP 不同,WebSocket 通过持久连接显著降低延迟,适用于在线游戏、聊天应用、实时通知和金融交易等场景。本文详解 WebSocket 的特性、优势及其实现方式,提供股票行情示例代码,并对比其他协议,帮助开发者掌握这一关键技术,构建高效实时应用。
|
C++
QT第一个程序命名空间详解,解释ui_widget的和xxx.cpp的联系
QT第一个程序命名空间详解,解释ui_widget的和xxx.cpp的联系
712 0
|
前端开发
HTML+CSS实现小米官网首页(一)
HTML+CSS实现小米官网首页
|
缓存 Java 应用服务中间件
Tomcat 启动闪退问题解决方法
在开发中,当使用 IntelliJ IDEA 遇到 Tomcat 启动后闪退的问题时,不要慌,可以尝试以下方法来解决
381 1
|
SQL 负载均衡 前端开发
mysql主从复制和读写分离,看完这篇你就彻底懂了
mysql主从复制和读写分离,看完这篇你就彻底懂了
2226 1
mysql主从复制和读写分离,看完这篇你就彻底懂了
|
Java C语言 Python
解析Python中的全局解释器锁(GIL):影响、工作原理及解决方案
解析Python中的全局解释器锁(GIL):影响、工作原理及解决方案
509 0
|
存储 关系型数据库 数据挖掘
第11章‘数据库设计规范(1)
第11章‘数据库设计规范
346 0