ROS移动机器人——ROS基础知识与编程

news2024/11/15 12:19:05

此文章基于冰达机器人进行笔记整理,使用的环境为其配套环境,可结合之前的ROS,赵虚左老师的文章结合进行观看,后期也会进行整合

1. ROS安装

(1)配置ubuntu的软件和更新,允许安装不经认证的软件。

首先打开“软件和更新”对话框,具体可以在 Ubuntu 搜索按钮中搜索,确保勾选了"restricted", "universe," 和 "multiverse."

(2)设置安装源

来自国内中科大的安装源

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

(3)设置key

sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

(4)安装

首先需要更新 apt(以前是 apt-get, 官方建议使用 apt 而非 apt-get),apt 是用于从互联网仓库搜索、安装、升级、卸载软件或操作系统的工具。

sudo apt update

然后,再安装所需类型的 ROS:ROS 多个类型:Desktop-FullDesktopROS-Base。这里介绍较为常用的Desktop-Full(官方推荐)安装: ROS, rqt, rviz, robot-generic libraries, 2D/3D simulators, navigation and 2D/3D perception

sudo apt install ros-melodic-desktop-full

(5)配置环境变量

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

(6)安装依赖

依赖相关工具

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

安装rosdep

sudo apt install python-rosdep

初始化rosdep

sudo rosdep init
rosdep update

(7) sudo rosdep init初始化失败的解决办法

 2. ROS通信结构

ROS的通信结构是在OS层之上,通过TCP/IP协议协议实现

节点NODE与主节点Master

 master:相当于管理中心,node也需要现在master进行注册,node的通信也是由master进行引线,才能进行通信,一个ros计算图里只能有一个master。

节点:一个可执行程序进程,通常一个node负责机器人的一个功能,也可以通过同一局域网作用与不同的机器人

(2)四种通信方式

 (3)话题与服务

 

(4)动作

· goal - 用于向服务器发送目标

· cancel - 用于向服务器发送取消请求

· status - 用于通知客户端系统中每个目标的2当前状态

· feedback - 用于周期反馈目标的辅助信息

· rssult - 用于向client发送任务的执行结果,这个topic指挥发送一次

 

 (5)参数服务器

 并非是一个node,运行在master中,节点储存参数的地方

常用的shell命令

一图流:

 

(1)第一个要用的指令为:roscd

可以跳转的指定目录,但不同的是,这后面要跟指定的功能包名

我们可以直接跳转的指定的功能包内

(2)roscore

启动ros的功能,启动master管理器,必要输出文件,参数管理器

(3)rosrun

运行功能包,至少是带两个名字

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/176654.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JS手动触发PWA安装窗口

✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。 🍎个人主页:小嗷犬的博客 🍊个人信条:为天地立心,为生民立命,为往圣继绝学,…

仿写Dubbo-初识Dubbo

概念 Dubbo 在Dubbo官网介绍到,Apache Dubbo 是一款 RPC 服务开发框架,用于解决微服务架构下的服务治理与通信问题。 RPC RPC(Remote Procedure Call)远程过程调用协议,一种通过网络从远程计算机上请求服务&#xff0c…

【Android】手机安装Termux运行nodejs学习Javascript编程入门

Termux 是运行在Android手机上的一个 Linux 终端模拟器,干什么都要输入命令执行,不像 Windows 操作系统桌面用鼠标点点点,这里主要介绍用它来学习Javascript编程入门,当然,这和小时候学过的C语言编程课入门一样的&…

C语言之程序设计概述

1.1.1 程序的概念 程序:算法 数据结构 程序设计方法 语言工具和环境数据结构:数据的类型和数据的组织方式算法:对数据操作的方法和步骤 1.1.2 程序设计语言的种类 第一代语言(机器语言):执行效率高、…

【Leetcode每日一题】35.搜素插入位置|二分查找数组下标

🌱博主简介:大一计科生,努力学习Java中!热爱写博客~预备程序媛 📜所属专栏:LeetCode每日一题–进击大厂 ✈往期博文回顾: 【JavaSE】保姆级教程|1万字10张图学会类与对象–建议收藏 🕵️‍♂️近期目标&…

【题解】2023牛客寒假算法基础集训营2

目录A. Tokitsukaze and abn (easy)思路B. Tokitsukaze and abn (medium)思路Tokitsukaze and abn (hard)思路D. Tokitsukaze and Energy Tree思路bfsdfsE. Tokitsukaze and Energy Tree思维F. Tokitsukaze and Gold Coins (easy)思路G. Tokitsukaze and Gold Coins (hard)H. T…

高效团队的gitlab flow最佳实践

当前git是大部分开发团队的首选版本管理工具,一个好的流程规范可以让大家有效地合作,像流水线一样有条不紊地进行团队协作。 业界包含三种flow: Git flowGithub flowGitlab flow 下面我们先来分析,然后再基于gitlab flow来设计一…

19、Javaweb案例-登录功能

项目导入 选择travel项目的pom.xml文件,点击ok,完成项目导入。需要等待一小会,项目初始化完成。 启动项目 方式一: 方式二:配置maven快捷启动 技术选型 Web层 Servlet:前端控制器html:视图Fi…

【c语言】数据结构-顺序表

主页:114514的代码大冒险 qq:2188956112(欢迎小伙伴呀hi✿(。◕ᴗ◕。)✿ ) Gitee:庄嘉豪 (zhuang-jiahaoxxx) - Gitee.com 文章目录 目录 文章目录 前言 一、顺序表是什么? 二、项目功能的逐一实现(基本&a…

Python-Flask-2023.1.22

1、WSGIweb server gateway interface一个框架定义的简单通用的接口Web服务器网关接口(Python Web Server Gateway Interface,缩写为WSGI)是为Python语言定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口。flask框架内有默认的…

手写vue及源码解析一 rollup环境的搭建

开篇 都手写源码了,那就顺便分析一下源码吧。 rollup环境的搭建 作为了解就行。需要使用rollup来编译我们自己手写的vue代码。 需要安装rollup,rollup的babel插件,以及babel核心和babel预设(可以理解为初始化模板)。 mkdir vu…

Java变量定义时候的注意事项

常量定义的基本注意事项 在JAVA语言中,主要利用final关键字,(在Java类中灵活使用static关键字)来定义常量。 当常量被设定后,一般情况下就不允许在进行更改了,如可以利用以下的形式来定义常量:…

仿写Dubbo-Java Socket

概念 socket 被翻译为“套接字”,socket是计算机之间进行通信的一种方式。通过socket可以实现端(端口)到端通信。Java的java.net包中提供了进行socket通信的类。主要使用ServerSocket和Socket类实现通信。 ServerSocket 服务端应用使用java.net.ServerSocket类来获取…

Node.js 操作MongoDB (Mongoose) 数据库

在讲Node.js通过使用mongoose模块来操作MongoDB数据库之前首先是关于MongoDB数据库的安装和MongoDB服务以及对MongoDB命令行的操作和可视化工具MongoDBCompass的一个基本使用;那么在这里已经准备好了关于MongoDB数据库的内容了: MongoDB数据库安装详细 &…

学习shell与shell编程

Linux配置文件都是以ASCII的纯文本形式存在。 为什么学习vi 1)UnixLike系统都会内置vi文本编辑器,其他的文本编辑器则不一定存在 2)许多软件的编辑接口都会主动调用vi 3)vi具有程序编辑的能力,可以主动以字体颜色辨别语法的正确性 4)程序简单&#…

06-jquery函数

2.6函数 .6.1第一组函数 1 val():操作dom函数的value值 val():没有参数,获取dom数组中第一个dom对象的value值。 val(参数):有参数,给dom数组中所有dom对象的value属性赋值。 2 text():操作标签文本内容,…

springCloud集成elk+filebeat+kafka+zipkin实现多个服务日志链路追踪聚合到es

一、目的 如今2023了,大多数javaweb架构都是springboot微服务,一个前端功能请求后台可能是多个不同的服务共同协做完成的。例如用户下单功能,js转发到后台网关gateway服务,然后到鉴权spring-sercurity服务,然后到业务…

【实操案例十一】使用try-except手动捕获异常 实例代码及运行效果图!

任务一&#xff1a; 编写程序输入学员成绩 异常捕获忘了的同学&#xff0c;可以参考这个&#xff1a;Bug的常见类型及异常处理机制 # 任务一&#xff1a; 编写程序输入学员成绩iint(input(请输入学员成绩&#xff1a;)) if 0<i<100:print(i) else:raise Exception(分数…

产品设计-基础控件-信息输入控件

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 产品设计-基础控件-信息输入控件1.1.文本框一、1.1.11.1.2、占位符文本1.1.3 输入框1.1.4 帮助文本1.1.5 初始默认值1.1.6 输入文本1.1.7 跟踪图标1.1.8 格式化标记1.2 单选按…

java枚举类2023028

一个类的对象是有限而且固定的&#xff0c;比如季节类&#xff0c; 它只有4个对象&#xff1b;再比如行星类&#xff0c;目前只有8个对象。这种实例有限而且固定的类&#xff0c;在Java里被称为枚举类。在早期代码中&#xff0c;可能会直接使用简单的静态常量来表示枚&#xff…