Ubuntu18.04下安装ROS日志及小海龟示例教程

2023-11-22 01:10

本文主要是介绍Ubuntu18.04下安装ROS日志及小海龟示例教程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


文章目录

  • 一、什么是ROS?
  • 二、ROS系统安装
  • 小海龟示例
  • 总结


一、什么是ROS?

ROS (Robot Operating System, 机器人操作系统) 提供一系列程序库和工具以帮助软件开发者创建机器人应用软件。它提供了硬件抽象、设备驱动、函数库、可视化工具、消息传递和软件包管理等诸多功能。ROS遵循BSD开源许可协议。

详细资料参考:ROSwiki

  • ROS架构设计:
    1、os层:依托linux操作系统,
    2、中间层:基于TCPROS/UDPROS的通信系统,通过发布/订阅,客户端/服务端等模式,实现多种通信机制的数据传输。 Nodelet数据传输方式 数据库。
    3、应用层:需要运行一个管理者Master,负责管理整个系统的正常运行;

从系统实现的角度来看,ROS也可以分为三个层次:文件系统,计算图和开源社区

在这里插入图片描述

二、ROS系统安装

一键安装教程:鱼香ROS

- 以下是手动安装步骤

1. 添加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. 添加密钥

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654

在这里插入图片描述

3. 安装ROS

需要根据Ubuntu的版本选择合适的ROS版本。否则会出现Unable to locate package ros-kinetic-desktop-full的错误。ROS的版本主要有Melodic(18)、Lunar(20)、Kinetic(16)版本,根据linux系统不同选择合适的版本,报错也就解决了。安装时间比较长。

sudo apt update
sudo apt-get install ros-melodic-desktop-full

安装完成截图,安装过程耗时30min
在这里插入图片描述

4. 初始化ROSdep

sudo rosdep init
rosdep update

报错信息:
在这里插入图片描述
解决办法:

sudo apt install python-rosdep

rosdep是ros的一个功能包
在这里插入图片描述
接下来更新rosdep的时候,会提示请初始化rosdep,出现报错信息:
在这里插入图片描述
解决办法:rosdep更新失败解决办法
参考以上文章,我的解决办法:

  • sudo apt install python-pip

  • pip -v

  • . sudo pip install rosdepc

在这里插入图片描述

  • sudo rosdepc init
    会有奇迹与魔法出现的哦~
    在这里插入图片描述
  • 背负着全Ubuntu的使命敲下:rosdepc update
    在这里插入图片描述

5. 设置环境变量

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

6. 安装rosinstall

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

小海龟示例

  1. 启动ROS Master
    roscore
    在这里插入图片描述
    报错:IOError: [Errno 13] Permission denied: ‘/home/ros/.ros/roscore-11311.pid’

这个问题是由于该路径下ros文件权限造成的。

输入以下命令修改权限:

sudo chmod 777 -R ~/.ros/
修改完成后再次输入roscore就ok了
在这里插入图片描述
rosmaster启动成功。

  1. 启动小海龟仿真器
    新打开一个终端,输入:
    rosrun turtlesim turtlesim_node

  2. 启动海龟控制节点
    新打开一个终端,输入:rosrun turtlesim turtle_teleop_key
    可以用键盘上的方向键控制小海龟的移动方向。
    在这里插入图片描述
    注意:如果你无法通过方向键改变小海龟的方向的话,你需要点击输入命令:rosrun turtlesim turtle_teleop_key的窗口才能唤醒小海龟,而不是点击小海龟的窗口唤醒小海龟。


总结

安装ROS的过程会产生很多与教程文章不同的问题,还好都可以根据报错信息去解决,只要静下心就可以成功。
小海龟的移动非常真实,它需要用前后键才能走动,左右键只能改变它的方向,这与平常玩的赛车游戏经验略有不同,同时也能感受它在现实移动的魅力,缺点是小海龟左右移动的偏角太大了,无法精确地控制。

参考文章:https://blog.csdn.net/qq_43279579/article/details/114291635
ROS安装与验证

这篇关于Ubuntu18.04下安装ROS日志及小海龟示例教程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/406394

相关文章

Python函数作用域示例详解

《Python函数作用域示例详解》本文介绍了Python中的LEGB作用域规则,详细解析了变量查找的四个层级,通过具体代码示例,展示了各层级的变量访问规则和特性,对python函数作用域相关知识感兴趣... 目录一、LEGB 规则二、作用域实例2.1 局部作用域(Local)2.2 闭包作用域(Enclos

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.

解读GC日志中的各项指标用法

《解读GC日志中的各项指标用法》:本文主要介绍GC日志中的各项指标用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、基础 GC 日志格式(以 G1 为例)1. Minor GC 日志2. Full GC 日志二、关键指标解析1. GC 类型与触发原因2. 堆

Python中win32包的安装及常见用途介绍

《Python中win32包的安装及常见用途介绍》在Windows环境下,PythonWin32模块通常随Python安装包一起安装,:本文主要介绍Python中win32包的安装及常见用途的相关... 目录前言主要组件安装方法常见用途1. 操作Windows注册表2. 操作Windows服务3. 窗口操作

C++20管道运算符的实现示例

《C++20管道运算符的实现示例》本文简要介绍C++20管道运算符的使用与实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录标准库的管道运算符使用自己实现类似的管道运算符我们不打算介绍太多,因为它实际属于c++20最为重要的

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

ModelMapper基本使用和常见场景示例详解

《ModelMapper基本使用和常见场景示例详解》ModelMapper是Java对象映射库,支持自动映射、自定义规则、集合转换及高级配置(如匹配策略、转换器),可集成SpringBoot,减少样板... 目录1. 添加依赖2. 基本用法示例:简单对象映射3. 自定义映射规则4. 集合映射5. 高级配置匹

C++11作用域枚举(Scoped Enums)的实现示例

《C++11作用域枚举(ScopedEnums)的实现示例》枚举类型是一种非常实用的工具,C++11标准引入了作用域枚举,也称为强类型枚举,本文主要介绍了C++11作用域枚举(ScopedEnums... 目录一、引言二、传统枚举类型的局限性2.1 命名空间污染2.2 整型提升问题2.3 类型转换问题三、C

深度解析Spring AOP @Aspect 原理、实战与最佳实践教程

《深度解析SpringAOP@Aspect原理、实战与最佳实践教程》文章系统讲解了SpringAOP核心概念、实现方式及原理,涵盖横切关注点分离、代理机制(JDK/CGLIB)、切入点类型、性能... 目录1. @ASPect 核心概念1.1 AOP 编程范式1.2 @Aspect 关键特性2. 完整代码实

Java实现自定义table宽高的示例代码

《Java实现自定义table宽高的示例代码》在桌面应用、管理系统乃至报表工具中,表格(JTable)作为最常用的数据展示组件,不仅承载对数据的增删改查,还需要配合布局与视觉需求,而JavaSwing... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码