刚刚开始学习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. Java Web 深入分析(9) Session 和 Cookie

    前言: session 和cookie都是为了保持服务器和客户端之间交互状态.如果一天的PV有几亿,而一个cookie占200个字节但是也会占用很多带宽?所以大访问量就引用session,但是几百台服 ...

  2. Joy OI【走廊泼水节】题解--最小生成树推论变式

    题目链接: http://joyoi.org/problem/tyvj-1391 思路: 首先这需要一个推论: "给定一张无向图,若用\(k(k<n-1)\)条边构成一个生成森林(可以 ...

  3. oracle学习笔记:字符串替换 replace、regexp_replace、translate函数

    1.replace 函数 语法:replace(char, search_string, replacement_string) --针对字符串替换 功能: ​ 将char中的字符串替换. ​ 当re ...

  4. h5常见

    Meta基础知识: H5页面窗口自动调整到设备宽度,并禁止用户缩放页面//一.HTML页面结构<meta name="viewport" content="widt ...

  5. c# 构造函数举例

  6. Thymeleaf整合到Spring Security,标签sec不起作用

    将 pom 文件中的 thymeleaf-extras-springsecurity4 依赖改成  thymeleaf-extras-springsecurity5 <dependency> ...

  7. [Python] For 嵌套循环打印图形 nested loop-练习题答案

    前一篇:[Python] For 嵌套循环打印图形 nested loop-练习题 [python的for循环嵌套打印如下图形] 图形一: 输出结果: ******* ******* ******* ...

  8. 【shell】ping加时间戳回复

    ping 192.168.2.1 -c 10 | awk '{ print $0"\t" strftime("%H:%M:%S",systime()) } ' ...

  9. C#在代码中编写输出debug信息-类Debug的使用

    文章:C# 的两种debug 方法 文章:C#跟踪和调试程序-Debug类使用 很全面的文章,可以仔细学习使用下. 文章:C#调试类 没有仔细看. 关键字:Debug类和Trace类有什么区别? 微软 ...

  10. webSocket的场景应用

    应用场景 服务器更新 前端页面也进行局部刷新,更新服务器端返回的信息 什么是webSocket? 它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对 ...