刚刚开始学习ROS,打算入机器人的坑了,参考教材是《ROS及其人开发实践》胡春旭编著 机械工业出版社 华章科技出品。本来以为可以按照书上的步骤一步步来,但是,too young to simple啊,程序员的苦逼日子开始了,特地记录如下。

  一、几个概念:

  1、ROS:(Robot operating system),直接翻译就是机器人操作系统,但是很坑爹的是,它根本不是个系统,他只是个编写机器人软件的强大框架。它含有大量的工具、丰富的库、众多的协议,拥有操作系统的作用,包括硬件抽象、底层驱动管理、功用功能执行、程序间消息传递、程序发行包管理等。能够大大简化机器人平台的繁杂,提高了机器人行为控制的稳定性。但是,我要说ROS叫(robot operating system framework)更加通俗易懂些。

  2、ROS设计目标:

   a、尽量提高机器人研发中的软件复用率

    b、框架中的每个功能模块能够被单独设计、编译、运行时松耦合方式结合

   c、功能模块都封装于独立的功能包或元功能包,便于社区共享与分发

   d、ROS由核心通信机制、开发工具、应用功能和生态系统四个部分构成

   e、为机器人开发提供了硬件抽象、底层驱动、消息传递、程序管理、应用原型等机制,整合了第三方工具及库文件,便于用户快速完成机器人应用的建立、编写和多机整合等

  3、ROS的特点:ROS的核心分布式网络,借助灵活的通信方式,实现数据传递的高效性。

   a、点对点的设计,进程以节点形式运行

   b、多语言支持,C、C++、Python、Java及Octave和Lisp等,每个模块可以用不同的语言实现

   c、架构精简、集成度高

   d、组建化工具包丰富

   e、开源且免费,BSD协议

  二、安装ROS,ROS主要支持特定版本的linux,几乎每个版本的ROS和对应版本的linux对应,否则几乎无法成功安装,最新版本的ROS Melodic是2018年5月发布的,几乎网上都是对kinetic版本的,linux选用ubuntu 18.04.2版本即可,桌面好像没有过多要求。

  本篇是在Kubuntu18.04上安装的Melodic版本的ROS框架,就是按照官方教程一步步来就可以:

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

  2、更新软件源:sudo apt update, sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

  3、基础安装:普通用户最好完全安装 sudo apt install ros-melodic-desktop-full,也可以安装指定的包:sudo apt install ros-melodic-PACKAGE例如:sudo apt install ros-melodic-slam-gmapping

  4、查找可以用的包:apt search ros-melodic

  5、初始化rosdep,使用ros前,需要初始化rosdep,通过初始化rosdep完成系统组建的基本安装与配置:sudo rosdep init,更新rosdep update

  6、环境配置:echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc 更新配置文件source ~/.bashrc

  7、安装构建依赖包:sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential

  8、系统升级:sudo apt upgrade

  三、管理环境,catkin方式创建ROS工作空间

  1、下面我们开始创建一个catkin 工作空间:

    $ mkdir -p ~/catkin_ws/src                                                      #创建目录
    $ cd ~/catkin_ws/src                             #切换到新建目录

    $ cd ~/catkin_ws/                            #切换到新建目录

       $ catkin_make                              #编译它:

    $ source devel/setup.bash                        #加载到系统环境

    $ roscore                                 #启动ros环境

    $  echo $ROS_PACKAGE_PATH                          #检查环境变量,如果结果如:/home/municationk/catkin_ws/src:/opt/ros/melodic/share,个人可能不同,类型基本一样就是可以了

    到此,ROS工作环境已经搭建完成。

ROS机器人开发实践学习笔记1的更多相关文章

  1. ROS机器人开发实践学习笔记3

    摘要: 刚刚开始学习ROS,打算入机器人的坑了,参考教材是<ROS及其人开发实践>胡春旭编著 机械工业出版社 华章科技出品.本来以为可以按照书上的步骤一步步来,但是,too young t ...

  2. ROS机器人开发实践学习笔记2

    刚刚开始学习ROS,打算入机器人的坑了,参考教材是<ROS及其人开发实践>胡春旭编著 机械工业出版社 华章科技出品.本来以为可以按照书上的步骤一步步来,但是,too young to si ...

  3. ros机器人开发概述

    1.       ROS项目开发流程? 参照古月大神写的ROS探索总结系列:http://blog.exbot.net/archives/619 具体项目设计可看看<程序员>杂志的最新一篇 ...

  4. ROS机器人开发实践1->SSH远程登录要点记录

    1.有线网卡 设置 找到有线网络,点击设置,修改其中的IPv4的地址和子网掩码. 1 //地址 2 192.168.xxx.xxx 3 //子网掩码 4 255.255.255.0 点击应用 2.配置 ...

  5. SLAM+语音机器人DIY系列:(四)差分底盘设计——4.底盘ROS驱动开发

    摘要 运动底盘是移动机器人的重要组成部分,不像激光雷达.IMU.麦克风.音响.摄像头这些通用部件可以直接买到,很难买到通用的底盘.一方面是因为底盘的尺寸结构和参数是要与具体机器人匹配的:另一方面是因为 ...

  6. Ubuntu虚拟机+ROS+Android开发环境配置笔记

    Ubuntu虚拟机+ROS+Android开发环境配置笔记 虚拟机设置: 1.本地环境:Windows 7:VMWare:联网 2.虚拟环境 :Ubuntu 14.04. 比較稳定,且支持非常多ROS ...

  7. ROS机器人程序设计(原书第2版)补充资料 (柒) 第七章 3D建模与仿真 urdf Gazebo V-Rep Webots Morse

    ROS机器人程序设计(原书第2版)补充资料 (柒) 第七章 3D建模与仿真 urdf Gazebo V-Rep Webots Morse 书中,大部分出现hydro的地方,直接替换为indigo或ja ...

  8. Kinect开发学习笔记之(一)Kinect介绍和应用

    Kinect开发学习笔记之(一)Kinect介绍和应用 zouxy09@qq.com http://blog.csdn.net/zouxy09 一.Kinect简单介绍 Kinectfor Xbox ...

  9. Cocos2dx游戏开发系列笔记13:一个横版拳击游戏Demo完结篇

    懒骨头(http://blog.csdn.net/iamlazybone QQ:124774397 ) 写下这些东西的同时 旁边放了两部电影 周星驰的<还魂夜> 甄子丹的<特殊身份& ...

随机推荐

  1. C#通过重载构造函数传递参数、实现两个窗体下的方法的互相调用

    直接切入主题 有时候同一个项目下我们可能会使用多个窗体,窗体间方法互相调用也不可避免,好了,使用无参无返回值的方法,开始上图 1.新建一个winform项目Form1,并再添加一个窗体Form2:拖入 ...

  2. 关于微信小程序获取view的动态高度填坑

    wx.createSelectorQuery().select('#box').boundingClientRect(function (rect) { width = rect.width heig ...

  3. oracle exists和 not exists 的用法

    比如 a,b 关联列为 a.id = b.id,现在要取 a 中的数据,其中id在b中也存在: select * from a where exists(select 1 from b where b ...

  4. MVC模板页使用

    这里我们要做一个公共的模板,样式如下: 内容 ·asp.net mvc如何创建模板??1.在/Views/Shared/中右键-添加-视图 2.重命名为”HeadLayout”,勾选”创建为分部视图” ...

  5. iOS7 新后台及下载SDK介绍

    在iOS7以前的系统中,App默认是不能后台运行的,如果要后台运行,可以采用以下两类方法: (1)使用beginBackgroundTaskWithExpirationHandler函数,向系统申请一 ...

  6. C# 中 Linq 操作 DataTable

    方法一:更简洁 Console.WriteLine(dt.Rows.OfType<DataRow>().First(x => x.Field<string>(" ...

  7. leetcode-21.合并有序链表 · List

    题面 合并两个排序链表. 算法 创建结果链表头*res,*p指向头,当两个链表节点都不为空时,比较节点值,值小的挂在p后面,二者(p和小者)顺次后移.知道某条链表空,跳出while循环.接着,直接将不 ...

  8. ant design pro超详细入门教程

    1.Ant Design Pro 初了解 说到ant design pro,得先了解一下ant design是个什么东西?ant design蚂蚁金服基于react打造的一个服务于企业级产品的UI框架 ...

  9. 页面使用element-tree

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. Signal Processing and Pattern Recognition in Vision_15_RANSAC:Random Sample Consensus——1981

    此部分是 计算机视觉中的信号处理与模式识别 与其说是讲述,不如说是一些经典文章的罗列以及自己的简单点评.与前一个版本不同的是,这次把所有的文章按类别归了类,并且增加了很多文献.分类的时候并没有按照传统 ...