Linux(Ubuntu16.04 ,64bit)学习之下安装ROS的教程(附一个hello world程序)

采用的是虚拟机(VMware Workstation)安装的Linux(Ubuntu16.04 ,64bit)node

首先,简单介绍一下:
ROS(Robot Operating System)是一个机器人软件平台,它能为异质计算机集群提供相似操做系统的功能。ROS的前身是斯坦福人工智能实验室为了支持斯坦福智能机器人STAIR而创建的交换庭(switchyard)项目。ROS提供一些标准操做系统服务,例如硬件抽象,底层设备控制,经常使用功能实现,进程间消息以及数据包管理。ROS是基于一种图状架构,从而不一样节点的进程能接受,发布,聚合各类信息(例如传感,控制,状态,规划等等)。目前ROS主要支持Ubuntu。python

接下来就是正式进入安装了!web

首先,更新一下镜像源(具体缘由,不说好!):shell

sudo gedit /etc/apt/sources.list

在这里插入图片描述
替换为:ubuntu

deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties  
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted  
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties  
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted  
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties  
deb http://mirrors.aliyun.com/ubuntu/ xenial universe  
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe  
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse  
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse  
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse  
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties  
deb http://archive.canonical.com/ubuntu xenial partner  
deb-src http://archive.canonical.com/ubuntu xenial partner  
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted  
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties  
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe  
deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse

保存并退出:
在这里插入图片描述
打开系统设置->点击“软件和升级”->点击“其余软件”->点击左下角“添加”按钮:bash

deb  http://ros.exbot.net/rospackage/ros/ubuntu/ xenial main

在这里插入图片描述

更新一下:网络

sudo apt-get update

在这里插入图片描述

设置Ubuntu的sources.list:架构

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

添加key:svg

sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 0xB01FA116

在这里插入图片描述
更新package(建议在安装全部软件前都要执行这两个命令):ui

sudo apt-get update
sudo apt-get upgrade

更新任务进行中:
在这里插入图片描述
最后出现问题:
在这里插入图片描述
按提示进行:

sudo apt-get update--fix-missing

在这里插入图片描述

准备工做作得差很少了;安装ROS kinetic完整版(时间有点久,下载慢,解压还好):

sudo apt-get install ros-kinetic-desktop-full

在这里插入图片描述

安装完成后,初始化ROS(出现问题,网络缘由):

rosdep init

在这里插入图片描述
按提示继续:

rosdep uodate

在这里插入图片描述
初始化环境,不然每次启动都须要source一次

echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
  source ~/.bashrc

在这里插入图片描述
安装额外依赖包:

sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential

在这里插入图片描述

启动ROSmaster,相似于给ROS操做系统开机(Ctrl+c退出):

在这里插入图片描述
启动turtlesim并监听turtlesim_node发来的消息(注意: 要在开一个终端):

rosrun turtlesim turtlesim_node

在这里插入图片描述

出现小乌龟(三只头的乌龟,有点迷!),则安装成功。

到此,安装就基本完成了,但还有一些相关环境的配置须要继续说明一下。

配置工做目录与运行环境:
在根目录下建立工做空间/catkin_ws,并建立src目录,为这个空间设置配置文件(这时候会自动新建一个CMakeLists.txt文件):

cd /opt/ros/kinetic/
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace

在这里插入图片描述

将ros用户本身的工程目录配置到bash里:

sudo gedit ~/.bashrc

在其最后一行加入:

export ROS_PACKAGE_PATH=~/catkin_ws:$ROS_PACKAGE_PATH

在这里插入图片描述

编译工程:

cd ~/catkin_ws/
catkin_make

在这里插入图片描述

将catkin_make加入到shell里:

source devel/setup.bash
echo $ROS_PACKAGE_PATH

在这里插入图片描述

ROS下的一个简单hello world程序;
参考连接:http://www.javashuo.com/article/p-ysgowjgm-db.html
在catkin_ws/src下建立项目beginner_tutorials:

catkin_create_pkg beginner_tutorials

进入项目目录,再新建src包:

cd beginner_tutorials/
mkdir src

在beginner_tutorials/src文件夹中建立hello.cpp文件,并修改文件内容:

cd  ..
touch hello.cpp
sudo gedit hello.cpp

在这里插入图片描述
hello.cpp的代码:

#include<ros/ros.h>
int main(int argc,char **argv){   
ros::init(argc,argv,"hello_ros");   
ros::NodeHandle nh;   
ROS_INFO_STREAM("helloworld,ROS!");
}

在这里插入图片描述

修改CMakeLists.txt文件(项目配置文件),退回到cd beginner_tutorials/文件夹中,修改CMakeLists.txt文件:

sudo gedit CMakeLists.txt

修改内容以下:

cmake_minimum_required(VERSION 2.8.3)
project(beginner_tutorials)
#添加须要的依赖库 roscpp
find_package(catkin REQUIRED COMPONENTS roscpp)
include_directories(
${catkin_INCLUDE_DIRS}
)
#声明想要的可执行文件的文件名,以及所须要的源列表,若是有多个源列表,空格列在此处
add_executable(hello src/hello.cpp)
#告诉Cmake当连接此可执行文件时须要连接哪些库
target_link_libraries(hello ${catkin_LIBRARIES})

在这里插入图片描述
修改package.xml文件:

sudo gedit package.xml

此处只需在 <buildtool_depend>catkin</buildtool_depend>后面添加这两句便可:

<build_depend>roscpp</build_depend>
 <exec_depend>roscpp</exec_depend>

在这里插入图片描述
回到编译工做区:

cd  ..
cd ~/catkin_ws
catkin_make

在这里插入图片描述

能够发现,在catkin_ws/devel/lib/beginner_tutorials/目录下会生成hello可执行文件:
在这里插入图片描述
打开ROS:

roscore

打开另一个终端:

source devel/setup.bash
rosrun beginner_tutorials hello

在这里插入图片描述

1处出现错误是由于没有先运行:source devel/setup.bash;致使路径出现问题,改正回来,就能成功运行!