2025-06-30 11:09:41 +08:00
|
|
|
|
# <p align="center">ROS_Learn</p>
|
|
|
|
|
## 实验一
|
2025-07-03 12:39:16 +00:00
|
|
|
|
### ROS-noetic安装,应用于Ubuntu20.04LTS<br>注:最好全程使用root权限
|
2025-07-02 21:06:06 +08:00
|
|
|
|
切换ubuntu软件源,访问清华源来提升下载速度。
|
2025-06-28 15:31:08 +08:00
|
|
|
|
```c
|
|
|
|
|
sudo vim /etc/apt/sources.list # 进入apt下载源文件
|
|
|
|
|
```
|
2025-07-03 12:39:16 +00:00
|
|
|
|
删除所有ubuntu官方源(最好提前备份以下文件避免操作失误无法恢复),添加清华源。
|
2025-06-28 15:31:08 +08:00
|
|
|
|
```c
|
|
|
|
|
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
|
|
|
|
|
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
|
|
|
|
|
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
|
|
|
|
|
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
|
|
|
|
|
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
|
|
|
|
|
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
|
|
|
|
|
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
|
|
|
|
|
|
|
|
|
|
# 以下安全更新软件源包含了官方源与镜像站配置,如有需要可自行修改注释切换
|
|
|
|
|
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
|
|
|
|
|
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
|
|
|
|
|
|
|
|
|
|
# 预发布软件源,不建议启用
|
|
|
|
|
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
|
|
|
|
|
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
|
|
|
|
|
```
|
2025-06-30 11:09:41 +08:00
|
|
|
|
vim中按`Esc`退出编辑模式,按`Shift+;`进入命令输入模式输入`wq`保存退出。<br>
|
2025-07-02 21:06:06 +08:00
|
|
|
|
<br>
|
2025-06-30 11:09:41 +08:00
|
|
|
|
在命令行中输入下列命令添加ROS源地址。
|
2025-06-28 15:31:08 +08:00
|
|
|
|
```c
|
|
|
|
|
sudo sh -c 'echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu focal main" > /etc/apt/sources.list.d/ros-latest.list'
|
|
|
|
|
```
|
2025-07-03 12:39:16 +00:00
|
|
|
|
设置apt密钥。
|
2025-06-28 15:31:08 +08:00
|
|
|
|
```c
|
|
|
|
|
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-keys 6A030B21B4D2B67B
|
|
|
|
|
```
|
2025-07-03 12:39:16 +00:00
|
|
|
|
更新apt软件源。
|
2025-06-28 15:31:08 +08:00
|
|
|
|
```c
|
|
|
|
|
sudo apt update
|
|
|
|
|
```
|
2025-07-03 12:39:16 +00:00
|
|
|
|
安装ROS-noetic(适用于Ubuntu20.04Lts)。
|
2025-06-28 15:31:08 +08:00
|
|
|
|
```c
|
|
|
|
|
sudo apt install ros-noetic-desktop-full
|
|
|
|
|
```
|
2025-07-03 12:39:16 +00:00
|
|
|
|
初始化 rosdep。
|
2025-06-28 15:31:08 +08:00
|
|
|
|
```c
|
|
|
|
|
sudo rosdep init
|
|
|
|
|
rosdep update
|
|
|
|
|
```
|
2025-07-03 12:39:16 +00:00
|
|
|
|
配置环境变量。
|
2025-06-28 15:31:08 +08:00
|
|
|
|
```c
|
|
|
|
|
source /opt/ros/noetic/setup.bash
|
|
|
|
|
source ~/.bashrc
|
|
|
|
|
```
|
2025-07-03 12:39:16 +00:00
|
|
|
|
安装ROS-python3工具包。
|
2025-06-28 15:31:08 +08:00
|
|
|
|
```c
|
|
|
|
|
sudo apt install python3-rosinstall python3-rosinstall-generator python3-wstool
|
|
|
|
|
sudo apt install build-essential
|
|
|
|
|
```
|
2025-07-03 12:39:16 +00:00
|
|
|
|
环境配置检测,配置无误的话可无需运行。
|
2025-06-28 15:31:08 +08:00
|
|
|
|
```c
|
|
|
|
|
# 确保环境配置
|
|
|
|
|
source /opt/ros/noetic/setup.bash
|
|
|
|
|
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
|
|
|
|
|
source ~/.bashrc
|
|
|
|
|
# 确保ROS安装完整
|
|
|
|
|
sudo apt install --reinstall ros-noetic-desktop-full
|
|
|
|
|
# 检测roslaunch是否安装
|
|
|
|
|
dpkg -l | grep ros-noetic-roslaunch
|
|
|
|
|
# 若roslaunch以安装则无需执行下条命令
|
|
|
|
|
sudo apt install ros-noetic-roslaunch
|
2025-07-03 12:39:16 +00:00
|
|
|
|
```
|
|
|
|
|
常用命令。
|
|
|
|
|
```c
|
2025-06-30 11:09:41 +08:00
|
|
|
|
# 将路径换为文件/文件夹路径,赋予文件/文件夹可执行权限
|
2025-07-01 22:54:54 +08:00
|
|
|
|
chmod +x /路径
|
2025-06-30 11:09:41 +08:00
|
|
|
|
# 将文件/文件夹可编辑权限赋予某用户
|
|
|
|
|
sudo chown -R 用户名:用户名 /路径
|
2025-07-03 12:39:16 +00:00
|
|
|
|
# 停止roscore命令
|
|
|
|
|
ps aux | grep roscore
|
|
|
|
|
kill -9 <PID>
|
2025-06-28 15:31:08 +08:00
|
|
|
|
```
|
2025-07-03 12:39:16 +00:00
|
|
|
|
启动roscore。
|
2025-06-28 15:31:08 +08:00
|
|
|
|
```c
|
|
|
|
|
roscore
|
|
|
|
|
```
|
2025-07-03 12:39:16 +00:00
|
|
|
|
启动小乌龟。
|
2025-06-28 15:31:08 +08:00
|
|
|
|
```c
|
|
|
|
|
rosrun turtlesim turtlesim_node
|
|
|
|
|
```
|
2025-07-03 12:39:16 +00:00
|
|
|
|
控制小乌龟(新终端窗口打开)。
|
2025-06-28 15:31:08 +08:00
|
|
|
|
```c
|
|
|
|
|
rosrun turtlesim turtle_teleop_key
|
|
|
|
|
```
|
2025-07-03 12:39:16 +00:00
|
|
|
|
### 结果图
|
|
|
|
|
终端运行结果:<br>
|
|
|
|
|

|
|
|
|
|
创建工作空间。
|
2025-07-02 20:35:51 +08:00
|
|
|
|
```c
|
|
|
|
|
mkdir -p src
|
|
|
|
|
catkin_make
|
|
|
|
|
```
|
2025-07-03 12:39:16 +00:00
|
|
|
|
设置 ROS 环境变量。
|
2025-07-02 20:35:51 +08:00
|
|
|
|
```c
|
|
|
|
|
echo "source /文件夹路径/devel/setup.bash" >> ~/.bashrc
|
|
|
|
|
source ~/.bashrc
|
|
|
|
|
```
|
2025-07-03 12:39:16 +00:00
|
|
|
|
进入 src 目录并创建功能包。
|
2025-07-02 20:35:51 +08:00
|
|
|
|
```c
|
|
|
|
|
cd src
|
|
|
|
|
catkin_create_pkg Service rospy std_msgs geometry_msgs visualization_msgs message_generation
|
|
|
|
|
```
|
2025-07-03 12:39:16 +00:00
|
|
|
|
创建结构和放置文件。
|
2025-07-02 20:35:51 +08:00
|
|
|
|
```c
|
|
|
|
|
cd Service
|
|
|
|
|
mkdir scripts
|
|
|
|
|
mkdir srv
|
|
|
|
|
```
|
2025-06-28 15:31:08 +08:00
|
|
|
|
|
2025-06-30 11:09:41 +08:00
|
|
|
|
## 实验二
|
|
|
|
|
### ROS中话题通信
|
2025-07-03 12:39:16 +00:00
|
|
|
|
编译工作空间。
|
2025-06-28 15:31:08 +08:00
|
|
|
|
```c
|
|
|
|
|
catkin_make
|
|
|
|
|
```
|
2025-07-03 12:39:16 +00:00
|
|
|
|
设置文件可执行权限。
|
2025-07-02 20:35:51 +08:00
|
|
|
|
```c
|
2025-07-02 21:06:06 +08:00
|
|
|
|
chmod +x /文件路径/程序名.py
|
2025-07-02 20:35:51 +08:00
|
|
|
|
```
|
2025-07-03 12:39:16 +00:00
|
|
|
|
添加环境变量(所有新终端窗口要执行下列命令)。
|
2025-06-28 15:31:08 +08:00
|
|
|
|
```c
|
|
|
|
|
source /home/zmn/Gitea/ROS_Learn/devel/setup.bash
|
|
|
|
|
```
|
2025-07-03 12:39:16 +00:00
|
|
|
|
启动roscore(终端A)。
|
2025-07-01 22:54:54 +08:00
|
|
|
|
```c
|
|
|
|
|
roscore
|
|
|
|
|
```
|
2025-07-03 12:39:16 +00:00
|
|
|
|
启动订阅端(终端B)。
|
2025-06-28 15:31:08 +08:00
|
|
|
|
```c
|
2025-07-01 22:54:54 +08:00
|
|
|
|
rosrun Topic_Newsletter Subscriber_TN.py
|
2025-06-28 15:31:08 +08:00
|
|
|
|
```
|
2025-07-03 12:39:16 +00:00
|
|
|
|
启动发送端(终端C)。
|
2025-06-28 15:31:08 +08:00
|
|
|
|
```c
|
2025-07-01 22:54:54 +08:00
|
|
|
|
rosrun Topic_Newsletter Publisher_TN.py
|
2025-06-28 15:31:08 +08:00
|
|
|
|
```
|
2025-07-03 12:39:16 +00:00
|
|
|
|
启动RViz(终端D)。
|
2025-06-28 15:31:08 +08:00
|
|
|
|
```c
|
|
|
|
|
rviz
|
|
|
|
|
```
|
2025-07-02 21:06:06 +08:00
|
|
|
|
将RViz左侧 Global Options 面板中 Fixed Frame 设为 map (默认无需修改)。<br>
|
2025-06-28 22:11:36 +08:00
|
|
|
|
在 Displays 面板中,点击 Add,添加 Marker 类型。
|
2025-07-02 21:06:06 +08:00
|
|
|
|
### 结果图
|
|
|
|
|
终端运行数据结果:<br>
|
|
|
|
|

|
|
|
|
|
RViz图像:<br>
|
|
|
|
|

|
2025-06-30 11:09:41 +08:00
|
|
|
|
## 实验三
|
2025-07-02 20:35:51 +08:00
|
|
|
|
### ROS中服务端和客户端
|
2025-07-03 12:39:16 +00:00
|
|
|
|
编译工作空间。
|
2025-06-28 22:11:36 +08:00
|
|
|
|
```c
|
|
|
|
|
catkin_make
|
|
|
|
|
```
|
2025-07-03 12:39:16 +00:00
|
|
|
|
设置文件可执行权限。
|
2025-06-28 22:11:36 +08:00
|
|
|
|
```c
|
2025-07-02 21:06:06 +08:00
|
|
|
|
chmod +x /文件路径/程序名.py
|
2025-06-28 22:11:36 +08:00
|
|
|
|
```
|
2025-07-03 12:39:16 +00:00
|
|
|
|
添加环境变量。
|
2025-06-28 22:11:36 +08:00
|
|
|
|
```c
|
|
|
|
|
source /home/zmn/Gitea/ROS_Learn/devel/setup.bash
|
|
|
|
|
```
|
2025-07-03 12:39:16 +00:00
|
|
|
|
启动roscore(终端A)。
|
2025-06-28 22:11:36 +08:00
|
|
|
|
```c
|
2025-07-02 20:35:51 +08:00
|
|
|
|
roscore
|
|
|
|
|
```
|
2025-07-03 12:39:16 +00:00
|
|
|
|
启动服务端(终端B)。
|
2025-07-02 20:35:51 +08:00
|
|
|
|
```c
|
|
|
|
|
rosrun Service Service_S.py
|
2025-06-28 22:11:36 +08:00
|
|
|
|
```
|
2025-07-03 12:39:16 +00:00
|
|
|
|
启动订阅端(也是客户端)(终端C)。
|
2025-06-28 22:11:36 +08:00
|
|
|
|
```c
|
2025-07-02 20:35:51 +08:00
|
|
|
|
rosrun Service Subscriber_Client_S.py
|
|
|
|
|
```
|
2025-07-03 12:39:16 +00:00
|
|
|
|
启动发送端(终端D)。
|
2025-07-02 20:35:51 +08:00
|
|
|
|
```c
|
2025-07-02 21:06:06 +08:00
|
|
|
|
rosrun Service Publisher_S.py
|
2025-06-28 22:11:36 +08:00
|
|
|
|
```
|
2025-07-03 12:39:16 +00:00
|
|
|
|
启动RViz(终端F)。
|
2025-06-28 22:11:36 +08:00
|
|
|
|
```c
|
|
|
|
|
rviz
|
|
|
|
|
```
|
2025-07-02 21:06:06 +08:00
|
|
|
|
将RViz左侧 Global Options 面板中 Fixed Frame 改为程序中的 world 。<br>
|
2025-06-30 11:09:41 +08:00
|
|
|
|
在 Displays 面板中,点击 Add,添加 Marker 类型。
|
2025-07-02 21:06:06 +08:00
|
|
|
|
### 结果图
|
|
|
|
|
终端运行数据结果:<br>
|
|
|
|
|

|
|
|
|
|
RViz图像:<br>
|
2025-07-04 12:40:46 +00:00
|
|
|
|

|
|
|
|
|
## 小组成员
|
|
|
|
|
张豪、祝令旭、程思凡、曾叶昊、张梦南<br>
|
|
|
|
|
(排名不分先后)
|