草庐IT

【ROS机器人入门】1.1 ROS概念及环境配置

LenckCuak 2023-05-27 原文

文章目录


ROS=Plumbing+Tools+Capabilities+Ecosystem

ROS设计目标

代码复用:ROS的目标不是成为具有最多功能的框架,ROS的主要目标是支持机器人技术研发中的代码 重用。

分布式:ROS是进程(也称为Nodes)的分布式框架,ROS中的进程可分布于不同主机,不同主机协同工 作,从而分散计算压力 。

松耦合:ROS中功能模块封装于独立的功能包或元功能包,便于分享,功能包内的模块以节点为单位运 行,以ROS标准的IO作为接口,开发者不需要关注模块内部实现,只要了解接口规则就能实现复用,实现 了模块间点对点的松耦合连接 。

精简:ROS被设计为尽可能精简,以便为ROS编写的代码可以与其他机器人软件框架一起使用。ROS易 于与其他机器人软件框架集成: ROS已与OpenRAVE, Orocos和Player集成。

语言独立性:包括Java, C++, Python等。为了支持更多应用开发和移植,ROS设计为一种语言弱相关 的框架结构,使用简洁,中立的定义语言描述模块间的消息接口,在编译中再产生所使用语言的目标文 件,为消息交互提供支持,同时允许消息接口的嵌套使用 。

易于测试:ROS具有称为rostest的内置单元/集成测试框架,可轻松安装和拆卸测试工具。

大型应用: ROS适用于大型运行时系统和大型开发流程。

丰富的组件化工具包:可采用组件化方式集成工具和软件到系统中作为一个组件直接使用。如RVIZ (3D可视化工具),开发者根据ROS定义的接口在其中显示机器人模型等,组件还包括仿真环 境和消息查看工具等 。

免费且开源:开发者众多,功能包多

系统要求

系统:ubuntu 20.04

本人原本使用的是ubuntu22,但似乎新版本不稳定,在vm上经常宕机

ROS1 版本:ROS Noetic
Noetic(2020发布)支持python 3
Noetic之前支持python 2

配置步骤

首先在软件和更新处,勾选下面

1. 设置安装源

如果是国内用户,建议使用镜像源,这样可以保证后续的下载速度。

	sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'

2. 设置ROS软件Key

如果还没安装curl的话,执行下面语句

	sudo apt install curl

安装curl命令,如果你的ubuntu安装很慢,那你可能需要在ubuntu软件与更新中设置国内镜像,选择阿里、腾讯或者中科大其中一个作为你的镜像。

继续输入:

curl -sSL 'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xC1CF6E31E6BADE8868B172B4F42ED6FBAB17C654' | sudo apt-key add -

3. 更新软件包

sudo apt-get update

4. 安装完整版ROS Noetic软件

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

5. 配置ROS环境

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

6. 安装构建依赖

sudo apt-get install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential

7.1 安装rosdep(7.1与7.2任选其一)

sudo apt install python3-rosdep

初始化rosdep

sudo rosdep init
rosdep update

但是7.1方法在rosdep初始化时,多半会抛出异常
原因是境外资源被屏蔽了

解决方法

  1. 进入资源路径中,找到
cd /usr/lib/python3/dist-packages/
find . -type f | xargs grep "raw.githubusercontent"

第一个文件:

sudo gedit ./rosdistro/__init__.py

将下面的红色框框替换成gitee.com/zhao-xuzuo/rosdistro/raw/master
替换第二个文件:

sudo gedit ./rosdep2/gbpdistro_support.py

注意下图要保留https://

第三个文件:

sudo gedit ./rosdep2/sources_list.py

第四个文件:

sudo gedit ./rosdep2/rep3.py

完成上述步骤后,就可以运行下面命令了

sudo rosdep init
rosdep update

7. 2 安装rosdepc(7.1与7.2任选其一)

这是国内大佬做的rosdep镜像,可以绕开连接不上服务器的困难过程。

sudo apt install python3-pip

在安装了pip之后,需要对其进行换源,使用国内源能够更快下载文件

mkdir ~/.pip
cd ~/.pip
touch pip.conf
sudo gedit ~/.pip/pip.conf

在弹出的文件中写入

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple/ 
[install]
trusted-host = pypi.tuna.tsinghua.edu.cn

安装rosdepc

sudo pip install rosdepc
sudo rosdepc init
rosdepc update

8. 尝试运行海龟

apt install python3-roslaunch

启动roscore

roscore 
rosrun turtlesim turtlesim_node

测试ROS

  1. 首先启动三个命令行(ctrl + alt + T)
  2. 命令行1键入:roscore
  3. 命令行2键入:rosrun turtlesim turtlesim_node(此时会弹出图形化界面)
  4. 命令行3键入:rosrun turtlesim turtle_teleop_key(在3中可以通过上下左右控制2中乌龟的运动) 最终结果如下所示:

控制海龟时,光标需要聚焦在第4步的窗口上

历史版本的安装

原因:由于nertic较之前版本变动较大,且部分功能包未更新,在后期实践阶段可能会遇到重要功能包未更新的情况,需要ros降级。

ros系统:melodic
Ubuntu 18.04

旧版本的环境配置与上文noetic的配置前5个步骤(包括第5个)大致一样,第4,5步稍微不同,这里从第4步进行讲解。

4. 安装完整版ROS melodic 软件

sudo apt install ros-melodic-desktop-full

5. 配置ROS环境

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

6. 安装构建依赖

sudo apt-get install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential
sudo apt install python-rosdep

7.初始化rosdep

sudo rosdep init
rosdep update

sudo rosdep init 可能会抛出异常
原因与noetic的7.1一样,境外资源被屏蔽了

解决方法:

  1. 将错误提示的域名进行查询:
  2. 记住中国香港这个ip : 151.101.76.133

  1. 修改/etc/hosts 文件,命令:
sudo gedit /etc/hosts

添加内容,即查询到的ip(本目录第2个步骤)与域名

151.101.76.133 raw.githubusercontent.com

  1. 重新执行下面命令
sudo rosdep init
rosdep update 

若在rosdep update抛出异常,基本是网络原因导致的,建议使用手机热点多尝试几次即可。

卸载ROS

sudo apt-get remove ros-noetic-*

参考资料

https://www.bilibili.com/video/BV1Ci4y1L7ZZ/?spm_id_from=333.337.search-card.all.click&vd_source=b914a8de9ea8b12ba5cb6d8edd1b346c

https://blog.csdn.net/liaolizhou/article/details/123615925

有关【ROS机器人入门】1.1 ROS概念及环境配置的更多相关文章

  1. ruby-on-rails - 独立 ruby​​ 脚本的配置文件 - 2

    我有一个在Linux服务器上运行的ruby​​脚本。它不使用rails或任何东西。它基本上是一个命令行ruby​​脚本,可以像这样传递参数:./ruby_script.rbarg1arg2如何将参数抽象到配置文件(例如yaml文件或其他文件)中?您能否举例说明如何做到这一点?提前谢谢你。 最佳答案 首先,您可以运行一个写入YAML配置文件的独立脚本:require"yaml"File.write("path_to_yaml_file",[arg1,arg2].to_yaml)然后,在您的应用中阅读它:require"yaml"arg

  2. Ruby Sinatra 配置用于生产和开发 - 2

    我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm

  3. ruby - 在 Windows 机器上使用 Ruby 进行开发是否会适得其反? - 2

    这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby​​-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub

  4. ruby-on-rails - 在 Rails 开发环境中为 .ogv 文件设置 Mime 类型 - 2

    我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain

  5. Vscode+Cmake配置并运行opencv环境(Windows和Ubuntu大同小异) - 2

    之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m

  6. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

  7. 神州数码无线产品(AC+AP)配置 - 2

    注意:本文主要掌握DCN自研无线产品的基本配置方法和注意事项,能够进行一般的项目实施、调试与运维AP基本配置命令AP登录用户名和密码均为:adminAP默认IP地址为:192.168.1.10AP默认情况下DHCP开启AP静态地址配置:setmanagementstatic-ip192.168.10.1AP开启/关闭DHCP功能:setmanagementdhcp-statusup/downAP设置默认网关:setstatic-ip-routegeteway192.168.10.254查看AP基本信息:getsystemgetmanagementgetmanaged-apgetrouteAP配

  8. 微信小程序开发入门与实战(Behaviors使用) - 2

    @作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors    1、什么是behaviors    2、behaviors的工作方式    3、创建behavior    4、导入并使用behavior    5、behavior中所有可用的节点    6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors    1、什么是behaviorsbehaviors是小程序中,用于实现

  9. 【Java入门】使用Java实现文件夹的遍历 - 2

    遍历文件夹我们通常是使用递归进行操作,这种方式比较简单,也比较容易理解。本文为大家介绍另一种不使用递归的方式,由于没有使用递归,只用到了循环和集合,所以效率更高一些!一、使用递归遍历文件夹整体思路1、使用File封装初始目录,2、打印这个目录3、获取这个目录下所有的子文件和子目录的数组。4、遍历这个数组,取出每个File对象4-1、如果File是否是一个文件,打印4-2、否则就是一个目录,递归调用代码实现publicclassSearchFile{publicstaticvoidmain(String[]args){//初始目录Filedir=newFile("d:/Dev");Datebeg

  10. hadoop安装之保姆级教程(二)之YARN的配置 - 2

    1.1.1 YARN的介绍 为克服Hadoop1.0中HDFS和MapReduce存在的各种问题⽽提出的,针对Hadoop1.0中的MapReduce在扩展性和多框架⽀持⽅⾯的不⾜,提出了全新的资源管理框架YARN. ApacheYARN(YetanotherResourceNegotiator的缩写)是Hadoop集群的资源管理系统,负责为计算程序提供服务器计算资源,相当于⼀个分布式的操作系统平台,⽽MapReduce等计算程序则相当于运⾏于操作系统之上的应⽤程序。 YARN被引⼊Hadoop2,最初是为了改善MapReduce的实现,但是因为具有⾜够的通⽤性,同样可以⽀持其他的分布式计算模

随机推荐