ROS(1-1)搭建ROS环境
参考文献:[http://robot.czxy.com](http://robot.czxy.com/)
## ROS安装
本章主要讲解的是ROS **Kinect** 版本在Ubuntu __16.04__系统上的安装,后面的内容会在此环境下进行。
### [#](http://robot.czxy.com/env/ros.html#_1-%E6%B7%BB%E5%8A%A0ros%E7%9A%84%E9%95%9C%E5%83%8F%E6%BA%90)1\. 添加ROS的镜像源
```
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'
```
添加的镜像源为中国科技大学的镜像源。由于ROS的主服务器在国外,国内访问时速度比较慢,因此我们添加国内镜像源。
### [#](http://robot.czxy.com/env/ros.html#_2-%E9%85%8D%E7%BD%AE%E5%AF%86%E9%92%A5)2\. 配置密钥
```
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
```
如果以上服务器在连接过程中存在问题,可以用以下两个备选地址:
hkp://pgp.mit.edu:80
hkp://keyserver.ubuntu.com:80
### [#](http://robot.czxy.com/env/ros.html#_3-%E6%9B%B4%E6%96%B0ubuntu%E7%9A%84%E6%BA%90)3\. 更新Ubuntu的源
```
sudo apt-get update
```
这个步骤如果更新速度比较慢,请回到ubuntu系统配置中,配置ubuntu的源为阿里的源
![image.png](https://upload-images.jianshu.io/upload_images/13571632-f6bdcdfd9f5d6a25.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
bug参考文献:[https://blog.csdn.net/sinat_34130812/article/details/81666728](https://blog.csdn.net/sinat_34130812/article/details/81666728)
### [#](http://robot.czxy.com/env/ros.html#_4-%E5%AE%89%E8%A3%85ros-kinetic)4\. 安装ROS kinetic
```
sudo apt-get install ros-kinetic-desktop-full
```
`ros-kinetic-desktop-full`内置了很多ROS的开发工具,作为开发阶段而言,我们选择此版本进行安装。
注意细节:在Ubuntu18.04.1系统中配置ROS的时候一直提示`E:无法定位软件包`,后来发现是ROS的版本不对应导致的,每个不同的ubuntu系统对应着不同的ROS版本,如果装错了就会出现上述问题,在Ubuntu18.04.1环境下可以安装的是melodic版本的,安装教程可以参考官网安装教程,ROS有Melodic、Lunar、Kinetic不同的种类对应着不同的ubuntu版本,
Melodic 主要对应:Ubuntu Artful (17.10), Bionic (18.04 LTS) 以及Debian Stretch
Kinetic 主要对应:Ubuntu Wily (15.10) and Ubuntu Xenial (16.04 LTS),
在安装的过程中要根据自己的ubuntu系统版本选择对应的ROS类型进行安装,具体的ROS类型可以在官网分支类型介绍上查看。
## ROS初始化
### [#](http://robot.czxy.com/env/ros.html#_1-%E5%88%9D%E5%A7%8B%E5%8C%96rosdep)1\. 初始化rosdep
```
sudo rosdep init
rosdep update
```
在使用ROS之前,需要初始化rosdep。 rosdep可以轻松地为要编译的代码添加系统依赖项,并且帮助我们运行ROS中核心组件。
### [#](http://robot.czxy.com/env/ros.html#_1-%E5%88%9D%E5%A7%8B%E5%8C%96rosdep)2\. 配置全局环境变量
```
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
```
kinetic安装在/opt/ros/kinetic目录下,我们需要将安装目录下的功能包配置到系统的环境变量中去。这样我们才能使用ROS提供给我们的一些命令工具。
报错解决:![image.png](https://upload-images.jianshu.io/upload_images/13571632-e1e1f7d5685f994d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
### [#](http://robot.czxy.com/env/ros.html#_1-%E5%88%9D%E5%A7%8B%E5%8C%96rosdep)3\. 安装打包工具依赖
```
sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential
```
## 安装错误处理
```
E: Failed to fetch http://45.252.224.77/files/2116000007703A52/packages.ros.org/ros/ubuntu/dists/xenial/main/binary-amd64/Packages.gz
E: Failed to fetch http://45.252.224.79/files/111600000609586B/mirrors.ustc.edu.cn/ros/ubuntu/dists/xenial/main/binary-i386/Packages.gz Hash Sum mismatch
E: Some index files failed to download. They have been ignored, or old ones used instead.
```
通常在安装过程中会出现 `Hash Sum mismatch`,这个时候,建议修改Ubuntu操作系统的软件源为`http://mirrors.ustc.edu.cn`。保证ros的源和ubuntu的源一致,规避掉hash校验的错误。
##测试安装
通过命令启动Ros Master
```
roscore
```
成功返回如下图:
![image.png](https://upload-images.jianshu.io/upload_images/13571632-25d7d6f5067b9636.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
---------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------
##### 以下是注意事项:
注意点1:`每次新开一个新终端都要在ws/ros_ws下执行catkin_make编译一下,再执行source ./devdl/setup.bash配置下环境变量。`
注意点2(如下图,这是python代码,c++也一样):
![注意点2](https://upload-images.jianshu.io/upload_images/13571632-d9b7155eff58791c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
总结python四种调试方式(c++调试也一样):
- 一:终端1:rosrun sample_topic py_publisher.py
终端2:rosrun sample_topic py_subscriber.py
- 二:终端1:rosrun sample_topic py_publisher.py
终端2:rosrun rqt_topic rqt_topic
- 三:终端1:rosrun sample_topic py_subscriber.py一直打开
终端2:rostopic pub /py_topic std_msgs/String "data:'写入数据'"
- 四:终端1:rosrun sample_topic py_subscriber.py一直打开
终端2:rosrun rqt_publisher rqt_publisher
# ROS(1-2)编译HelloWorld
### 一. c++代码编译hello world
##### 方法一:图形界面
- 1. mkdir devtool
- 2. cd devtool
wget https://download.jetbrains.8686c.com/cpp/CLion-2019.1.4.tar.gz
tar -zxvf CLion-2019.1.4.tar.gz
- 3.创建目录
mkdir -p $HOME/ws/ros_ws
- 4.创建src
mkdir src
- 5. cd ws/ros_ws
catkin_make // 编译
- 6. cd ws/ros_ws/src
catkin_create_pkg sample_hello roscpp rospy rosmsg
- 7. cd ws/ros_ws
source devel/setup.bash // 配置环境变量
- 8. cd wx/ros_ws
roscore
- 9. 打开另一个终端
cd ~/devtool/clion-2019.1.4/bin
./clion.sh
`报错:Gtk-Message: Failed to load module "canberra-gtk-module"`
`解决:apt-get install libcanberra-gtk-module`
- 10. 打开工程
![步骤1](https://upload-images.jianshu.io/upload_images/13571632-1eb6dcbcf775c2a1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![步骤2](https://upload-images.jianshu.io/upload_images/13571632-b11ee83097242f8e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![步骤3](https://upload-images.jianshu.io/upload_images/13571632-1754e0d442bc268c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![步骤4,出现这个的解决方法,见步骤5,没有遇见就略过](https://upload-images.jianshu.io/upload_images/13571632-0009fff77c161dc8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![步骤五](https://upload-images.jianshu.io/upload_images/13571632-561eaf77d0bc56bd.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![这个打开,好支持更高的c++版本](https://upload-images.jianshu.io/upload_images/13571632-6fb0eec552cf0a16.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![步骤6,编写代码然后执行](https://upload-images.jianshu.io/upload_images/13571632-d5d12add2c8643e8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
##### 方法二:命令行操作
- 另外打开一个�