Ubuntu18.04安装ROS-Melodic
系统要求
- 操作系统: Ubuntu 18.04 (Bionic Beaver)
- ROS 版本: Melodic Morenia (官方长期支持版本)
- Python 版本: 2.7.x (ROS Melodic 默认使用)
安装步骤
1. 配置软件源和密钥
1 | sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' |
2. 更新软件包列表
1 | sudo apt update |
3. 安装 ROS Melodic
完整桌面版 (推荐,包含 GUI 工具、仿真器和常用库):
1 | sudo apt install ros-melodic-desktop-full |
其他可选版本:
1 | sudo apt install ros-melodic-desktop # 基础桌面版(无仿真器) |
4. 初始化 rosdep
1 | sudo rosdep init |
5. 设置环境变量
1 | echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc |
6. 安装构建工具和依赖
1 | sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential |
7. 创建示例工作空间 (可选)
1 | mkdir -p ~/catkin_ws/src |
验证安装
打开新终端,运行:
1 | roscore |
如果看到类似以下输出,说明安装成功:
1 | ... logging to /home/username/.ros/log/xxx/roslaunch-hostname-xxx.log |
常见问题解决
1. 密钥获取失败
如果 apt-key adv 失败,可以手动下载并添加:
1 | curl -sSL 'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xC1CF6E31E6BADE8868B172B4F42ED6FBAB17C654' | sudo apt-key add - |
2. 网络问题
如果下载速度慢,可以替换为国内镜像源(如清华源):
1 | sudo sh -c '. /etc/lsb-release && echo "deb https://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list' |
3. Python 版本验证
确保系统中已安装 Python 2.7:
1 | python --version # 应显示 Python 2.7.x |
测试命令
安装完成后,可以使用以下命令测试 ROS 功能:
roscore- 启动 ROS masterrosrun roscpp_tutorials talker- 运行发布者节点rosrun roscpp_tutorials listener- 运行订阅者节点
参考资源
Ubuntu部署LIO-SAM
概述
LIO-SAM (Lidar Inertial Odometry and Mapping) 是一个紧耦合的激光雷达惯性里程计框架,集成了 IMU 预积分和 GPS 数据,适用于机器人建图和定位。
环境要求
| 组件 | 版本 | 下载地址 |
|---|---|---|
| Ubuntu | 18.04+ | - |
| ROS | Melodic | - |
| gtsam | 4.0.2 | GitHub |
| Eigen | 3.3.7 | GitLab |
| LIO-SAM | 最新版 | GitHub |
安装步骤
1. 安装系统依赖
1 | # 更新系统包列表 |
2. 安装 Eigen 库
1 | # 下载并解压 Eigen |
3. 安装 ROS Melodic
1 | # 设置 ROS 软件源(清华镜像) |
4. 配置 ROS 环境
1 | # 将 ROS 环境变量添加到 bashrc |
5. 安装 gtsam
1 | # 克隆 gtsam 仓库 |
6. 安装 LIO-SAM
1 | # 创建工作空间 |
验证安装
测试 ROS 安装
1 | # 启动 ROS 核心 |
测试 LIO-SAM 编译
1 | # 检查 LIO-SAM 包是否存在 |
常见问题解决
1. Eigen 头文件找不到
问题:编译时出现 fatal error: Eigen/Dense: No such file or directory
解决方案:
1 | # 确保 Eigen 头文件在正确位置 |
2. gtsam 版本不兼容
问题:需要特定版本的 gtsam
解决方案:
1 | # 确保使用 gtsam 4.0.2 版本 |
3. ROS 依赖问题
问题:缺少 ROS 包依赖
解决方案:
1 | # 安装所有缺失的依赖 |
使用说明
启动 LIO-SAM
1 | # 启动 LIO-SAM 主要节点 |
数据播放
1 | # 播放 bag 文件 |
目录结构
1 | ~/catkin_ws/ |
注意事项
- 版本匹配:确保所有组件的版本兼容性
- 内存要求:编译过程需要足够的内存,建议 8GB+ RAM
- 网络连接:下载依赖需要稳定的网络连接
- 权限问题:某些操作需要 sudo 权限
后续步骤
- 配置参数:根据你的传感器调整
config/params.yaml - 数据采集:使用你的传感器采集数据
- 性能调优:根据实际场景调整算法参数
参考资源
Ubuntu部署ROS
准备
建议准备一个干净、换好源的 Ubuntu 16.04 及以上版本(建议 清华源 ),本教程也适用其他 ROS1版本。
查看ubuntu 版本
1 | lsb_release -a |
根据自己的 Ubuntu 的版本选择 ROS 版本 (示例是 Ubuntu 18.04 所以对应ROS版本为 melodic)
![[Ubuntu部署ROS/IMG-20250829234441526.png]]
ROS安装
1. 安装源
1 | sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list' |
2. 设置密钥
1 | sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 |
3. 安装
1 | sudo apt update |
4. 配置环境变量
1 | echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc |
5. 配置rosdep
在使用许多 ROS 工具之前,需要初始化 rosdep,有些功能包源码编译需要rosdep 来安装这些系统依赖项,不配置也不影响ros使用,所以后面需要时再来配置也可以。 rosdep 请求的文件都放在 github 上的, 推荐使用代理。
1 |
|
测试
1 | roscore |
参考
官方文档(melodic)
ubuntu18.04安装ROS Melodic(最详细配置)-CSDN博客
基于Ubuntu18.04的ROS Melodic环境详细配置(含各种大坑及填坑)
[ROS 系列学习教程] ROS与操作系统版本对应关系_ros版本-CSDN博客
Hexo博客配置Giscus评论
kubectl管理多集群
1. K3s指定集群管理IP
在k3s.service中添加启动参数
1 | --advertise-address=<192.168.x.x> |
查看当前Context
1 | kubectl config current-context |
2. 配置集群信息
查看context列表
1 | kubectl config get-contexts |
输出中带有*的Context表示当前活动的Context
切换到指定Context
1 | kubectl config use-context <context_name> |
在指定Context中执行命令,一般用于临时使用
1 | kubectl --context=<context_name> <exec_cmd> |
3. 合并配置文件
在 Kubernetes 环境中,使用 kubectl 管理多个集群非常常见。通过配置 kubeconfig 文件,可以轻松切换和管理多个集群。以下是实现方法的详细步骤。
方法 1: 合并多个配置文件
准备配置文件 假设已有两个集群的配置文件:_
/.kube/config1_ 和 _/.kube/config2_。合并配置文件 使用以下命令将多个配置文件合并为一个:
KUBECONFIG=/.kube/config1:/.kube/config2 kubectl config view –merge –flatten > ~/.kube/config
- 验证合并结果 查看合并后的配置:
kubectl config view
方法 2: 配置环境变量
- 设置环境变量 将多个配置文件路径添加到 KUBECONFIG 环境变量中:
export KUBECONFIG=/.kube/config:/.kube/test-config
- 验证配置 执行以下命令查看所有集群信息:
kubectl config get-contexts
方法 3: 手动编辑配置文件
打开配置文件 编辑 ~/.kube/config 文件,将其他集群的 cluster_、_context 和 user 信息粘贴到现有配置中。
格式示例:
1 |
|
切换集群上下文
查看当前上下文:
1
kubectl config current-context
切换到其他上下文:
1
2
kubectl config use-context <context_name>最佳实践
使用合并或环境变量的方法更高效,避免手动编辑出错。
定期备份 kubeconfig 文件,防止误操作导致数据丢失。
确保每个集群的访问凭证和权限正确无误。
通过以上方法,您可以轻松管理多个 Kubernetes 集群,提高运维效率。
大家好!在 云原生 的世界里,和 Kubernetes 打交道是家常便饭。如果我们像我一样,需要同时管理多个 Kubernetes 集群——比如一个用于严谨发布的 生产环境 ,一个用于大胆实验的 测试环境 ,甚至还有本地开发环境——那么高效、安全地在它们之间切换就成了必备技能。
很多朋友(包括我自己有时也会!)可能会因为一段时间没用而忘记 kubectl 中那些用于切换配置的命令。别担心,这很正常!今天,我们就来系统地回顾一下 kubectl 配置管理的核心概念—— 上下文(Context) ,以及如何利用它在不同集群间自如切换。
核心概念:kubeconfig 文件与上下文(Context)
kubectl 的所有配置信息都存储在一个或多个 YAML 文件中,默认情况下是 $HOME/.kube/config 。这个文件我们通常称为 kubeconfig 文件。把它想象成我们的 Kubernetes “护照”,里面记录了我们能访问哪些集群,用什么身份访问。
一个 kubeconfig 文件通常包含三个主要部分:
- Clusters(集群) :定义了我们要连接的 Kubernetes 集群的信息,比如 API Server 的地址和集群的 CA 证书。
- Users(用户) :定义了访问集群所使用的凭证,可能是用户名/密码、Token 或客户端证书。
- Contexts(上下文) :这是连接 集群 和 用户 的桥梁。一个 Context 定义了使用哪个 User 凭证去访问哪个 Cluster。
关键点: 我们可以通过切换 Context 来改变 kubectl 当前操作的目标集群和使用的身份。
管理 kubeconfig 的常用 kubectl config 命令
kubectl 提供了一套 config 子命令来帮助我们查看和管理 kubeconfig 文件。以下是几个最核心、最常用的命令:
1. 查看当前配置:kubectl config view
这个命令会显示我们当前的 kubeconfig 文件内容(或者合并后的内容,如果我们配置了多个文件)。它会隐藏敏感信息(如证书和 Token 的具体内容),非常适合快速检查配置概览。
1 | kubectl config view |
如果我们想看某个特定 Context 的详细信息,可以加上 --context 参数:
1 | # 查看名为 'prod-cluster' 的 context 细节 |
2. 列出所有可用的上下文:kubectl config get-contexts
这是 最常用 的命令之一,它会列出我们在 kubeconfig 文件中定义的所有 Context。当前正在使用的 Context 会在名称前用星号 * 标记。
1 | kubectl config get-contexts |
从上面的输出可以清晰地看到:
- 当前激活的 Context 是
test-cluster。 - 还有名为
prod-cluster和docker-desktop的 Context 可供切换。
3. 查看当前使用的上下文:kubectl config current-context
如果我们只想快速确认当前 kubectl 命令会作用于哪个 Context(哪个集群),这个命令最直接:
1 | kubectl config current-context |
4. 切换上下文:kubectl config use-context
这绝对是 核心中的核心 !当我们需要将 kubectl 的操作目标从一个集群切换到另一个集群时,就使用这个命令。
假设我们想从当前的 test-cluster 切换到 prod-cluster :
1 | kubectl config use-context prod-cluster |
切换成功后,我们可以再次使用 kubectl config current-context 或 kubectl config get-contexts 来验证当前上下文是否已更改。
1 | kubectl config current-context |
现在,所有后续的 kubectl 命令(如 kubectl get pods, kubectl apply -f ... 等)都会默认发送到 prod-cluster 所定义的集群,并使用 user-prod 的身份进行认证。
实践场景:在生产和测试集群间切换
假设我们的 kubeconfig 文件中已经配置好了代表生产环境和 测试环境 的 Context,可能分别命名为 production 和 testing 。
我们的日常操作流程可能是这样的:
- 检查当前在哪: 或者看列表:
1
2kubectl config current-context
bash11
2kubectl config get-contexts
bash1 - 需要操作测试环境:
1
2
3
4
5
6kubectl config use-context testing
# 验证一下(可选但推荐)
kubectl config current-context
# 现在可以对测试环境执行操作了
kubectl get pods -n test-namespace
bash12345 - 需要紧急处理生产环境问题:
1
2
3
4
5
6kubectl config use-context production
# 验证一下
kubectl config current-context
# 操作生产环境(请务必小心!)
kubectl get deployment -n critical-app
bash12345 - 完成生产环境操作,切回测试环境继续工作:
1
2kubectl config use-context testing
bash1
提升效率的小贴士
- 清晰命名 Context :给我们的 Context 起一个能清晰表明环境和用途的名字,比如
gke-prod-eu,eks-dev-us,local-minikube等。避免使用模糊不清的名字。 - 使用 Shell 别名 :很多人喜欢为
kubectl设置别名,比如alias k=kubectl。这样我们的命令可以更短:k config get-contexts,k config use-context my-context。 - 考虑使用辅助工具 :社区有一些流行的小工具可以让我们更方便地切换 Context 和 Namespace,例如:
kubectx(用于切换 Context)kubens(用于切换 Namespace)
这些工具通常提供交互式选择或更简洁的命令,可以显著提高效率。可以通过包管理器(如 Homebrew, apt, yum)或直接下载二进制文件来安装它们。
- 注意
kubeconfig文件的安全性 :kubeconfig文件包含了访问集群的凭证,务必妥善保管,不要泄露给未授权的人员。
总结
管理多个 Kubernetes 集群配置并不复杂,核心就在于理解和运用 kubeconfig 文件中的 Context 概念。通过掌握 kubectl config 的几个关键子命令:
view: 查看配置概览get-contexts: 列出所有可用上下文current-context: 显示当前激活的上下文use-context <context-name>: 切换到指定的上下文
我们就能轻松地在不同的 Kubernetes 环境(如生产和测试)之间安全、高效地切换了。希望这篇回顾能帮我们重新找回操作 kubectl 多集群配置的熟悉感!

