ROS_Learn/README.md

206 lines
5.2 KiB
Markdown
Raw Permalink Normal View History

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-09-27 09:22:26 +00:00
切换ubuntu软件源并添加ROS源地址访问清华源来提升下载速度。最好提前备份以下文件避免操作失误无法恢复
2025-06-28 15:31:08 +08:00
```c
2025-09-27 09:22:26 +00:00
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'
2025-06-28 15:31:08 +08:00
```
2025-07-03 12:39:16 +00:00
设置apt密钥。
2025-06-28 15:31:08 +08:00
```c
2025-09-27 09:22:26 +00:00
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
2025-06-28 15:31:08 +08:00
```
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-09-27 09:22:26 +00:00
配置ROS-noetic环境变量。
2025-06-28 15:31:08 +08:00
```c
2025-09-27 09:22:26 +00:00
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
2025-06-28 15:31:08 +08:00
```
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
# 将路径换为文件/文件夹路径,赋予文件/文件夹可执行权限
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-09-27 09:22:26 +00:00
启动小乌龟(新终端窗口打开)。
2025-06-28 15:31:08 +08:00
```c
rosrun turtlesim turtlesim_node
```
2025-09-27 09:22:26 +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>
![小乌龟](/Pictures/Turtle.png#pic_center)
创建工作空间。
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-09-27 09:22:26 +00: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
2025-09-27 09:22:26 +00:00
source /文件夹路径/devel/setup.bash
2025-06-28 15:31:08 +08:00
```
2025-07-03 12:39:16 +00:00
启动roscore终端A
```c
roscore
```
2025-07-03 12:39:16 +00:00
启动订阅端终端B
2025-06-28 15:31:08 +08:00
```c
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
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>
![话题通讯1](/Pictures/Topic_Newsletter_one.png#pic_center)
RViz图像<br>
![话题通讯2](/Pictures/Topic_Newsletter_two.png#pic_center)
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-09-27 09:22:26 +00: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
2025-09-27 09:22:26 +00:00
source /文件夹路径/devel/setup.bash
2025-06-28 22:11:36 +08:00
```
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>
![服务和客户1](/Pictures/Service_one.png#pic_center)
RViz图像<br>
2025-07-04 12:40:46 +00:00
![服务和客户2](/Pictures/Service_two.png#pic_center)
2025-09-27 09:22:26 +00:00
## 实验四
### ROS中导航与路径规划
更新源。
```c
sudo apt update
```
安装仿真模型包和自主导航包
```c
sudo apt install ros-noetic-turtlebot3 ros-noetic-turtlebot3-simulations ros-noetic-navigation
```
添加环境变量。
```c
echo "export TURTLEBOT3_MODEL=burger" >> ~/.bashrc
source ~/.bashrc
```
启动roscore终端A
```c
roscore
```
启动 TurtleBot3 的 Gazebo 仿真环境终端B
```c
roslaunch turtlebot3_gazebo turtlebot3_empty_world.launch
```
启动地图服务节点终端C
```c
rosrun map_server map_server /home/zmn/下载/0113.yaml
```
启动 TurtleBot3 的导航系统并打开RViz显示终端D
```c
roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file:=/home/zmn/下载/0113.yaml
```
在 RViz 中点击 2D Nav Goal 后在地图上选择终点目标。小车将开始自动导航自动到所选终点。
### 结果图
终端运行数据结果:<br>
2025-09-27 09:27:05 +00:00
![导航与路径规划1](/Pictures/Navigation_one.jpg#pic_center)
2025-09-27 09:22:26 +00:00
RViz图像<br>
2025-09-27 09:27:05 +00:00
![导航与路径规划2](/Pictures/Navigation_two.jpg#pic_center)
2025-07-04 12:40:46 +00:00
## 小组成员
张豪、祝令旭、程思凡、曾叶昊、张梦南<br>
(排名不分先后)