ubuntu1604ros安装开发学习记录持续更新中(代码片段)

EngineerX_ EngineerX_     2022-10-21     808

关键词:

Ubuntu1604 ROS安装、开发、学习记录

一、绪论

1.1 引言

  由于本人工作需要使用ROS进行相关开发,但是经常遗忘常用工具的使用方法和开发的内容,故在此进行记录。

1.2 书籍推荐

  目前我入门主要看的书是ROS_Robot_Programming_CN.pdf, 里面的内容通俗易懂,有具体的实例介绍,推荐入门者查看,本文部分内容也是引自该书籍。

  • ROS_Robot_Programming_CN.pdf

1.3 ROS介绍

在ROS维基中将ROS定义为“ROS是一个开放源代码的机器人元操作系统。它提供了我们对操作系统期望的服务,包括硬件抽象、低级设备控制、常用功能的实现、进程之间的消息传递以及功能包管理。它还提供了用于在多台计算机之间获取、构建、编写和运行代码的工具和库。”
换句话说,ROS包括一个类似于操作系统的硬件抽象,但它不是一个传统的操作系统,它具有可用于异构硬件的特性。此外,它是一个机器人软件平台,提供了专门为机器人开发应用程序的各种开发环境。

二、ROS安装

  本文安装ROS Kinetic,是在Ubuntu1604中使用的版本

2.1 添加代码列表

  在ros-latest.list添加ROS版本库。打开新的终端窗口,输入如下命令。

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

2.2 设置公钥

  为了从ROS存储库下载功能包,下面添加公钥 。作为参考,以下公钥可以根据服务器的操作发生变更,请参考官方wiki页面

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

2.3 更新软件包索引

  现在用户已经将ROS版本库地址放在代码列表中,我们建议在安装ROS之前刷新软件包列表的索引并升级所有当前安装的Ubuntu软件包,但这不是必选项

sudo apt-get update && sudo apt-get upgrade -y

2.4 安装ROS Kinetic Kame

  使用以下命令安装台式机的ROS功能包。这包括ROS、rqt、RViz、机器人相关的库、仿真和导航等等。

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

  上面的安装只包含基本的rqt,但是笔者将安装所有额外的rqt相关的功能包。用下面的命令安装所有rqt相关的功能包,可以很方便地使用各种rqt插件。

sudo apt-get install ros-kinetic-rqt*

2.5 初始化rosdep

  在使用ROS之前,必须初始化rosdep。rosdep是一个通过在使用或编译ros的核心组件时轻松安装依赖包来增强用户便利的功能。

sudo rosdep init
rosdep update

2.6 安装rosinstall

  这是安装ROS的各种功能包的程序。它是被频繁使用的有用的工具,因此务必要安装它。

sudo apt-get install python-rosinstall

2.7 加载环境设置文件

  下面加载环境设置文件。里面定义着ROS_ROOT和ROS_PACKAGE_PATH等环境变量。

#追加重定向
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
source ~/.bashrc

2.8 创建并初始化工作目录

  ROS使用一个名为catkin的ROS专用构建系统。为了使用它,用户需要创建并初始化catkin工作目录,如下所示。除非用户创建新的工作目录,否则此设置只需设置一次。

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace

  如果用户已经创建了一个catkin工作目录,下面我们来进行构建。目前,只有src目录和CMakeLists.txt文件在catkin工作目录中,但让我们尝试使用catkin_make命令来构建吧。

cd ~/catkin_ws/
catkin_make

  当用户构建没有问题时,运行ls命令。除了自己创建的src目录之外,还出现了一个新的builddevel目录。catkin的构建系统的相关文件保存在build目录中,构建后的可执行文件保存在devel目录中。

2.9 测试安装结果

  所有ROS安装已完成。要测试它是否正确安装,请关闭所有终端窗口并运行一个新的终端窗口。现在通过输入以下命令来运行roscore

roscore

三、ROS开发

  由于本人也是刚接触ROS时间不久,目前使用ROS最重要的工具便是ROS消息通信的功能,相信这也绝大部分朋友们会使用到的,这里进行简单的记录供大家学习。

3.1 ROS操作测试

  ROS最典型的例子便是小乌龟程序,也就是turtlesim工程,能够在屏幕上显示ROS的图标-乌龟,并可以用键盘操纵它的一个节点(程序)。

3.1.1 运行roscore

  ROS所有的程序运行之前都必须启动roscore

roscore

3.1.2 运行turtlesim功能包的turtlesim_node

打开终端运行以下命令

rosrun turtlesim turtlesim_node

3.1.3 运行turtlesim功能包的turtle_teleop_key

  打开一个新的终端窗口并执行以下命令。将显示下面消息,并执行turtlesim功能包中的turtle_teleop_key。如果您按下该终端窗口上的方向键(←,→,↑,↓),将看到乌龟按照方向键移动,这看似只是一个简单的仿真,但实体机器人也可以通过这种方式进行远程控制。

rosrun turtlesim turtle_teleop_key

3.1.4 运行rqt_graph

  在终端中执行以下命令

rqt_graph


  rqt_graph节点以GUI形式显示关于当前正在运行的节点的信息。从图可以看到,箭头从/teleop_turtle节点开始,通往/turtlesim。这表示两个节点正在运行并且这两个节点之间正在发生消息通信。并且/turtle1/cmd_velturtle1话题的子话题,是两个节点之间的话题的名称,意味着在teleop_turtle节点中通过键盘输进来的速度命令通过话题将消息发送给turtlesim。换句话说,使用先前执行的两个节点,将键盘命令传送到机器人仿真器。

3.2 ROS重要概念

  在进行ROS的开发之前,首先需要对ROS的重要概念进行了解,其中包括:消息通信、消息文件、名称(Name)、坐标变换(TF)、客户端库、不同设备之间的通信、文件系统和构建系统(以下内容参考文献[1]中的介绍)。

3.2.1 ROS

  ROS是一个用于开发机器人应用程序的、类似操作系统的机器人软件平台。ROS提供开发机器人应用程序时所需的硬件抽象、子设备控制,以及机器人工程中广泛使用的传感、识别、绘图、运动规划等功能。此外ROS还提供进程之间的消息解析、功能包管理、库和丰富的开发及调试工具。

3.2.2 主节点

  主节点(master)负责节点到节点的连接和消息通信,类似于名称服务器(Name Server)。roscore是它的运行命令,当您运行主节点时,可以注册每个节点的名字,并根据需要获取信息。没有主节点,就不能在节点之间建立访问和消息交流(如话题和服务)。
  主节点使用XML远程过程调用(XMLRPCXML-Remote Procedure Call)与节点进行通信。XMLRPC是一种基于HTTP的协议,主节点不与连接到主节点的节点保持连接。换句话说,节点只有在需要注册自己的信息或向其他节点发送请求信息时才能访问主节点并获取信息。通常情况下,不检查彼此的连接状态。由于这些特点,ROS可用于非常大而复杂的环境。XMLRPC也非常轻便,支持多种编程语言,使其非常适合支持各种硬件和语言的ROS
  当启动ROS时,主节点将获取用户设置的ROS_MASTER_URI变量中列出的URI地址和端口。除非另外设置,默认情况下,URI地址使用当前的本地IP,端口使用11311

3.2.3 节点

  节点(node)是指在ROS中运行的最小处理器单元。可以把它看作一个可执行程序。在ROS中,建议为一个目的创建一个节点,建议设计时注重可重用性。例如,在移动机器人的情况下,为了驱动机器人,将每个程序细分化。也就是说,使用传感器驱动、传感器数据转换、障碍物判断、电机驱动、编码器输入和导航等多个细分节点。
  节点在运行的同时,向主节点注册节点的名称,并且还注册发布者(publisher)、订阅者(subscriber)、服务服务器(service server)、服务客户端(service client )的名称,且注册消息形式、URI地址和端口。基于这些信息,每个节点可以使用话题和
  服务与其他节点交换消息。节点使用XMLRPC与主站进行通信,并使用TCP/IP通信系列的XMLRPCTCPROS5进行节点之间的通信。节点之间的连接请求和响应使用XMLRPC,而消息通信使用TCPROS,因为它是节点和节点之间的直接通信,与主节点无关。URI地址和端口则使用存储于运行当前节点的计算机上的名为ROS_HOSTNAME的环境变量作为URI地址,并将端口设置为任意的固有值。

3.2.4 功能包

  功能包(package)是构成ROS的基本单元。ROS应用程序是以功能包为单位开发的。功能包包括至少一个以上的节点或拥有用于运行其他功能包的节点的配置文件。它还包含功能包所需的所有文件,如用于运行各种进程的ROS依赖库、数据集和配置文件等。目前注册为官方功能包的数量以2017年7月为准为:ROS Indigo多达约2500个(http://repositories.ros.org/status_page/ ros_indigo_default.html),ROS Kinetic多达约1600个(http://repositories.ros.org/status_page/ros_kinetic_default.html)。
  除此之外,用户们开发并共享的功能包虽然会有一些重复,但也有约4600个(http://rosindex.github.io/stats/)。

3.2.5 消息

  节点之间通过消息(message)来发送和接收数据。消息是诸如integerfloatingpointboolean等类型的变量。用户还可以使用诸如消息里包括消息的简单数据结构或列举消息的消息数组的结构。使用消息的通信方法包括TCPROSUDPROS等,根据情况使用单向消息发送/接收方式的话题(topic)和双向消息请求(request)/响应(response)方式的服务(service)。

3.2.6 话题

  话题(topic)就是“故事”。在发布者(publisher)节点关于故事向主节点注册之后,它以消息形式发布关于该故事的广告。希望接收该故事的订阅者(subscriber)节点获得在主节点中以这个话题注册的那个发布者节点的信息。基于这个信息,订阅者节点直接连接到发布者节点,用话题发送和接收消息。

3.2.7 发布与发布者

  发布(publish)是指以与话题的内容对应的消息的形式发送数据。为了执行发布,发布者(publisher)节点在主节点上注册自己的话题等多种信息,并向希望订阅的订阅者节点发送消息。发布者在节点中声明自己是执行发布的个体。单个节点可以成为多个发布者。

3.2.8 订阅与订阅者

  订阅是指以与话题内容对应的消息的形式接收数据。为了执行订阅,订阅者节点在主节点上注册自己的话题等多种信息,并从主节点接收那些发布此节点要订阅的话题的发布者节点的信息。基于这个信息,订阅者节点直接联系发布者节点来接收消息。订阅者在节点中声明自己执行订阅的个体。单个节点可以成为多个订阅者。
  发布和订阅概念中的话题是异步的,这是一种根据需要发送和接收数据的好方法。另外,由于它通过一次的连接,发送和接收连续的消息,所以它经常被用于必须连续发送消息的传感器数据。然而,在某些情况下,需要一种共同使用请求和响应的同步消息交换方案。因此,ROS提供叫做服务(service)的消息同步方法。服务分为响应请求的服务服务器和请求后接收响应的服务客户端。与话题不同,服务是一次性的消息通信。当服务的请求和响应完成时,两个节点的连接被断开。

3.3 ROS消息通信

3.3.1 话题(topic)

3.3.2 服务(service)

3.3.3 动作(action)

3.3.4 参数(parameter)

参考文献

【1】 ROS_Robot_Programming_CN.pdf

蓝桥ros机器人系统更新和功能包安装记录(代码片段)

直接系统更新会有错误:☞ROS域名解析问题记录(蓝桥云课ros.asc)sudoaptupdate  使用ros.asc如下:-----BEGINPGPPUBLICKEYBLOCK-----Version:GnuPGv1mQINBFzvJpYBEADY8l1YvO7iYW5gUESyzsTGnMvVUmlV3XarBaJz9bGRmgPXh7 查看详情

zynq7020开发记录(持续更新)--spi编译配置和使用(代码片段)

...将近两年了,现在是时候需要总结并分享出来,希望用来开发的朋友之间相互学习、相互交流。首先,我需要说明以下几点:1.本人QQ:413069822.有急切问题可以直接QQ沟通。2.我是做ARM端开发的,因此下面关于7020的所有内容也基本... 查看详情

操作系统(windows+ubuntu)常用操作和错误处理记录(持续更新……)(代码片段)

文章目录Windows篇更改桌面存储路径还原时出现“D:\\systemvolumeinformation”的解决办法解决双系统重装win之后,进不了Linux系统yoga14s虚拟机蓝屏,无法打开内核设备“\\\\.\\VMCIDev\\VMX”:系统找不到指定的文件。你想要在安装VM... 查看详情

操作系统(windows+ubuntu)常用操作和错误处理记录(持续更新……)(代码片段)

文章目录Windows篇更改桌面存储路径还原时出现“D:\\systemvolumeinformation”的解决办法解决双系统重装win之后,进不了Linux系统yoga14s虚拟机蓝屏,无法打开内核设备“\\\\.\\VMCIDev\\VMX”:系统找不到指定的文件。你想要在安装VM... 查看详情

linux学习虚拟机vmware安装ros一条龙教程+部分报错解决(代码片段)

...s.list第三步:设置密钥第四步:正式安装ROS1.更新Ubuntu功能包列表2.安装ROSKinect3.查看包第五步:配置ROS到系统1.初始化rosdep2.更新rosdep 报错解决1第六步:测试(键控小海龟移动)1.输入第一行指令  报错解决22.输入... 查看详情

1.认识ros

...装。1.按照官网步骤安装:http://wiki.ros.org/kinetic/Installation/Ubuntu;2.参考一下步骤:将ubuntu的源设置为其自带的主服务器的源,并且将"restricted""universe"和"multiverse"都选上。可能存在改完源仍更新不成功的情况,需... 查看详情

3_ros学习

...装步骤一、安装操作系统该工程使用的系统和ROS版本为:Ubuntu16.04+KineticUnbutun16.04下载链接:http://www.ubuntu.org.cn/download/desktop二、安装ROS1、修改Ubutnu软件源 2、安装Kinetic版本的ROS(1)打开终端添加安装源:$sudosh-c‘./etc/lsb-rele... 查看详情

记录学习appium踩过的一些坑(持续更新)

1.用模拟器调试脚本无任何问题,一连上真机就只是打开了APP,编译器也没报任何错误我用的小米手机解决方法:将 USB调试(安全设置)打开。就相当于打开了 模拟点击一个操作这是真的和手机型号有关,小米和vivo有那么... 查看详情

ros学习笔记之——mac安装ubuntu虚拟机

可能是本人的macbookpro比较新(macOS11BigSur),需要用12才可以,下载链接:​​​​​​https://customerconnect.vmware.com/cn/downloads/details?downloadGroup=FUS-1212&productId=1040& 查看详情

树莓派4b+ubuntu22.04server安装ros2humble(代码片段)

树莓派4B+Ubuntu22.04Server安装ROS2Humble一、学习目标二、ROS介绍1、ROS能做啥2、ROS2版本三、准备工作四、安装ROS2五、运行示例扩展知识一、学习目标通过本章学习,了解ROS2相关版本,能够熟练掌握ROS2安装相关操作,... 查看详情

优秀博客随笔收录(持续更新...)

...GitHub上搭建个人博客的同学可以看看)(3)VmwareServer2.0.2安装图文解说(比较详细)(PS:初步学习如何安装Linux虚拟机的同学可以看看) 待续...  查看详情

linux开发工具配置(持续学习更新ing……)

...用户级别:source/.bash_profile系统级别:source/etc/profile3.编译并安装工具的源码①wgeturl//使用wget下载文件②tar解压文件③cd进入加压后的根目录运行./configure--prefix=/安装位置④make&&makeinstall二、Nodejs安装步骤1.直接下载的二进制文... 查看详情

第11章—常用注解(持续更新中)

...springboot,把熟悉的注解总结一下,这样可以方便查阅、开发。部分参考网友总结的,带*号的注解作用不太确定。(根据首字母顺序排列)&nbs 查看详情

ros1noetic在win11中安装记录(代码片段)

...,几乎主流版本的ROS全部可以用,还能用WSL使用Ubuntu下原生ROS,非常方便。在Windows系统安装ROS机器人操作系统(2020年10月25日更新)_zhangrelay的博客-CSDN博客_windows安装ros*************** 查看详情

abb之ros功能更新2021

...strial/abb_robot_driver:ThenewROSdriverforABBrobots(github.com)同步支持Ubuntu和Win 查看详情

linux开发工具使用(持续学习更新ing……)

一、Nginx的使用1.启动nginx1$nginx-c/自定义位置/nginx.conf2.停止nginx$nginx-sstop3.重启nginx$nginx-sreload二、vi/vim的使用$?<string>-搜索指定字符串 查看详情

ros实验笔记之——px4仿真

...本的学习,并且在mac上搭建了px4开发环境。本博文在ubuntu下对PX4进行一些基本的仿真学习~之前在做无人机仿真开发时《ROS实验笔记之——基于Prometheus自主无人机开源项目的学习与仿真》,已经安装了px4了~为此... 查看详情

robotoperatingsystem(ros)学习笔记4---语音控制

搭建环境:XMWare Ubuntu14.04 ROS(indigo)转载自古月居 转载连接:http://www.guyuehome.com/260一、语音识别包1、安装        安装很简单,直接使用ubuntu命令即可,首先安装依赖库:1$sudoapt-getinstall... 查看详情