在ROS官网,已经给出了详细的教程。下面我就般一下砖,把相应的操作写到这里。官方网址:http://wiki.ros.org/cn/

安装ROS系统

  indigo在ubuntu上的安装教程。官网:http://wiki.ros.org/cn/indigo/Installation/Ubuntu

  1. 添加sources.list

   配置你的电脑使其能够安装来自 packages.ros.org的软件。 ROS Indigo 支持 Saucy (13.10) 和 Trusty (14.04)。

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

  如果你觉得你的下载速度太慢或者是无法下载,可以使用国内的源. http://wiki.ros.org/ROS/Installation/UbuntuMirrors

   2. 添加 keys

    sudo apt-key adv --keyserver hkp://pool.sks-keyservers.net --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116  

  3. 安装ROS系统

    首先,要保证Debian软件包索引是最新的

      sudo apt-get update

    然后安装(注:桌面完整版里面包含了各个工具和软件包,桌面完整版中包含了基础班。基础班只有核心的软件包和工具,无rqt、rviz等工具)

      sudo apt-get install ros-indigo-desktop-full  (桌面完整版安装

      sudo apt-get install ros-indigo-ros-base (基础版安装

  4. 初始化rosdep  

      sudo rosdep init

      rosdep update

  5. 设置环境

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

      source ~/.bashrc

   6. 安装 rosinstall

      sudo apt-get install python-rosinstall

   至此,ros的安装已经完成,如果您安装的过程中出现问题,可以将出错的那一行拿到百度中搜索查找一下解决方案。

   7. 安装测试

    重新打开一个终端,并执行roscore,如果未出现红色错误并出现以下情况则代表安装成功。

    

创建ROS工作空间

  ros的工作空间创建其实很简单,就相相当于用编译器编译一次文件。

  但是编译器所执行的文件目录下必须由src文件。所以创建ROS工作空间的步骤就是,找一个目录,在里面新建一个src文件件,然后编译,编译工具会自动生成工作空间需要的文件。

    mkdir -p ~/catkin_ws/src     #创建目录

    cd ~/catkin_ws/      #进入到目录中,确保有src目录

    catkin_make        #编译

  可见,执行编译工作后,我们的目录中多了 build 和 devel子目录,并多了好多文件,在src目录中多了一个CMakeLists.txt文件,这就是编译器自动创建的,也就创建了一个新的工作空间catkin_ws。

  工作空间目录如下:

  

  为了能让ros系统发现我们的新的工作空间,我们需要设置设置一下环境变量,这样ros系统才能找到我们以后创建的包文件。

    source ~/catkin_ws/devel/setup.bash

  为了避免以后每次打开终端都要执行上面这句话,我们可以将上面的语句添加到.bashrc文件中。

    echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc

  这样,我们以后打开终端,直接操作就行了。  

创建一个ROS程序包

  首先,进入我们的工作空间的src目录中,我们的程序包必须放到工作空间的src目录中(也可以是子目录).

  我创建一个mwRobot_description,用来描述我的mwRobot机器人。(catkin_create_pkg后的第一个参数是包名,后面是依赖)

    catkin_create_pkg mwRobot_description std_msgs rospy roscpp urdf

  这样,一个ros程序包就创建好了,我们编译一下,然后关闭终端在重新启动看看能不能识别到我的程序包。

  创建程序包后要回到工作空间目录下,执行catkin_make,然后关闭终端重新打开,在终端上输入roscd mw 然后按tab建看看能否看到自己包的名字(mw是我创建包的前两个字母,你们自行替换)。

  如果可以看到,则mwRobot_description包创建成功。

   

【探索之路】机器人篇(2)-ROS系统并创建工作空间和项目的更多相关文章

  1. 【2017.10.13 ROS机器人操作系统】ROS系统常用术语及资源

    ROS机器人操作系统是一种后操作系统,提供了类似于软件开发中使用到的中间件的功能. ROS: Robot Operating System 机器人操作系统 Package: 功能包 Stack: 功能 ...

  2. 编写第一个ROS(创建工作空间workspace和功能包package)

    刚接触ROS,学着写了第一个程序,怕以后忘记,就将其步骤记录下来.. 首先你必须保证你电脑已安装配置好ROS. 1.创建工作空间(workspace) 我们所创建功能包package,应该全部放到一个 ...

  3. ROS教程(二):创建工作空间(图文)

    ros教程:创建工作空间 目录 前言 一.工作空间? 二.创建一个工作空间 1.创建目录 2.编译 前言 使用catkin创建一个工作空间 一.工作空间? 在ROS系统下,我们所有的项目都放在一个工作 ...

  4. (转)-编写第一个ROS(创建工作空间workspace和功能包package)

    原文网址:http://www.cnblogs.com/liuamin/p/5704281.html 刚接触ROS,学着写了第一个程序,怕以后忘记,就将其步骤记录下来.. 首先你必须保证你电脑已安装配 ...

  5. ROS系统MoveIt玩转双臂机器人系列(一)

    一.ROS系统的MoveIt模块简介 机器人操作系统ROS目前最受关注的两个模块是导航(Navigation)和机械臂控制(MoveIt!),其中,机械臂控制模块(后面简称MoveIt)可以让用户快速 ...

  6. ROS机器人程序设计(原书第2版)补充资料 (贰) 第二章 ROS系统架构及概念

    ROS机器人程序设计(原书第2版)补充资料 (贰) 第二章 ROS系统架构及概念 书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中使用. 由于工作事 ...

  7. ROS机器人程序设计(原书第2版)补充资料 (壹) 第一章 ROS系统入门

    ROS机器人程序设计(原书第2版)补充资料 (壹) 第一章 ROS系统入门 书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中使用. 第一章主要包括R ...

  8. SLAM+语音机器人DIY系列:(二)ROS入门——2.ROS系统整体架构

    摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重点对ROS ...

  9. 【探索之路】机器人篇(1)-ROS-mwRobot开篇

    机器人的定义 首先,什么才是机器人?机器人是不是必须和人一样的外形?我们先看一看维基百科给机器人的定义: 由上可见,机器人并不是和人一样的外形,而是可以模拟人类行为或者思想再或者是模拟其他生物的机械. ...

随机推荐

  1. 12_Sensor简单实例

    列出Android手机所支持的Sensor. package com.example.sensorlist; import java.util.List; import android.app.Act ...

  2. NDK&JNI开发总结

    NDK&JNI开发总结 简介 附个不错的博客 https://www.jianshu.com/p/87ce6f565d37 在Android Framework中,需要提供一种媒介或 桥梁,将 ...

  3. WindowsServer系统设置U盘引导及安装

    准备一台服务器,我的服务器上图. 1.开机启动,按DEL进入BIOS.我的显示如下图,按F7进入. 2.找到设置启动项的地方 3.修改U盘启动项 4.保存退出. 5.重启服务器正常的话应该能够从U盘引 ...

  4. PHP代码审计分段讲解(11)

    后面的题目相对于之前的题目难度稍微提升了一些,所以对每道题进行单独的分析 27题 <?php if(!$_GET['id']) { header('Location: index.php?id= ...

  5. HTML基础之标签

    HTML初识 HTML(Hpyer Text Markup Language的缩写)译为"超文本标签语言",用来描述网页的一种语言.所谓超文本,因为它可以加入图片.声音.动画.多媒 ...

  6. js- 实现属性名的拼接 obj['name']

     obj.name---->obj[name] 这两种调用方式一样,使用obj.name内部转换成 obj['name'], 使用obj['name']更快. obj['name'] 里面必须是 ...

  7. pandas 删除列

    ddf = pd.DataFrame({"id":[1,2,3], "name":[4,5,6],"age":[7,8,9]})ddf = ...

  8. 2、tensorflow 变量的初始化

    https://blog.csdn.net/mzpmzk/article/details/78636137 关于张量tensor的介绍 import tensorflow as tf import n ...

  9. Asp.net core验证类ModelStateDictionary的bug

    在使用.net core 3.1 时发现明明没有验证请求类属性,甚至已经加了默认值 但是验证类时依然会报错 经过网上百度等搜索,尝试使用可空类型赋值默认值 果然验证类没有报错 不清楚是微软的bug还是 ...

  10. JavaSE16-集合·其三

    1.Map集合 1.1 Map集合概述和特点 1 interface Map<K,V> K:键的类型:V:值的类型 Map集合的特点 键值对映射关系 一个键对应一个值 键不能重复,值可以重 ...