ROS 入门 (1)

悠悠 2022-04-13 06:59 343阅读 0赞

ROS简介

ROS(Robot Operating System)是一个机器人软件平台,它能为异质计算机集群提供类似操作系统的功能。

ROS提供一些标准操作系统服务,例如硬件抽象,底层设备控制,常用功能实现,进程间消息以及数据包管理。ROS是基于一种图状架构,从而不同节点的进程能接受,发布,聚合各种信息(例如传感,控制,状态,规划等等)。目前ROS主要支持Ubuntu。

ROS可以分成两层,低层是上面描述的操作系统层,高层则是广大用户群贡献的实现不同功能的各种软件包,例如定位绘图,行动规划,感知,模拟等等。

ROS(低层)使用BSD许可证,所有是开源软件,并能免费用于研究和商业用途。而高层的用户提供的包则可以使用很多种不同的许可证。

ROS是一个机器人系统,它要在Linux系统中才能运行,所以相当于是Linux的次级系统,而ROS对Ubuntu系统的兼容性是最好的,所以一般都安装ROS在Ubuntu中,但是两个的版本是有对应的,一定要按以下规则安装









































ROS发布日期 ROS版本 对应的Ubuntu版本
2016.3 ROS Kinetic Kame Ubuntu 16.04(Xenial)/Ubuntu 15.10
2015.3 ROS Jade Turtle Ubuntu 15.04(Wily)/Ubuntu LTS 14.04
2014.7 ROS Indigo Igloo Ubuntu 14.04(Trusty)
2013.9 ROS Hydro Medusa Ubuntu 12.04 LTS(Precise)
2012.12 ROS Groovy Galapagos Ubuntu 12.04(Precise)

ROS安装配置(本博文使用版本Ubuntu 16.04 + ROS Kinetic)

1.软件中心配置

Ubuntu桌面右上角设置->系统设置->软件和更新,按下图全部勾选(确保”restricted” “universe” 和 ”multiverse”都勾选了),关闭更新即可

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5MTEwNTM4_size_16_color_FFFFFF_t_70

2.添加源

打开控制台(Ctrl + Alt + T ),输入如下指令:

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

设置密钥:

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

3.安装ROS

更新系统软件,保证是最新版

  1. $ sudo apt-get update

ROS kinetic有很多版本,工业版,基础版,高级版,豪华版,至尊豪华…学习ROS,当然是安装自尊豪华全功能版本

  1. $ sudo apt-get install ros-kinetic-desktop-full

打完代码,你就可以进入漫长的等待状态(网速好的可能会快点,可恶的是我一直没搞定Ubuntu连接校园网的问题,只能开着手机wifi,网速最快几百k,最慢达到pb级别…汗颜…然后挂了一个晚上才安装好,幸运的是,安装十分顺利,没有任何小虫子(bug)的骚扰)

安装完成后,使用下面的命令查看可使用的包:

  1. $ apt-cache search ros-kinetic

4.初始化ROS

初始化rosdep

  1. $ sudo rosdep init
  2. $ rosdep update

初始化环境变量(非常重要)

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

安装常用的插件

  1. $ sudo apt-get install python-rosinstall

5.测试ROS

启动ROS

  1. $ roscore

看看有没有显示started core service [/rosout],有则测试成功,恭喜你!!!

另外说说:

每次打开终端,都需要初始化环境,然后在启动ROS,会比较麻烦,不过下面的方法可以解决这个问题

6.Ubuntu开机自启动roscore命令,自动打开终端执行脚本命令

新建一个脚本文件,名字为 autoLoad.sh (存放的地方随便,home是你个人文件目录,所以可以放在这里)

把以下代码复制到文件中,ROS版本修改为自己的ROS版本,保存

  1. #! /bin/bash
  2. source /opt/ros/ROS版本/setup.bash
  3. roscore

打开终端,执行gnome-session-properties,弹出一个“启动应用程序首选项”的菜单,点击添加

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5MTEwNTM4_size_16_color_FFFFFF_t_70 1

名称、注释随便填

命令:gnome-terminal -X autoLoad所在目录路径/autoLoad.sh

示例:我的autoLoad.sh 路径为 /home/shareclub/Ros/mecAGV/autoLoad.sh

则命令为:gnome-terminal -X /home/shareclub/Ros/mecAGV/autoLoad.sh

点击添加即可

ROS初级使用

ROS文件系统介绍

1.文件系统工具

rospack

允许你获取软件包的有关信息,使用rospack中的find参数选项,可以返回软件包的路径信息

用法:

  1. $ rospack find [包名称]

示例:

  1. $ rospack find roscpp

输出:

  1. YOUR_INSTALL_PATH/share/roscpp

roscd

roscd是rosbash命令集中的一部分,允许你直接切换(cd)工作目录到某个软件包或软件包集中。

用法:

  1. # roscd [本地包名称[/子目录]]

示例:

  1. $ roscd roscpp

验证输出:

  1. $ pwd
  2. //输出 YOUR_INSTALL_PATH/share/roscpp

注意:roscd智能切换到那些路径已经包含在ROS_PACKAGE_PATH环境中的软件包,要查找ROS_PACKAGE_PATH中包含的路径可输入

  1. $ echo $ROS_PACKAGE_PATH

使用roscd也可以切换到一个软件包或软件包集的子目录中

示例:

  1. $ roscd roscpp/cmake
  2. $ pwd

输出:

  1. YOUR_INSTALL_PATH/share/roscpp/cmake

roscd log

可以切换到ROS保存日志文件的目录下,需注意的是,如果你没有执行过任何ROS程序,系统会报错说该目录不存在

示例:

  1. $ roscd log
  2. $ pwd

输出:

  1. /home/YOUR_NAME/.ros/log

rosls

rosls是rosbash命令集中的一部分,允许直接按软件包的名称而不是绝对路径执行ls命令

用法:

  1. # rosls [本地包名称[/子目录]]

示例:

  1. $ rosls roscpp_tutorials

输出:

  1. cmake launch package.xml srv

Tab自动完成输入

当要输入一个完整的软件包名称时会变得比较繁琐,在之前的例子中roscpp tutorial是相当长的名称,但是,一些ROS工具支持TAB自动完成输入的功能。

示例:

  1. # roscd roscpp_tut<<现在按TAB键>>

按下TAB键后,命令行中会自动补充剩余部分

  1. $ roscd turtle

但是,如果有多个软件包有同一个开头,按下TAB键后会罗列出所有以同个开头的ROS软件包,这是,只需在列出来的软件包中在输入有差异的部分再按TAB键就会自动补全

示例:在上一个示例的情况下有多个软件包以turtle开头,当再按TAB键后会罗列出所有yiturtle开头的ROS软件包

  1. turtle_actionlib/ turtlesim/ turtle tf/ turtle)tf2/

如果你需要的是第一个软件包则

  1. $ roscd turtle_a<<再次按TAB键>>

命令行自动补全:

  1. $ roscd turtle_actionlib

发表评论

表情:
评论列表 (有 0 条评论,343人围观)

还没有评论,来说两句吧...

相关阅读

    相关 ROS 入门1

    ROS简介 ROS(Robot Operating System)是一个机器人软件平台,它能为异质计算机集群提供类似操作系统的功能。 ROS提供一些标准操作系统服务,例

    相关 ros学习1

    1.运行roscore roscore roscore含义:roscore是一个向节点提供连接信息,以便节点间可以互相传递信息的服务程序,每个节点都在启动时连接到r