当前位置: 首页 > news >正文

【记录】新Ubuntu20配置voxelmap的环境安装

因为系统总出问题,仅用于个人纪录。

1. 升级CMake到3.28及以上版本(Sophus依赖)

wget https://github.com/Kitware/CMake/releases/download/v3.28.3/cmake-3.28.3-linux-x86_64.sh
chmod +x cmake-3.28.3-linux-x86_64.sh
sudo ./cmake-3.28.3-linux-x86_64.sh --skip-license --prefix=/usr/local

2. Install Eigen3.4.0

Required by Sophus, and Ceres.

wget https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.tar.gz
tar -xzf eigen-3.4.0.tar.gz
cd eigen-3.4.0

然后编译安装。

3. Install Ceres

版本采用Version: -solver-2.2.0.tar.gz

#CMake (already installed)
sudo apt-get install cmake
# google-glog + gflags
sudo apt-get install libgoogle-glog-dev libgflags-dev
# Use ATLAS for BLAS & LAPACK
sudo apt-get install libatlas-base-dev
# Eigen3 (already installed)
sudo apt-get install libeigen3-dev
# SuiteSparse (optional)
sudo apt-get install libsuitesparse-devwget ceres-solver.org/ceres-solver-2.2.0.tar.gz
tar zxf ceres-solver-2.2.0.tar.gz
mkdir ceres-bin
cd ceres-bin
cmake ../ceres-solver-2.2.0
make -j12
make test
make install

4. Install Sophus

git clone https://github.com/strasdat/Sophus.git
cd Sophus
mkdir build && cd build
cmake ..
make
sudo make install

5. 安装其他代码

Livox-SDK(安装到任意路径即可)

livox_ros_driver2 (安装到workspace下方)

./build.sh ROS1

6. Install libtorch

libtorch需要确定python、cuda、cudann的版本。
测试代码:

import torch
print(f"PyTorch version: {torch.__version__}")          # 输出 PyTorch 版本(如 2.1.0)
print(f"Cuda available: {torch.cuda.is_available()}")  # 应返回 True
print(f"Cuda version: {torch.version.cuda}")         # 应返回 12.1(兼容 12.2)
print(f"Cudann version: {torch.backends.cudnn.version()}")  # 输出 cuDNN 版本

输入如下:

PyTorch version: 2.5.1
Cuda available: True
Cuda version: 12.4
Cudann version: 90101

选择:libtorch version: 12.1
libtorch是二进制文件,下载后不需要编译,只需要在cmakelist中加进去。

wget https://download.pytorch.org/libtorch/cu121/libtorch-cxx11-abi-shared-with-deps-2.1.0%2Bcu121.zip
unzip libtorch-cxx11-abi-shared-with-deps-2.1.0+cu121.zip
export LIBTORCH_HOME=/PATH/TO/libtorch		# 但是这个好像没有用

遇到的bug

将电脑主机名设定为了1660,但在启动roscore时遇到问题,没有正常启动,一段时间后报失链接。
查看日志,发现roscore并没有像往常一样链接localhost:11311,而是找的1660。
deepseek给出:如果主机名设定为了1660这种纯数字,roscore在连接时会当作ip而不是本地。

ROS 的依赖问题
ROS 的核心组件(如 roscore)依赖主机名进行网络通信,而:
许多网络工具(如 ping、hostname -I)会将纯数字名称误认为是端口号或IP片段,导致解析失败。
ROS 的默认环境变量(如 ROS_MASTER_URI)可能生成错误的URL(例如 http://1660:11311,被误解析为端口1660)。
日志中的直接证据
您之前看到的错误提示 ping 1660 就是因为ROS误将主机名当作IP或端口,导致无法连接自身。

查看:Check: vim /etc/hosts,显示的配置如下。

127.0.0.1       localhost
127.0.1.1       1660

修改 1660 为其他名字,例如 GTX1660,然后就可以了。

相关文章:

  • w317汽车维修预约服务系统设计与实现
  • ThreadLocal理解
  • SALOME源码分析: 命令系统
  • Android WebView加载h5打开麦克风与摄像头的权限问题
  • 学习记录:DAY22
  • 仙盟创梦IDE-智能编程,编程自动备份+编程审计
  • OnlyOffice Document Server 源码调试指南-ARM和x86双模式安装支持
  • 软连接和硬连接【Linux操作系统】
  • iO(不可区分混淆)是Web3隐私的圣杯?
  • AntSK:基于大模型的一体化AI知识库解决方案深度解析
  • Elasticsearch 常用的 API 接口
  • 【android Framework 探究】pixel 5 内核编译
  • jdk8之后都有什么优化单例的方式
  • 第 12 届蓝桥杯 C++ 青少组中 / 高级组省赛 2021 年 4 月 24 日真题(选择题)
  • GoogleTest:TEST_F
  • php artisan resetPass 执行密码重置失败的原因?php artisan resetPass是什么 如何使用?-优雅草卓伊凡
  • 基于C++、JsonCpp、Muduo库实现的分布式RPC通信框架
  • 安妮推广导航系统开心版多款主题网址推广赚钱软件推广变现一键统计免授权源码Annie
  • 【SpringBoot】Spring中事务的实现:声明式事务@Transactional、编程式事务
  • 基于RT-Thread的STM32开发第一讲——USART
  • 消息人士称以色列政府初步同意扩大对加沙军事行动
  • 阿根廷发生5.6级地震,震源深度30公里
  • 家政阿姨如何炼成全国劳模?做饭、收纳、养老、外语样样都会
  • 湖北鄂州通报4所小学学生呕吐腹泻:供餐企业负责人被采取强制措施
  • 全国人民代表大会常务委员会公告〔十四届〕第十号
  • 街区党支部书记们亮出治理实招,解锁“善治街区二十法”