#

ROS_Learn

## 实验一 ### ROS-noetic安装,应用于Ubuntu20.04LTS
注:最好全程使用root权限 切换ubuntu软件源,访问清华源来提升下载速度。 ```c sudo vim /etc/apt/sources.list # 进入apt下载源文件 ``` 删除所有ubuntu官方源(最好提前备份以下文件避免操作失误无法恢复),添加清华源。 ```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 ``` vim中按`Esc`退出编辑模式,按`Shift+;`进入命令输入模式输入`wq`保存退出。

在命令行中输入下列命令添加ROS源地址。 ```c sudo sh -c 'echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu focal main" > /etc/apt/sources.list.d/ros-latest.list' ``` 设置apt密钥。 ```c sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-keys 6A030B21B4D2B67B ``` 更新apt软件源。 ```c sudo apt update ``` 安装ROS-noetic(适用于Ubuntu20.04Lts)。 ```c sudo apt install ros-noetic-desktop-full ``` 初始化 rosdep。 ```c sudo rosdep init rosdep update ``` 配置环境变量。 ```c source /opt/ros/noetic/setup.bash source ~/.bashrc ``` 安装ROS-python3工具包。 ```c sudo apt install python3-rosinstall python3-rosinstall-generator python3-wstool sudo apt install build-essential ``` 环境配置检测,配置无误的话可无需运行。 ```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 ``` 常用命令。 ```c # 将路径换为文件/文件夹路径,赋予文件/文件夹可执行权限 chmod +x /路径 # 将文件/文件夹可编辑权限赋予某用户 sudo chown -R 用户名:用户名 /路径 # 停止roscore命令 ps aux | grep roscore kill -9 ``` 启动roscore。 ```c roscore ``` 启动小乌龟。 ```c rosrun turtlesim turtlesim_node ``` 控制小乌龟(新终端窗口打开)。 ```c rosrun turtlesim turtle_teleop_key ``` ### 结果图 终端运行结果:
![小乌龟](/Pictures/Turtle.png#pic_center) 创建工作空间。 ```c mkdir -p src catkin_make ``` 设置 ROS 环境变量。 ```c echo "source /文件夹路径/devel/setup.bash" >> ~/.bashrc source ~/.bashrc ``` 进入 src 目录并创建功能包。 ```c cd src catkin_create_pkg Service rospy std_msgs geometry_msgs visualization_msgs message_generation ``` 创建结构和放置文件。 ```c cd Service mkdir scripts mkdir srv ``` ## 实验二 ### ROS中话题通信 编译工作空间。 ```c catkin_make ``` 设置文件可执行权限。 ```c chmod +x /文件路径/程序名.py ``` 添加环境变量(所有新终端窗口要执行下列命令)。 ```c source /home/zmn/Gitea/ROS_Learn/devel/setup.bash ``` 启动roscore(终端A)。 ```c roscore ``` 启动订阅端(终端B)。 ```c rosrun Topic_Newsletter Subscriber_TN.py ``` 启动发送端(终端C)。 ```c rosrun Topic_Newsletter Publisher_TN.py ``` 启动RViz(终端D)。 ```c rviz ``` 将RViz左侧 Global Options 面板中 Fixed Frame 设为 map (默认无需修改)。
在 Displays 面板中,点击 Add,添加 Marker 类型。 ### 结果图 终端运行数据结果:
![话题通讯1](/Pictures/Topic_Newsletter_one.png#pic_center) RViz图像:
![话题通讯2](/Pictures/Topic_Newsletter_two.png#pic_center) ## 实验三 ### ROS中服务端和客户端 编译工作空间。 ```c catkin_make ``` 设置文件可执行权限。 ```c chmod +x /文件路径/程序名.py ``` 添加环境变量。 ```c source /home/zmn/Gitea/ROS_Learn/devel/setup.bash ``` 启动roscore(终端A)。 ```c roscore ``` 启动服务端(终端B)。 ```c rosrun Service Service_S.py ``` 启动订阅端(也是客户端)(终端C)。 ```c rosrun Service Subscriber_Client_S.py ``` 启动发送端(终端D)。 ```c rosrun Service Publisher_S.py ``` 启动RViz(终端F)。 ```c rviz ``` 将RViz左侧 Global Options 面板中 Fixed Frame 改为程序中的 world 。
在 Displays 面板中,点击 Add,添加 Marker 类型。 ### 结果图 终端运行数据结果:
![服务和客户1](/Pictures/Service_one.png#pic_center) RViz图像:
![服务和客户2](/Pictures/Service_two.png#pic_center)