ROS云课基础篇-01-Linux-250529

news2025/7/22 22:39:24

ROS云课基础篇收到了很多反馈,正面评价比例高,还有很多朋友反馈需要写更具体一点。 

ROS云课基础篇极简复习-C++、工具、导航、巡逻一次走完-CSDN博客 

于是,有了这篇以及之后的案例,案例均已经测试过8年,但没有在博客公开。

截止250529博客已经公开内容不足开发全部教程的3%,后续力争达到10%,以点带面。

自主探索最为关键。

博客仅供参考,其实看不看都无所谓的。

时间有限,写得稀巴烂,非常非常抱歉。



ROS Kinetic工作空间(catkin_ws)详细实验流程(基于Zsh)

一、实验目标

通过实践掌握ROS Kinetic工作空间的创建、编译、包管理及环境配置,结合Zsh特性与Bash脚本自动化备份,形成完整的ROS开发环境搭建能力。


二、实验环境

  • 操作系统:Ubuntu 16.04 LTS
  • ROS版本:ROS Kinetic Kame
  • Shell环境:Zsh(需替代默认Bash)
  • 工具catkin_makeoh-my-zsh(可选)、treesshaptsudo

三、实验步骤与结果

1. 安装并配置Zsh

1.1 安装Zsh
# 安装Zsh
sudo apt update
sudo apt install zsh -y

# 验证安装
zsh --version

bash

# 安装Zsh
sudo apt update
sudo apt install zsh -y
# 验证安装
zsh --version

 

1.2 安装Oh-My-Zsh(可选,增强体验)
 

bash

# 通过curl安装Oh-My-Zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
# 或通过wget安装
sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
1.3 设置Zsh为默认Shell
 

bash

# 修改默认Shell为Zsh
chsh -s $(which zsh)
# 重新登录或重启终端使配置生效

2. 创建并初始化ROS工作空间

2.1 创建工作空间目录结构
 

zsh

# 创建工作空间顶级目录
mkdir -p ~/catkin_ws/src
# 进入src目录并初始化工作空间
cd ~/catkin_ws/src
catkin_init_workspace
# 返回工作空间根目录
cd ~/catkin_ws
# 编译工作空间(生成build和devel目录)
catkin_make
2.2 验证工作空间结构
 

zsh

# 安装tree工具(若未安装)
sudo apt install tree -y
# 查看工作空间目录结构
tree -L 2

预期输出


~/catkin_ws
├── build
│ ├── CMakeCache.txt
│ ├── CMakeFiles/
│ └── Makefile
├── devel
│ ├── env.sh
│ ├── setup.zsh # 注意:Zsh下自动生成setup.zsh
│ └── lib/
└── src
├── CMakeLists.txt
└── (空或已有ROS包)

3. 创建ROS功能包

3.1 使用catkin_create_pkg创建包
 

zsh

# 进入src目录
cd ~/catkin_ws/src
# 创建名为my_package的包,依赖roscpp、rospy、std_msgs
catkin_create_pkg my_package roscpp rospy std_msgs
3.2 验证包结构
 

zsh

tree ~/catkin_ws/src/my_package

预期输出

 

~/catkin_ws/src/my_package
├── CMakeLists.txt
├── include/
│ └── my_package/
├── package.xml
└── src/

4. 编译工作空间

 

zsh

# 返回工作空间根目录并编译
cd ~/catkin_ws
catkin_make
# 刷新环境变量(临时生效)
source devel/setup.zsh # 使用setup.zsh而非setup.bash
# 永久生效(添加到.zshrc)
echo "source ~/catkin_ws/devel/setup.zsh" >> ~/.zshrc
source ~/.zshrc
4.1 验证环境变量
 

zsh

echo $ROS_PACKAGE_PATH

预期输出

 

/home/user/catkin_ws/src:/opt/ros/kinetic/share

5. 编写并运行ROS节点

5.1 创建Python节点
 

zsh

# 进入包的scripts目录
mkdir -p ~/catkin_ws/src/my_package/scripts
cd ~/catkin_ws/src/my_package/scripts
# 创建Python脚本
gedit talker.py &

脚本内容(同Bash版本):

 

python

#!/usr/bin/env python
import rospy
from std_msgs.msg import String
def talker():
pub = rospy.Publisher('chatter', String, queue_size=10)
rospy.init_node('talker', anonymous=True)
rate = rospy.Rate(10)
while not rospy.is_shutdown():
hello_str = "hello world %s" % rospy.get_time()
rospy.loginfo(hello_str)
pub.publish(hello_str)
rate.sleep()
if __name__ == '__main__':
try:
talker()
except rospy.ROSInterruptException:
pass
5.2 添加执行权限并运行
 

zsh

chmod +x talker.py
# 启动roscore
roscore &
# 在新终端中运行节点
rosrun my_package talker.py

6. 编写Zsh脚本自动化备份

6.1 创建备份脚本
 

zsh

# 进入scripts/backup目录
mkdir -p ~/catkin_ws/src/scripts/backup
cd ~/catkin_ws/src/scripts/backup
# 创建备份脚本
gedit backup_kinetic.zsh &

脚本内容(Zsh与Bash语法兼容):

 

zsh

#!/bin/zsh
# ROS Kinetic备份脚本
set -euo pipefail
ROS_WS_DIR="$HOME/catkin_ws"
BACKUP_DIR="/var/backups/ros_kinetic"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
mkdir -p "$BACKUP_DIR"
tar --exclude='./build' --exclude='./devel' -czf "$BACKUP_DIR/ros_kinetic_$TIMESTAMP.tar.gz" "$ROS_WS_DIR"
echo "ROS Kinetic工作空间已备份至:$BACKUP_DIR"
6.2 添加执行权限并测试
 

zsh

chmod +x backup_kinetic.zsh
./backup_kinetic.zsh

7. 配置.zshrc与进程管理

7.1 自定义.zshrc
 

zsh

gedit ~/.zshrc &

添加内容

 

zsh

# ROS Kinetic环境变量
source /opt/ros/kinetic/setup.zsh # 使用setup.zsh而非setup.bash
source ~/catkin_ws/devel/setup.zsh
# 自定义别名
alias cdw='cd ~/catkin_ws'
alias cds='cd ~/catkin_ws/src'
alias rosbackup='~/catkin_ws/src/scripts/backup/backup_kinetic.zsh'
# 修改命令提示符(Oh-My-Zsh主题可简化配置)
# 示例:使用agnoster主题(需安装Powerline字体)
ZSH_THEME="agnoster"
# 启用插件(如git、zsh-autosuggestions)
plugins=(git zsh-autosuggestions)
7.2 进程管理
# 查看ROS进程
ps aux | grep roscore  

# 终止进程(假设PID为1234)
kill -9 1234

 zsh

 

# 查看ROS进程
ps aux | grep roscore
# 终止进程(假设PID为1234)
kill -9 1234

8. 使用SSH远程管理

8.1 配置SSH服务
 

zsh

sudo apt install openssh-server -y
sudo service ssh start
# 生成SSH密钥对
ssh-keygen -t rsa -b 4096
# 将公钥复制到远程服务器(假设IP为192.168.1.100)
ssh-copy-id -i ~/.ssh/id_rsa.pub user@192.168.1.100
# 测试SSH连接
ssh user@192.168.1.100

9. 软件包管理

9.1 安装ROS Kinetic软件包
 

zsh

sudo apt update
sudo apt install ros-kinetic-rviz ros-kinetic-turtlesim -y

四、实验总结

  1. Zsh环境配置
    • 安装并设置Zsh为默认Shell,可选安装Oh-My-Zsh增强体验。
    • ROS Kinetic自动生成setup.zsh,需在.zshrc中加载。
  2. 工作空间创建
    • 通过catkin_init_workspacecatkin_make完成初始化与编译。
  3. 包管理
    • 使用catkin_create_pkg创建功能包,并通过catkin_make编译。
  4. 节点开发
    • 编写Python节点并通过rosrun运行。
  5. 自动化备份
    • Zsh脚本结合tar命令实现ROS工作空间备份。
  6. 环境配置
    • 通过.zshrc自定义终端行为,简化开发流程。
  7. 远程管理
    • SSH密钥认证提升安全性。
  8. 软件包管理
    • apt统一管理ROS Kinetic依赖。

五、实验扩展

  1. Zsh插件推荐

    • zsh-autosuggestions:命令行自动补全。
    • zsh-syntax-highlighting:语法高亮。
  2. 定时备份

     

    zsh

    # 编辑crontab
    crontab -e
    # 添加每日凌晨2点备份任务
    0 2 * * * /home/user/catkin_ws/src/scripts/backup/backup_kinetic.zsh >> /var/log/ros_backup.log 2>&1
  3. 多节点通信
    结合rostopicrosservice实现节点间通信。

  4. 依赖解析
    使用rosdep自动安装依赖项。


通过本实验,系统掌握了ROS Kinetic工作空间的创建、编译、包管理及自动化开发流程,并熟悉了Zsh环境下的高效开发配置。


bash-zsh

ROS Kinetic工作空间(catkin_ws)详细实验流程

一、实验目标

通过实践掌握ROS Kinetic工作空间的创建、编译、包管理及环境配置,结合Bash脚本自动化备份与进程管理,形成完整的ROS开发环境搭建能力。


二、实验环境

  • 操作系统:Ubuntu 16.04 LTS
  • ROS版本:ROS Kinetic Kame
  • 工具catkin_makegedittreesshaptsudo

三、实验步骤与结果

1. 创建并初始化ROS工作空间

1.1 创建工作空间目录结构
 

bash

# 创建工作空间顶级目录
mkdir -p ~/catkin_ws/src
# 进入src目录并初始化工作空间
cd ~/catkin_ws/src
catkin_init_workspace
# 返回工作空间根目录
cd ~/catkin_ws
# 编译工作空间(生成build和devel目录)
catkin_make
1.2 验证工作空间结构
 

bash

# 安装tree工具(若未安装)
sudo apt install tree -y
# 查看工作空间目录结构
tree -L 2

预期输出

 

~/catkin_ws
├── build
│ ├── CMakeCache.txt
│ ├── CMakeFiles/
│ └── Makefile
├── devel
│ ├── env.sh
│ ├── setup.bash
│ └── lib/
└── src
├── CMakeLists.txt
└── (空或已有ROS包)

2. 创建ROS功能包

2.1 使用catkin_create_pkg创建包
 

bash

# 进入src目录
cd ~/catkin_ws/src
# 创建名为my_package的包,依赖roscpp、rospy、std_msgs
catkin_create_pkg my_package roscpp rospy std_msgs
2.2 验证包结构
 

bash

tree ~/catkin_ws/src/my_package

预期输出

 

~/catkin_ws/src/my_package
├── CMakeLists.txt
├── include/
│ └── my_package/
├── package.xml
└── src/

3. 编译工作空间

 

bash

# 返回工作空间根目录并编译
cd ~/catkin_ws
catkin_make
# 刷新环境变量(临时生效)
source devel/setup.bash
# 永久生效(添加到.bashrc)
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
3.1 验证环境变量
 

bash

echo $ROS_PACKAGE_PATH

预期输出

 

/home/user/catkin_ws/src:/opt/ros/kinetic/share

4. 编写并运行ROS节点

4.1 创建Python节点
 

bash

# 进入包的scripts目录
mkdir -p ~/catkin_ws/src/my_package/scripts
cd ~/catkin_ws/src/my_package/scripts
# 创建Python脚本
gedit talker.py &

脚本内容

 

python

#!/usr/bin/env python
import rospy
from std_msgs.msg import String
def talker():
pub = rospy.Publisher('chatter', String, queue_size=10)
rospy.init_node('talker', anonymous=True)
rate = rospy.Rate(10)
while not rospy.is_shutdown():
hello_str = "hello world %s" % rospy.get_time()
rospy.loginfo(hello_str)
pub.publish(hello_str)
rate.sleep()
if __name__ == '__main__':
try:
talker()
except rospy.ROSInterruptException:
pass
4.2 添加执行权限并运行
 

bash

chmod +x talker.py
# 启动roscore
roscore &
# 在新终端中运行节点
rosrun my_package talker.py

5. 编写Bash脚本自动化备份

5.1 创建备份脚本
 

bash

# 进入scripts/backup目录
mkdir -p ~/catkin_ws/src/scripts/backup
cd ~/catkin_ws/src/scripts/backup
# 创建备份脚本
gedit backup_kinetic.sh &

脚本内容

 

bash

#!/bin/bash
# ROS Kinetic备份脚本
set -euo pipefail
ROS_WS_DIR="$HOME/catkin_ws"
BACKUP_DIR="/var/backups/ros_kinetic"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
mkdir -p "$BACKUP_DIR"
tar --exclude='./build' --exclude='./devel' -czf "$BACKUP_DIR/ros_kinetic_$TIMESTAMP.tar.gz" "$ROS_WS_DIR"
echo "ROS Kinetic工作空间已备份至:$BACKUP_DIR"
5.2 添加执行权限并测试
 

bash

chmod +x backup_kinetic.sh
./backup_kinetic.sh

6. 配置.bashrc与进程管理

6.1 自定义.bashrc
 

bash

gedit ~/.bashrc &

添加内容

 

bash

# ROS Kinetic环境变量
source /opt/ros/kinetic/setup.bash
source ~/catkin_ws/devel/setup.bash
# 自定义别名
alias cdw='cd ~/catkin_ws'
alias cds='cd ~/catkin_ws/src'
alias rosbackup='~/catkin_ws/src/scripts/backup/backup_kinetic.sh'
# 修改命令提示符
PS1="\[\e[32;1m\]\u@\h:\w\n\[\e[0;0m\]\$ "
6.2 进程管理
 

bash

# 查看ROS进程
ps aux | grep roscore
# 终止进程(假设PID为1234)
kill -9 1234

7. 使用SSH远程管理

7.1 配置SSH服务
 

bash

sudo apt install openssh-server -y
sudo service ssh start
# 生成SSH密钥对
ssh-keygen -t rsa -b 4096
# 将公钥复制到远程服务器(假设IP为192.168.1.100)
ssh-copy-id -i ~/.ssh/id_rsa.pub user@192.168.1.100
# 测试SSH连接
ssh user@192.168.1.100

8. 软件包管理

8.1 安装ROS Kinetic软件包
 

bash

sudo apt update
sudo apt install ros-kinetic-rviz ros-kinetic-turtlesim -y

四、实验总结

  1. 工作空间创建:通过catkin_init_workspacecatkin_make完成初始化与编译。
  2. 包管理:使用catkin_create_pkg创建功能包,并通过catkin_make编译。
  3. 节点开发:编写Python节点并通过rosrun运行。
  4. 自动化备份:Bash脚本结合tar命令实现ROS工作空间备份。
  5. 环境配置:通过.bashrc自定义终端行为,简化开发流程。
  6. 远程管理:SSH密钥认证提升安全性。
  7. 软件包管理apt统一管理ROS Kinetic依赖。

五、实验扩展

  1. 定时备份:使用cron实现每日自动备份。
  2. 多节点通信:结合rostopicrosservice实现节点间通信。
  3. 依赖解析:使用rosdep自动安装依赖项。

通过本实验,系统掌握了ROS Kinetic工作空间的创建、编译、包管理及自动化开发流程,为机器人开发奠定了坚实基础。


Linux系统操作与自动化实验报告(ROS Kinetic版本)

一、实验目标

本实验通过实践掌握Linux系统基础操作(目录管理、文件编辑、权限控制)、Bash脚本编程、环境变量配置、进程管理、SSH安全连接及软件包管理,结合ROS Kinetic工作空间(catkin_ws)案例进行系统化学习。


二、实验环境

  • 操作系统:Ubuntu 16.04 LTS
  • ROS版本:ROS Kinetic Kame
  • 工具:gedit、tree、ps、ssh、apt、sudo

三、实验步骤与结果

1. 目录与文件操作

1.1 查看ROS工作空间目录结构
 

bash

# 安装tree工具(若未安装)
sudo apt install tree
# 查看catkin_ws目录结构(限制显示深度为2层)
tree -L 2 ~/catkin_ws

预期输出

 

~/catkin_ws
├── build
│ ├── CMakeCache.txt
│ ├── cmake_install.cmake
│ └── Makefile
├── devel
│ ├── env.sh
│ ├── setup.bash
│ └── lib/
└── src
├── CMakeLists.txt
├── package1
└── package2
1.2 导航与创建目录/文件
 

bash

# 进入src目录
cd ~/catkin_ws/src
# 创建嵌套目录(如需备份ROS包)
mkdir -p scripts/backup
# 创建空文件
touch scripts/backup/backup_kinetic.sh
# 使用gedit编辑文件(写入ROS备份命令)
gedit scripts/backup/backup_kinetic.sh & # &表示后台运行gedit

gedit内容示例

 

bash

#!/bin/bash
# ROS Kinetic备份脚本
ROS_WS_DIR="$HOME/catkin_ws"
BACKUP_DIR="/var/backups/ros_kinetic"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
# 创建备份目录
mkdir -p "$BACKUP_DIR"
# 打包ROS工作空间(排除build和devel目录)
tar --exclude='./build' --exclude='./devel' -czf "$BACKUP_DIR/ros_kinetic_$TIMESTAMP.tar.gz" "$ROS_WS_DIR"
echo "ROS Kinetic工作空间已备份至:$BACKUP_DIR"

2. 文件权限管理

2.1 查看与修改权限
 

bash

# 查看backup_kinetic.sh的当前权限
ls -l ~/catkin_ws/src/scripts/backup/backup_kinetic.sh
# 添加所有者执行权限
chmod u+x ~/catkin_ws/src/scripts/backup/backup_kinetic.sh
# 修改权限为755(所有者可读写执行,组用户和其他用户可读执行)
chmod 755 ~/catkin_ws/src/scripts/backup/backup_kinetic.sh
2.2 权限说明
  • 权限类型
    • r(4):读取权限
    • w(2):写入权限
    • x(1):执行权限
  • 用户组
    • u:所有者(User)
    • g:组用户(Group)
    • o:其他用户(Others)
  • 示例chmod 755 file 等价于 chmod u=rwx,g=rx,o=rx file

3. Bash脚本编程

3.1 编写ROS备份脚本
 

bash

#!/bin/bash
# ROS Kinetic自动化备份脚本
set -euo pipefail # 错误处理:遇到错误立即退出
# 配置参数
ROS_WS_DIR="$HOME/catkin_ws"
BACKUP_DIR="/var/backups/ros_kinetic"
LOG_FILE="$BACKUP_DIR/backup.log"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
# 创建日志目录
mkdir -p "$BACKUP_DIR"
# 记录日志函数
log() {
echo "[$(date +'%Y-%m-%d %H:%M:%S')] $1" >> "$LOG_FILE"
}
# 执行备份
log "开始备份ROS Kinetic工作空间..."
tar --exclude='./build' --exclude='./devel' -czf "$BACKUP_DIR/ros_kinetic_$TIMESTAMP.tar.gz" "$ROS_WS_DIR"
log "备份完成:$BACKUP_DIR/ros_kinetic_$TIMESTAMP.tar.gz"
3.2 运行脚本与参数传递
 

bash

# 直接运行脚本
~/catkin_ws/src/scripts/backup/backup_kinetic.sh
# 模拟参数传递(需修改脚本支持getopts)
# 修改脚本头部添加参数解析:
while getopts "v" opt; do
case $opt in
v) VERBOSE=true ;;
*) echo "用法: $0 [-v]" ;;
esac
done
# 调用时:
bash ~/catkin_ws/src/scripts/backup/backup_kinetic.sh -v # 启用详细模式

4. 环境变量与.bashrc配置

4.1 查看与修改环境变量
 

bash

# 临时添加ROS Kinetic路径到PATH
export PATH="$HOME/catkin_ws/devel/bin:$PATH"
# 查看当前PATH
echo $PATH
# 过滤包含ROS的环境变量
env | grep "ROS"
4.2 自定义.bashrc
 

bash

# 编辑.bashrc文件
gedit ~/.bashrc &
# 添加以下内容到文件末尾:
# ROS Kinetic环境变量
source /opt/ros/kinetic/setup.bash
source ~/catkin_ws/devel/setup.bash
# 自定义别名
alias ll='ls -lh'
alias cdw='cd ~/catkin_ws'
alias cds='cd ~/catkin_ws/src'
# 修改命令提示符
PS1="\[\e[32;1m\]\u@\h:\w\n\[\e[0;0m\]\$ "
# 使修改生效
source ~/.bashrc

5. 进程管理

5.1 查看与控制ROS进程
 

bash

# 查看所有roslaunch进程
ps aux | grep roslaunch
# 终止指定PID的进程
kill -9 12345 # 替换为实际PID
# 暂停与恢复进程(需先通过Ctrl+Z暂停)
jobs # 查看后台任务
bg %1 # 恢复任务1到后台
fg %1 # 将任务1恢复到前台

6. SSH安全连接

6.1 配置SSH服务
 

bash

# 安装SSH服务
sudo apt install openssh-server
# 启动SSH服务
sudo service ssh start
# 检查SSH状态
sudo service ssh status
# 生成SSH密钥对
ssh-keygen -t rsa -b 4096 # 生成高强度密钥
# 将公钥复制到远程服务器(假设IP为192.168.1.100)
ssh-copy-id -i ~/.ssh/id_rsa.pub user@192.168.1.100
# 免密登录测试
ssh user@192.168.1.100

7. 软件包管理

7.1 使用apt管理ROS Kinetic软件包
 

bash

# 更新软件包列表
sudo apt update
# 安装ROS Kinetic可视化工具
sudo apt install ros-kinetic-rviz
# 安装ROS Kinetic功能包(如turtlesim)
sudo apt install ros-kinetic-turtlesim
# 卸载软件包
sudo apt remove ros-kinetic-rviz
# 清理无用软件包
sudo apt autoremove

四、实验总结

  1. 目录管理
    • tree命令可视化目录结构,mkdir -p支持多级目录创建。
    • gedit提供图形化编辑,适合脚本开发。
  2. 权限控制
    • chmod通过数字或符号修改权限,确保脚本可执行。
    • 权限管理是系统安全的基础。
  3. 脚本自动化
    • Bash脚本结合错误处理和日志记录,简化重复任务。
    • 支持参数传递,增强灵活性。
  4. 环境配置
    • .bashrc自定义终端行为,export管理环境变量。
    • ROS Kinetic需显式加载环境配置。
  5. 进程管理
    • pskill组合实现进程监控与控制。
    • 合理使用后台任务(bg/fg)提高效率。
  6. SSH安全连接
    • 密钥认证替代密码登录,提升安全性。
    • 适用于远程开发或服务器管理。
  7. 软件包管理
    • apt统一管理ROS Kinetic软件包,简化安装与更新。

五、实验问题与解决

  1. 问题:执行脚本时报“权限不足”。
    解决:使用chmod +x script.sh添加执行权限,或通过bash script.sh直接运行。

  2. 问题:SSH登录时提示“Connection refused”。
    解决:检查SSH服务是否运行(sudo service ssh status),并确认防火墙未阻止22端口。

  3. 问题:ROS命令未找到。
    解决:确保已正确加载ROS环境(source /opt/ros/kinetic/setup.bash)。


六、实验扩展

  1. 定时备份

     

    bash

    # 编辑crontab
    crontab -e
    # 添加每日凌晨2点备份任务
    0 2 * * * /home/user/catkin_ws/src/scripts/backup/backup_kinetic.sh >> /var/log/ros_backup.log 2>&1
  2. ROS节点自动化启动
    在脚本中调用roslaunch命令,例如:

     

    bash

    #!/bin/bash
    source /opt/ros/kinetic/setup.bash
    source ~/catkin_ws/devel/setup.bash
    roslaunch package_name launch_file.launch
  3. 日志轮转
    使用logrotate管理备份日志文件大小和保留周期。


通过本实验,系统掌握了Linux系统操作与自动化工具,结合ROS Kinetic开发环境,为机器人开发及服务器管理提供了完整解决方案。



推荐:

001:

https://automaticaddison.com/the-complete-guide-to-linux-fundamentals-for-robotics/

002:

https://www.lanqiao.cn/courses/854

001:

该网页是一篇关于在Linux系统上使用ROS(机器人操作系统)进行机器人项目开发的基础教程。教程内容涵盖了Linux系统下ROS开发所需的最常用命令和工具,旨在帮助读者快速掌握在Linux环境中进行ROS开发的基本技能。

教程内容概述:
  1. 准备工作
    • 确保在Ubuntu Linux上运行ROS(作者在Windows 10上的虚拟机中运行Ubuntu Linux)。
  2. 探索文件夹层次结构
    • 使用tree命令查看catkin_ws(ROS工作空间)文件夹的层次结构。
    • 学习如何导航到不同文件夹,使用cd命令。
  3. 创建新文件夹和文件
    • 使用mkdir命令创建新文件夹。
    • 使用touch命令创建新文件。
    • 使用gedit文本编辑器打开和编辑文件。
  4. 文件权限
    • 了解Linux中的文件权限(读、写、执行)和用户权限组(所有者、组、所有用户)。
    • 使用chmod命令修改文件权限。
  5. 创建Bash脚本
    • 学习如何编写和运行Bash脚本,以自动化命令执行。
    • 了解如何向Bash脚本传递参数。
  6. 探索.bashrc文件
    • 了解.bashrc文件的作用,它包含在打开新终端时自动运行的命令和配置。
  7. 环境变量
    • 使用export命令查看和修改环境变量。
    • 使用grep命令过滤包含特定字符串的环境变量。
  8. 理解Linux进程
    • 了解Linux中的前台进程和后台进程。
    • 使用ps命令查看当前运行的进程。
    • 学习如何启动、暂停、恢复和终止进程。
  9. 使用SSH协议
    • 了解SSH协议的作用,它提供了通过不安全网络安全访问计算机的方式。
    • 学习如何在Ubuntu Linux和Raspberry Pi之间设置SSH连接。
  10. 探索“sudo”和“apt”命令
    • 了解sudo命令的作用,它允许用户以超级用户权限运行命令。
    • 使用apt命令更新软件包列表和安装软件。

002:

蓝桥云课的ROS教程提供了ROS1(Kinetic版本)和ROS2(Ardent版本)的综合介绍,具有大量官方制定的教程源码和定制化学习方案。结合上述Linux基础教程,读者可以更全面地掌握在Linux系统上进行ROS开发所需的技能。

  • ROS环境配置:蓝桥云课教程详细介绍了如何在Linux上配置ROS环境,这与AutomaticAddison教程中的准备工作相呼应。
  • ROS项目实践:通过蓝桥云课的教程源码,读者可以在掌握Linux基础命令和工具后,进一步实践ROS项目的开发,加深对ROS的理解和应用能力。
  • 综合学习体验:结合两个教程,读者可以从Linux基础到ROS高级应用,逐步构建起完整的机器人开发知识体系。

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

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

相关文章

深入了解 C# 异步编程库 AsyncEx

在现代应用程序开发中,异步编程已经成为提升性能和响应能力的关键,尤其在处理网络请求、I/O 操作和其他耗时任务时,异步编程可以有效避免阻塞主线程,提升程序的响应速度和并发处理能力。C# 提供了内建的异步编程支持(通…

Vulhub靶场搭建(Ubuntu)

前言:Vulhub 是一个开源的漏洞靶场平台,全称是 Vulhub: Vulnerable Web Application Environments,主要用于学习和复现各类 Web 安全漏洞。它的核心特征是通过 Docker 环境快速搭建出带有特定漏洞的靶场系统,适合渗透测试学习者、…

C++:参数传递方法(Parameter Passing Methods)

目录 1. 值传递(Pass by Value) 2. 地址传递(Pass by Address) 3. 引用传递(Pass by Reference) 数组作为函数参数(Array as Parameter) 数组作为函数返回值 什么是函数&#xff…

大语言模型的推理能力

2025年,各种会推理的AI模型如雨后春笋般涌现,比如ChatGPT o1/o3/o4、DeepSeek r1、Gemini 2 Flash Thinking、Claude 3.7 Sonnet (Extended Thinking)。 对于工程上一些问题比如复杂的自然语言转sql,我们可能忍受模型的得到正确答案需要更多…

Redis的安装与使用

网址:Spring Data Redis 安装包:Releases tporadowski/redis GitHub 解压后 在安装目录中打开cmd 打开服务(注意:每次客户端连接都有先打开服务!!!) 按ctrlC退出服务 客户端连接…

2024年数维杯国际大学生数学建模挑战赛C题时间信号脉冲定时噪声抑制与大气时延抑制模型解题全过程论文及程序

2024年数维杯国际大学生数学建模挑战赛 C题 时间信号脉冲定时噪声抑制与大气时延抑制模型 原题再现: 脉冲星是一种快速旋转的中子星,具有连续稳定的旋转,因此被称为“宇宙灯塔”。脉冲星的空间观测在深空航天器导航和时间标准维护中发挥着至…

C# 控制台程序获取用户输入数据验证 不合规返回重新提示输入

在 C# 控制台程序中实现输入验证并循环重试&#xff0c;可以通过以下方式实现高效且用户友好的交互。以下是包含多种验证场景的完整解决方案&#xff1a; 一、通用输入验证框架 public static T GetValidInput<T>(string prompt, Func<string, (bool IsValid, T Val…

TDengine 运维——巡检工具(安装前检查)

简介 本文档旨在介绍 TDengine 安装部署前后配套的巡检工具。 相关工具的功能简介&#xff1a; 工具名称功能简介安装前检查部署前对 TDengine 安装部署的依赖要素进行安装前检查安装前预配置部署前对 TDengine 安装部署的依赖要素进行安装前预配置安装部署指定环境安装部署…

【Linux】权限chmod命令+Linux终端常用快捷键

目录 linux中权限表示形式 解析标识符 权限的数字序号 添加权限命令chmod 使用数字表示法设置权限 使用符号表示法设置权限 linux终端常用快捷键 &#x1f525;个人主页 &#x1f525; &#x1f608;所属专栏&#x1f608; 在 Linux 系统里&#xff0c;权限管理是保障系…

Java八股文智能体——Agent提示词(Prompt)

这个智能体能够为正在学习Java八股文的同学提供切实帮助&#xff1a;不仅可以帮你优化答案表述&#xff0c;还能直接解答八股文相关问题——它会以面试者的视角&#xff0c;给出贴合求职场景的专业回答。 将以下内容发送给任何一个LLM&#xff0c;他会按照你提示词的内容&…

Go语言的context

Golang context 实现原理 本篇文章是基于小徐先生的文章的修改和个人注解&#xff0c;要查看原文可以点击上述的链接查看 目前我这篇文章的go语言版本是1.24.1 context上下文 context被当作第一个参数&#xff08;官方建议&#xff09;&#xff0c;并且不断的传递下去&…

数据库原理 试卷

以下是某高校教学管理系统的毕业论文指导ER图&#xff0c;数据信息&#xff1a;一名教师指导多名学生&#xff0c;一名学生只能选择一名教师&#xff0c;试分析完成以下各题&#xff0c;如用SQL命令完成的&#xff0c;在SQL Server2008验证后把答案写在题目的下方。 图1 毕业论…

【Qt开发】对话框

目录 1&#xff0c;对话框的介绍 2&#xff0c;Qt内置对话框 2-1&#xff0c;消息对话框QMessageBox 2-2&#xff0c;颜色对话框QColorDialog 2-3&#xff0c;文件对话框QFileDialog 2-4&#xff0c;字体对话框QFontDialog 2-5&#xff0c;输入对话框QInputDialog 1&…

2025年渗透测试面试题总结-匿名[校招]攻防研究员(应用安全)(题目+回答)

安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 匿名[校招]攻防研究员(应用安全) 基础部分 1. HTTP状态码 2. HTTP请求方法及作用 3. 网络分层及协议 OW…

碰一碰发视频系统--基于H5场景开发

#碰一碰发视频# 旨在构建一个基于移动网页&#xff08;H5&#xff09;的视频“碰传”交互系统&#xff0c;提供类似华为/苹果设备 NFC 轻碰分享的便捷体验。其核心技术依赖于移动端可用的近场通信&#xff08;NFC 或 H5 相关 API&#xff09;和可靠的媒体数据传输方案。实现细节…

MagicAnimate 论文解读:引入时间一致性的视频人物动画生成方法

1. 前言/动机 问题&#xff1a;现有动画生成方法缺乏对时间信息的建模&#xff0c;常常出现时间一致性差的问题 描述&#xff1a; 现有的动画生成方法通常采用帧变形&#xff08;frame-warping&#xff09;技术&#xff0c;将参考图像变形以匹配目标动作。尽管这类方法能生成较…

数据结构:递归(Recursion)

目录 示例1&#xff1a;先打印&#xff0c;再递归 示例2&#xff1a;先递归&#xff0c;再打印 递归的两个阶段 递归是如何使用栈内存 复杂度分析 递归中的静态变量 内存结构图解 递归&#xff1a;函数调用自己 必须有判断条件来使递归继续或停止 我们现在通过这两个示…

Cesium快速入门到精通系列教程一:打造第一个Cesium应用

一、打造第一个Cesium应用 1、官方渠道下载Cesium&#xff08;可选择历史版本&#xff09; ​​GitHub Releases页面​​&#xff1a;https://github.com/CesiumGS/cesium/releases 访问 Cesium GitHub Releases&#xff0c;此处列出了所有正式发布的版本。 通过标签&#…

力扣题解106:从中序与后序遍历序列构造二叉树

一、题目内容 题目要求根据二叉树的中序遍历序列和后序遍历序列来重建二叉树。具体来说&#xff0c;我们需要利用中序遍历序列和后序遍历序列的特点&#xff0c;通过递归的方法逐步构建出完整的二叉树。 中序遍历序列的特点是&#xff1a;左子树 -> 根节点 -> 右子树。后…

学习STC51单片机25(芯片为STC89C52RCRC)

每日一言 生活就像弹簧&#xff0c;你弱它就强&#xff0c;你强它就弱&#xff0c;别轻易认输。 ESP8266作为路由器模式&#xff08;AP模式&#xff09;也就是在局域网内可以有服务器的作用 那么我们需要将pc作为设备进行连接ESP的发射出来的WIFE 叫做这个AI啥的 也有可能叫做…