【ROS2】MOMO的鱼香ROS2(二)Ubuntu系统精讲——从命令行操作到软件管理实战

news2026/3/14 3:56:17
1. 从“黑框框”到“老朋友”为什么命令行是ROS2开发的基石大家好我是MOMO。上一期我们聊了聊ROS2的入门算是开了个头。今天咱们得沉下心来好好打磨一下我们最重要的“兵器”——Ubuntu系统特别是那个让很多新手朋友望而生畏的“黑框框”终端命令行。我刚开始接触Linux和机器人开发的时候也觉得这命令行太不友好了满屏幕的字母没有图标没有按钮感觉像在演黑客电影。但用久了你会发现它才是最高效、最强大的工具尤其是在ROS2开发里。你想啊机器人系统动不动就要编译代码、安装依赖、启动节点、查看日志如果全靠鼠标点来点去那效率可就太低了。命令行就像给你的电脑下“圣旨”一句话它就得乖乖执行精准又快速。所以这一篇咱们的目标不是死记硬背命令而是把命令行变成你的“老朋友”。我会结合我这些年踩过的坑、总结的经验带你从最基础的“走路”开始到能“小跑”着管理软件、处理文件最终为后续畅快地进行ROS2开发铺平道路。别担心咱们一步步来我保证等你跟着操作完你会爱上这种指哪打哪的控制感。2. 命令行生存指南从“迷路”到“认路”刚开始用命令行最容易遇到的问题就是“我在哪”和“我要的东西在哪”。这种感觉就像被蒙上眼睛扔进了一个巨大的图书馆。别慌几个核心命令就能帮你重建方向感。2.1 认路与导航pwd,ls,cd打开终端快捷键CtrlAltT你首先会看到一行类似momoubuntu:~$的提示符。这里的~符号代表你的家目录也就是你的个人地盘相当于Windows里的“用户”文件夹。pwd想知道自己此刻的精确坐标输入pwdPrint Working Directory它会告诉你绝对路径比如/home/momo。这个命令我每次进入一个陌生目录都会先用一下确认位置避免操作失误。ls认清了位置下一步就是看看周围有什么。lsList就是你的眼睛。直接输入ls会列出当前目录下所有可见的文件和文件夹。但这样看信息太少了我们得加点儿“参数”让它看得更清楚。ls -l以长列表格式显示能看到文件权限、所有者、大小、修改时间等详细信息。这是最常用的组合之一。ls -a显示所有文件包括那些以点.开头的隐藏文件比如.bashrc这种配置文件。在Linux里隐藏文件通常很重要。ls -la我个人的最爱把上面两个合起来既看详情又看全部。试试在终端里分别输入这几个命令感受一下输出的不同。cd现在我们要移动了。cdChange Directory是导航命令。cd 文件夹名就能进入那个文件夹。有几个特殊符号需要记住cd ..返回上一级目录两个点。cd ~或直接cd立刻回到你的家目录。cd -在两个最近切换过的目录之间快速跳转非常方便。举个例子假设我想看看系统根目录下有什么我会依次输入pwd # 先确认我在家目录 /home/momo cd / # 跳转到根目录 ls -l # 详细查看根目录内容 cd - # 嗖的一下又回到刚才的 /home/momo多练习几次这种在目录间穿梭的感觉就来了。2.2 创建、搬家与清理mkdir,cp,mv,rm熟悉了环境我们就要开始改造它了。这些命令让你能创建结构、复制备份、移动整理和删除废弃文件。mkdir创建新文件夹。mkdir ros2_workspace就在当前目录创建了一个名为ros2_workspace的文件夹。如果想创建一串嵌套的目录比如src/my_pkg而src目录不存在直接mkdir src/my_pkg会报错。这时就需要-p参数mkdir -p src/my_pkg它会自动创建所有不存在的父目录。cp复制文件或目录。最基本的用法是cp 源文件 目标位置。比如cp important.txt ~/backup/就把文件备份到家目录的backup文件夹里。复制目录需要加-r递归参数cp -r my_project/ backup/。强烈建议在重要操作前先ls确认一下目标位置复制错了很麻烦。mv这个命令有两个功能一是移动二是重命名。Linux里“重命名”其实就是“移动”到同一个目录下的新名字。移动mv hello.txt ~/Documents/把文件移到文档文件夹。重命名mv old_name.txt new_name.txt原地改名。 它同样可以搭配-i参数交互模式在覆盖已有文件前询问你是个安全好习惯。rm最需要谨慎的命令删除。它默认不会进回收站删了就很难找回。rm file.txt删除文件。rm -r directory/删除目录及其内部所有内容-r代表递归。rm -rf directory/在-r基础上加-f强制不进行任何确认提示直接删除。这个命令威力巨大请务必在确认路径无误后使用。一个经典的危险操作是sudo rm -rf /千万别试这会尝试删除根目录下的所有文件导致系统崩溃。我的经验是删除前先用ls或cd到目标目录看一眼或者先rm -ri交互式递归删除一个个确认。3. 软件管理三大法宝apt,dpkg与源码编译玩转Ubuntu或者说玩转ROS2核心技能之一就是装软件。ROS2本身、它的各种功能包、开发工具全都要通过软件管理来安装。主流方法就三种各有各的适用场景。3.1 首选利器apt包管理器这是Ubuntu上最常用、最省心的安装方式。你可以把它想象成一个高度智能的“应用商店后台”。apt会从Ubuntu官方和添加的软件源仓库里自动解决软件依赖关系比如装A需要B和C它会一起给你装上。基础操作流程更新软件源列表这步很重要相当于刷新应用商店的货架获取最新的软件信息。命令是sudo apt update。sudo是获取管理员权限因为安装软件涉及系统目录。搜索软件不确定软件包确切名字用apt search 关键词。比如apt search ros-humble会列出所有Humble版本ROS2相关的包。安装软件sudo apt install 软件包名。例如安装一个经典的终端多路复用器tmuxsudo apt install tmux。加上-y参数可以自动确认安装提示适合写在脚本里sudo apt install tmux -y。升级软件sudo apt upgrade升级所有可升级的软件包。如果只想升级某一个用sudo apt upgrade 软件包名。卸载软件sudo apt remove 软件包名移除软件包但保留配置文件。sudo apt purge 软件包名移除软件包并删除配置文件清理更彻底。sudo apt autoremove自动删除那些当初作为依赖被安装但现在已不被任何程序需要的“孤儿”包定期运行一下可以保持系统清爽。实战场景安装ROS2。通常ROS2的安装就是通过添加官方软件源然后用apt来完成的。例如设置好源和密钥后安装ROS2基础版可能就是一行命令sudo apt install ros-humble-desktop。apt会处理好所有复杂的依赖这正是它的强大之处。3.2 处理离线包dpkg有时候你会从网上下载到.deb格式的软件包尤其是某些商业软件或特定版本的驱动这时apt就无能为力了需要用到dpkg。dpkg是一个底层的包管理工具apt其实是在它的基础上增加了依赖解决和远程仓库功能。使用方法很简单sudo dpkg -i 下载的包名.deb。比如sudo dpkg -i google-chrome-stable_current_amd64.deb。但是要注意dpkg不解决依赖。如果这个.deb包需要一些你系统里没有的库安装就会报错。通常的解决方法是先运行sudo dpkg -i xxx.deb如果报依赖错误再运行sudo apt install -f或sudo apt --fix-broken install让apt来尝试自动修复和安装缺失的依赖。这是一个dpkg和apt联合作战的经典流程。3.3 高手之路源码编译安装当你需要最新版的软件软件源里的版本太旧或者需要自定义软件的编译选项时就需要从源代码编译安装。ROS2的很多高级功能包或你自己写的包最终也是要走编译这一步的。通用三部曲配置configure-编译make-安装make install。准备编译环境首先得安装基本的编译工具链sudo apt install build-essential。这个包包含了gcc,g,make等核心工具。获取源码通常是下载一个压缩包.tar.gz或.zip用tar -xzf 文件名.tar.gz解压然后cd进入解压后的目录。配置运行./configure脚本。这个脚本会检查你的系统环境比如库是否齐全并生成适合你系统的编译规则Makefile。你可以通过参数定制比如./configure --prefix/usr/local/mysoftware来指定软件安装路径默认是/usr/local。编译运行make。这是最耗时的一步电脑会开始把源代码变成可执行文件。你可以用make -j4来启用4个线程并行编译加快速度数字根据你的CPU核心数调整。安装运行sudo make install。这会把编译好的文件复制到系统目录比如你configure时指定的prefix路径。因为要写入/usr/local这类系统目录所以需要sudo权限。一个ROS2相关的例子假设你要安装一个ROS2功能包但它不在官方源里只提供了源码。你克隆代码到你的ROS2工作空间的src目录后回到工作空间根目录执行的colcon build命令其本质就是自动化地执行了类似make的编译过程。理解了这个手动过程你对ROS2的编译系统会有更深的认识。4. 权限管理理解“sudo”与文件权限在命令行里你可能会经常遇到“Permission denied”权限被拒绝的报错。这是因为Linux是一个多用户系统严格区分文件的所有者和权限以保证系统安全。4.1 临时获取超级权限sudo普通用户不能修改系统关键文件或安装软件。sudoSuper User DO命令允许被授权的用户临时以超级管理员root的身份执行命令。输入sudo 某个命令后系统会提示你输入当前用户自己的密码注意不是root密码验证通过后这条命令就会以最高权限运行。使用习惯只在必要时使用sudo。不要图省事一直待在root用户下操作误操作的风险很大。安装软件sudo apt install、修改系统配置等操作才需要它。4.2 理解文件权限ls -l与chmod用ls -l看一个文件你会看到类似这样的信息-rw-r--r-- 1 momo momo 1234 Sep 1 10:00 myfile.txt。我们关注前面那串字符-rw-r--r--。这串字符可以分为四部分第一个字符-表示是普通文件d表示目录l表示链接文件。后面九位每三位一组分别代表文件所有者u、所属用户组g、其他用户o的权限。每组的三位依次是读r、写w、执行x权限。有该权限则显示字母没有则显示-。所以-rw-r--r--的意思是这是一个文件所有者momo可以读r写w但不能执行x因为没有x同组用户和其他用户都只能读r。修改权限chmod如果你想让自己写的脚本可以运行就需要给它加上执行权限。命令是chmodChange Mode。数字法常用chmod 755 script.sh。这里的755是八进制数分别对应 u/g/o 的权限。7二进制111代表rwx5二进制101代表r-x。所以755就是 urwx, grx, orx。符号法chmod ux script.sh给所有者增加执行权限。chmod go-w file.txt去掉组用户和其他用户的写权限。在ROS2开发中你写的Python节点或Shell脚本在运行前通常都需要chmod x 文件名来赋予执行权限否则系统会拒绝运行它。5. 效率提升技巧与ROS2环境下的实战掌握了基本生存技能我们来点能提升效率的“魔法”。5.1 终端技巧补全、历史与通配符Tab键补全这是命令行最好的朋友。输入命令或路径的前几个字母按一下Tab系统会自动补全。如果按一下没反应说明有多个选项连按两下Tab会列出所有可能的选项。这能极大减少打字和拼写错误。历史命令按键盘的上箭头可以调出刚才执行过的命令下箭头回来。用history命令可以查看所有历史命令列表可以用!编号来快速执行历史中的某条命令。通配符*代表任意多个字符?代表一个字符。比如rm *.log删除所有日志文件cp project_2024???.txt backup/复制特定模式的文件。5.2 ROS2开发中的典型命令行工作流假设我们现在要开始一个新的ROS2项目结合今天学的命令流程可能是这样的创建工作空间结构mkdir -p ~/ros2_ws/src # 一次性创建嵌套目录 cd ~/ros2_ws # 进入工作空间根目录 pwd # 确认一下路径在src里创建功能包这里用ROS2命令但本质是创建文件夹和文件cd src ros2 pkg create my_robot --build-type ament_cmake # 这会生成一个包目录 ls -la # 查看创建好的包目录结构安装项目依赖编辑了包的配置文件后需要安装缺失的依赖。cd ~/ros2_ws # 回到工作空间根目录 rosdep install -i --from-path src --rosdistro humble -y # rosdep会调用apt来安装系统依赖编译工作空间colcon build # 开始编译这本质上是一个复杂的make过程 # 编译后会在工作空间生成install目录里面就是安装好的可执行文件和库运行与调试source install/setup.bash # “激活”当前工作空间的环境 ros2 run my_robot my_node # 运行你的节点 # 如果想查看节点打印的信息你可能需要打开另一个终端用ros2 topic echo等命令看整个ROS2的开发流程都离不开这些基础的Ubuntu命令行操作。文件操作、权限管理、软件安装通过apt或源码编译贯穿始终。当你对这些命令烂熟于心ROS2的学习曲线就会平坦很多。命令行不是洪水猛兽它是你控制机器人系统的缰绳。多练多试遇到错误别怕仔细读终端给出的提示信息那里面通常就藏着解决方案。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2409838.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…