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_make
、oh-my-zsh
(可选)、tree
、ssh
、apt
、sudo
三、实验步骤与结果
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 |
四、实验总结
- Zsh环境配置:
- 安装并设置Zsh为默认Shell,可选安装Oh-My-Zsh增强体验。
- ROS Kinetic自动生成
setup.zsh
,需在.zshrc
中加载。
- 工作空间创建:
- 通过
catkin_init_workspace
和catkin_make
完成初始化与编译。
- 通过
- 包管理:
- 使用
catkin_create_pkg
创建功能包,并通过catkin_make
编译。
- 使用
- 节点开发:
- 编写Python节点并通过
rosrun
运行。
- 编写Python节点并通过
- 自动化备份:
- Zsh脚本结合
tar
命令实现ROS工作空间备份。
- Zsh脚本结合
- 环境配置:
- 通过
.zshrc
自定义终端行为,简化开发流程。
- 通过
- 远程管理:
- SSH密钥认证提升安全性。
- 软件包管理:
apt
统一管理ROS Kinetic依赖。
五、实验扩展
-
Zsh插件推荐:
zsh-autosuggestions
:命令行自动补全。zsh-syntax-highlighting
:语法高亮。
-
定时备份:
zsh
# 编辑crontab
crontab -e
# 添加每日凌晨2点备份任务
0 2 * * * /home/user/catkin_ws/src/scripts/backup/backup_kinetic.zsh >> /var/log/ros_backup.log 2>&1
-
多节点通信:
结合rostopic
和rosservice
实现节点间通信。 -
依赖解析:
使用rosdep
自动安装依赖项。
通过本实验,系统掌握了ROS Kinetic工作空间的创建、编译、包管理及自动化开发流程,并熟悉了Zsh环境下的高效开发配置。
bash-zsh
ROS Kinetic工作空间(catkin_ws)详细实验流程
一、实验目标
通过实践掌握ROS Kinetic工作空间的创建、编译、包管理及环境配置,结合Bash脚本自动化备份与进程管理,形成完整的ROS开发环境搭建能力。
二、实验环境
- 操作系统:Ubuntu 16.04 LTS
- ROS版本:ROS Kinetic Kame
- 工具:
catkin_make
、gedit
、tree
、ssh
、apt
、sudo
三、实验步骤与结果
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 |
四、实验总结
- 工作空间创建:通过
catkin_init_workspace
和catkin_make
完成初始化与编译。 - 包管理:使用
catkin_create_pkg
创建功能包,并通过catkin_make
编译。 - 节点开发:编写Python节点并通过
rosrun
运行。 - 自动化备份:Bash脚本结合
tar
命令实现ROS工作空间备份。 - 环境配置:通过
.bashrc
自定义终端行为,简化开发流程。 - 远程管理:SSH密钥认证提升安全性。
- 软件包管理:
apt
统一管理ROS Kinetic依赖。
五、实验扩展
- 定时备份:使用
cron
实现每日自动备份。 - 多节点通信:结合
rostopic
和rosservice
实现节点间通信。 - 依赖解析:使用
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 |
四、实验总结
- 目录管理:
tree
命令可视化目录结构,mkdir -p
支持多级目录创建。gedit
提供图形化编辑,适合脚本开发。
- 权限控制:
chmod
通过数字或符号修改权限,确保脚本可执行。- 权限管理是系统安全的基础。
- 脚本自动化:
- Bash脚本结合错误处理和日志记录,简化重复任务。
- 支持参数传递,增强灵活性。
- 环境配置:
.bashrc
自定义终端行为,export
管理环境变量。- ROS Kinetic需显式加载环境配置。
- 进程管理:
ps
与kill
组合实现进程监控与控制。- 合理使用后台任务(
bg
/fg
)提高效率。
- SSH安全连接:
- 密钥认证替代密码登录,提升安全性。
- 适用于远程开发或服务器管理。
- 软件包管理:
apt
统一管理ROS Kinetic软件包,简化安装与更新。
五、实验问题与解决
-
问题:执行脚本时报“权限不足”。
解决:使用chmod +x script.sh
添加执行权限,或通过bash script.sh
直接运行。 -
问题:SSH登录时提示“Connection refused”。
解决:检查SSH服务是否运行(sudo service ssh status
),并确认防火墙未阻止22端口。 -
问题:ROS命令未找到。
解决:确保已正确加载ROS环境(source /opt/ros/kinetic/setup.bash
)。
六、实验扩展
-
定时备份:
bash
# 编辑crontab
crontab -e
# 添加每日凌晨2点备份任务
0 2 * * * /home/user/catkin_ws/src/scripts/backup/backup_kinetic.sh >> /var/log/ros_backup.log 2>&1
-
ROS节点自动化启动:
在脚本中调用roslaunch
命令,例如:bash
#!/bin/bash
source /opt/ros/kinetic/setup.bash
source ~/catkin_ws/devel/setup.bash
roslaunch package_name launch_file.launch
-
日志轮转:
使用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开发的基本技能。
教程内容概述:
- 准备工作:
- 确保在Ubuntu Linux上运行ROS(作者在Windows 10上的虚拟机中运行Ubuntu Linux)。
- 探索文件夹层次结构:
- 使用
tree
命令查看catkin_ws
(ROS工作空间)文件夹的层次结构。 - 学习如何导航到不同文件夹,使用
cd
命令。
- 使用
- 创建新文件夹和文件:
- 使用
mkdir
命令创建新文件夹。 - 使用
touch
命令创建新文件。 - 使用
gedit
文本编辑器打开和编辑文件。
- 使用
- 文件权限:
- 了解Linux中的文件权限(读、写、执行)和用户权限组(所有者、组、所有用户)。
- 使用
chmod
命令修改文件权限。
- 创建Bash脚本:
- 学习如何编写和运行Bash脚本,以自动化命令执行。
- 了解如何向Bash脚本传递参数。
- 探索.bashrc文件:
- 了解
.bashrc
文件的作用,它包含在打开新终端时自动运行的命令和配置。
- 了解
- 环境变量:
- 使用
export
命令查看和修改环境变量。 - 使用
grep
命令过滤包含特定字符串的环境变量。
- 使用
- 理解Linux进程:
- 了解Linux中的前台进程和后台进程。
- 使用
ps
命令查看当前运行的进程。 - 学习如何启动、暂停、恢复和终止进程。
- 使用SSH协议:
- 了解SSH协议的作用,它提供了通过不安全网络安全访问计算机的方式。
- 学习如何在Ubuntu Linux和Raspberry Pi之间设置SSH连接。
- 探索“sudo”和“apt”命令:
- 了解
sudo
命令的作用,它允许用户以超级用户权限运行命令。 - 使用
apt
命令更新软件包列表和安装软件。
- 了解
002:
蓝桥云课的ROS教程提供了ROS1(Kinetic版本)和ROS2(Ardent版本)的综合介绍,具有大量官方制定的教程源码和定制化学习方案。结合上述Linux基础教程,读者可以更全面地掌握在Linux系统上进行ROS开发所需的技能。
- ROS环境配置:蓝桥云课教程详细介绍了如何在Linux上配置ROS环境,这与AutomaticAddison教程中的准备工作相呼应。
- ROS项目实践:通过蓝桥云课的教程源码,读者可以在掌握Linux基础命令和工具后,进一步实践ROS项目的开发,加深对ROS的理解和应用能力。
- 综合学习体验:结合两个教程,读者可以从Linux基础到ROS高级应用,逐步构建起完整的机器人开发知识体系。