当前位置: 首页 > news >正文

ROS机器人入门

http://www.autolabor.com.cn/book/ROSTutorials/

1、ROS简介

        ROS 是一个适用于机器人的开源的元操作系统。其实它并不是一个真正的操作系统,其
底层的任务调度、编译、寻址等任务还是由 Linux 操作系统完成,也就是说 ROS 实际上是运
行在 Linux 上的次级操作系统。但是 ROS 提供了操作系统应用的各种服务(如:硬件抽象、
底层设备控制、常用函数实现、进程间消息传递、软件包管理等),也提供了用于获取、编
译、跨平台运行代码的工具和函数。 ROS 主要采用松耦合点对点进程网络通信,目前主要还
是支持 Ubuntu 系统, windows 和 Mac OS 目前支持的还不好,所以推荐在 Ubuntu 系统上安
装使用 ROS。

        ROS是一套机器人通用软件框架,可以提升功能模块的复用性。

设计思想、核心概念、核心模块、核心工具:

        ROS 的设计思路主要是分布式架构,将机器人的功能和软件做成一个个节点,然后每个
节点通过 topic 进行沟通,这些节点可以部署在同一台机器上,也可以部署在不同机器上,
还可以部署在互联网上。
        ROS 的核心概念主要是节点和用于节点间通信的话题与服务。管理器 Master 管理节点
与话题之间通信的过程,并且还提供一个参数服务用于全局参数的配置。 ROS 通过功能包集
stack 和功能包 package 来组织代码。
        ROS 的核心模块包括:通信结构基础、机器人特性功能、工具集。通信结构基础主要是
消息传递、记录回放消息、远程过程调用、分布式参数系统;机器人特性功能主要是标准机
器人消息、机器人几何库、机器人描述语言、抢占式远程过程调用、诊断、位置估计、定位
导航;工具集主要是命令式工具、可视化工具、图形化接口。
      ROS 核心工具很丰富, ROS 常用命令工具是 rostopic、 rosservice、 rosnode、 rosparam、
rosmsg、 rossrv、 roswtf; ROS 常用可视化工具是 rqt、 rviz; ROS 用于存储与回放数据的
工具 rosbag; ROS 的 log 系统记录软件运行的相关信息; ROS 还拥有强大的第三方工具支持:
三维仿真环境 Gazebo、计算机视觉库 OpenCV、点云库 PCL、机械臂控制库 MoveIt、工业应
用库 Industrial、机器人编程工具箱 MRPT、实时控制库 Orocos。

ROS可以通过自身携带的主板汇总信息给远程PC,由远程PC担任数据处理任务,最后返回结果给主板处理;

ROS设计目标:

        代码复用:支持机器人技术研发中的代码重用
        分布式:ROS是进程的分布式框架,ROS中的进程可分布于不同的主机,不同主机协同工作,从而分散计算压力。

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

        精简:为ROS编写的代码可以与其他机器人软件框架一起使用,ROS易于与其他机器人软件框架集成:ROS已与OpenRAVE,Orocos和Player集成
        语言独立性:java,cpp,Python等,为了支持更多的应用开发和一致,ros设计为一种语言弱相关的框架结构;允许消息接口的嵌套使用

        易于测试:ROS具有称为rostest的内置单元/集成测试框架,可以轻松安装和拆卸测试工具
        大型应用:ROS适用于大型运行时系统和大型开发流程
        丰富的组件化工具包:ROS可采用组件化方式集成一些工具和软件到系统中并作为一个组件直接使用;

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

ROS安装:详见本文头的链接;

配置ros环境变量:

echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
测试ros代码:

使用记事本编写ros程序:

创建工作空间并初始化:

mkdir   -p  名称/src

cd  名称

catkin_make

进入src创建ros包并添加依赖:

cd src
catkin_create_pkg 自定义ROS包名 roscpp rospy std_msgs

helloworld:

1\进入 ros 包添加 scripts 目录并编辑 python 文件

cd ros包
mkdir scripts
2\新建 python 文件: (文件名自定义)

#! /usr/bin/env python

"""
    Python 版 HelloWorld

"""
import rospy

if __name__ == "__main__":
    rospy.init_node("Hello")
    rospy.loginfo("Hello World!!!!")
3\为 python 文件添加可执行权限

chmod +x 自定义文件名.py
4\编辑 ros 包下的 CamkeList.txt 文件

catkin_install_python(PROGRAMS scripts/自定义文件名.py
  DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)
5\进入工作空间目录并编译

cd 自定义空间名称
catkin_make

6.进入工作空间目录并执行

先启动命令行1:

roscore

再启动命令行2:

cd 工作空间
source ./devel/setup.bash
rosrun 包名 自定义文件名.py


 

相关文章:

ROS机器人入门

http://www.autolabor.com.cn/book/ROSTutorials/ 1、ROS简介 ROS 是一个适用于机器人的开源的元操作系统。其实它并不是一个真正的操作系统,其 底层的任务调度、编译、寻址等任务还是由 Linux 操作系统完成,也就是说 ROS 实际上是运 行在 Linux 上的次级…...

30. 深度学习进阶 - 池化

Hi,你好。我是茶桁。 上一节课,我们详细的学习了卷积的原理,在这个过程中给大家讲了一个比较重要的概念,叫做input channel,和output channel。 当然现在不需要直接去实现, 卷积的原理PyTorch、或者TensorFlow什么的…...

工业应用新典范,飞凌嵌入式FET-D9360-C核心板发布!

来源:飞凌嵌入式官网 当前新一轮科技革命和产业变革突飞猛进,工业领域对高性能、高可靠性、高稳定性的计算需求也在日益增长。为了更好地满足这一需求,飞凌嵌入式与芯驰科技(SemiDrive)强强联合,基于芯驰D9…...

Webrtc 学习交流

花了几周的时间研究了一下webrtc ,并开发了一个小项目,用来点对点私密聊天 交流传输文件等…后续会继续扩展其功能。 体验地址,大狗子的ID,我在线时可以连接测试到我 f3e0d6d0-cfd7-44a4-b333-e82c821cd927 项目特点 除了交换信令与stun 没…...

华为云之轻松搭建 Nginx 静态网站

华为云之轻松搭建 Nginx 静态网站 一、本次实践介绍1. 本次实践目的2. 本次实践环境 二、ECS弹性云服务器介绍三、准备实践环境1. 预置环境2. 查看ECS服务器的账号密码信息3. 登录华为云4. 远程登录ECS服务器 四、安装配置 Nginx1. 安装nginx2. 启动nginx3. 浏览器中访问nginx服…...

【pytorch】图像运行过程中,保证梯度情况下变换

部分操作是危险的,会中断梯度流。 self.patch_transformer(adv_patch, lab_batch, img_size, do_rotateTrue, rand_locFalse)p_img_batch self.patch_applier(img_batch, adv_batch_t) # torch.Size([56, 3, 329, 416])可行危险操作 torch.clamp(adv_batch, 0…...

学习Java第70天,过滤器Filter简介

过滤器概述 Filter,即过滤器,是JAVAEE技术规范之一,作用目标资源的请求进行过滤的一套技术规范,是Java Web项目中最为实用的技术之一 Filter接口定义了过滤器的开发规范,所有的过滤器都要实现该接口 Filter的工作位置是项目中所有目标资源之前,容器在创建HttpServletRequest和…...

Ubuntu Desktop 22.04 设置 ssh 超时时间

Ubuntu Desktop 22.04 使用 ssh 连接服务器时,发现一段时间不操作就会自动断开连接,解决方法如下: 打开 /etc/ssh/ssh_config 文件: sudo vim /etc/ssh/ssh_config在文件最后添加: # ssh 客户端会每隔 30 秒发送一个…...

【微服务】Spring Aop原理深入解析

目录 一、前言 二、aop概述 2.1 什么是AOP 2.2 AOP中的一些概念 2.2.1 aop通知类型 2.3 AOP实现原理 2.3.1 aop中的代理实现 2.4 静态代理与动态代理 2.4.1 静态代理实现 三、 jdk动态代理与cglib代理 3.1 jdk动态代理 3.1.1 jdk代理示例 3.1.2 jdk动态代理模拟实现…...

Spring Boot JSON中文文档

本文为官方文档直译版本。原文链接 Spring Boot JSON中文文档 引言Jackson自定义序列化器和反序列化器混入 GsonJSON-B 引言 Spring Boot 提供与三个 JSON 映射库的集成: GsonJacksonJSON-B Jackson 是首选的默认库。 Jackson Spring-boot-starter-json 提供了…...

Flink系列之:State Time-To-Live (TTL)

Flink系列之:State Time-To-Live TTL 一、TTL二、TTL实现代码三、过期状态的清理 一、TTL Flink的TTL(Time-To-Live)是一种数据过期策略,用于指定数据在流处理中的存活时间。TTL可以应用于Flink中的状态或事件时间窗口&#xff0…...

数据结构(Chapter Two -01)—线性表及顺序表

2.1 线性表 线性表是具有相同数据类型的n个数据元素的有限序列。第一个元素为表头元素,最后一个元素为表尾元素。除第一个元素,每个元素有且仅有一个直接前驱。除最后一个元素,每个元素都仅有一个直接后继。 其中线性表包括以下(…...

【刷题笔记1】

笔记1 string s;while(cin>>s);cout<<s.length()<<endl;输入为hello nowcoder时&#xff0c;输出为8 &#xff08;nowcoder的长度&#xff09; 2.字符串的输入(有空格) string a;getline(cin, a);cout<<a<<endl;输入为ABCabc a 输出为ABCabc a …...

视频数据卡设计方案:120-基于PCIe的视频数据卡

一、产品概述 基于PCIe的一款视频数据收发卡&#xff0c;并通过PCIe传输到存储计算服务器&#xff0c;实现信号的采集、分析、模拟输出&#xff0c;存储。 产品固化FPGA逻辑&#xff0c;实现PCIe的连续采集&#xff0c;单次采集容量2GB&#xff0c;开源的PCIe QT客…...

Windows使用VNC Viewer远程桌面Ubuntu【内网穿透】

文章目录 前言1. ubuntu安装VNC2. 设置vnc开机启动3. windows 安装VNC viewer连接工具4. 内网穿透4.1 安装cpolar【支持使用一键脚本命令安装】4.2 创建隧道映射4.3 测试公网远程访问 5. 配置固定TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址5.3 测试…...

javascript 数组处理的两个利器: `forEach` 和 `map`(上)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…...

【C语言】SCU安全项目1-FindKeys

目录 前言 命令行参数 16进制转字符串 extract_message1 process_keys12 extract_message2 main process_keys34 前言 因为这个学期基本都在搞CTF的web方向&#xff0c;C语言不免荒废。所幸还会一点指针相关的知识&#xff0c;故第一个安全项目做的挺顺利的&#xff0c…...

IDA pro软件 如何修改.exe小程序打开对话框显示的文字?

环境: Win10 专业版 IDA pro Version 7.5.201028 .exe小程序 问题描述: IDA pro软件 如何修改.exe小程序打开对话框显示的文字? 解决方案: 一、在IDA Python脚本中编写代码来修改.rdata段中的静态字符串可以使用以下示例代码作为起点(未成功) import idc# 定义要修…...

Ubuntu22.04切换用户

一、只有一个用户时没有切换用户菜单项 1、用户信息 cat /etc/passwd 2、系统菜单 二、添加用户 添加新用户ym&#xff0c;全名yang mi 三、有两个及以上的用户时出现切换用户菜单项 1、用户信息 cat /etc/passwd 2、系统菜单 四、切换用户 1、点击上图中Switch User …...

torch.gather(...)

1. Abstract 对于 pytorch 中的函数 torch.gather(input, # (Tensor) the source tensordim, # (int) the axis along which to indexindex, # (LongTensor) the indices of elements to gather*,sparse_gradFalse,outNone ) → Tensor有点绕&#xff0c;很多博客画各…...

vscode如何开发微信小程序?JS与TS的主要区别?

要在 VS Code 中编写微信小程序代码并同步到 Git&#xff0c;需要安装以下插件&#xff1a; 1. 微信小程序插件&#xff08;WeChat Mini Program&#xff09;&#xff1a;此插件提供了微信小程序的语法高亮、代码提示、调试、上传等功能。 2. Git 插件&#xff08;GitLens、…...

产品入门第五讲:Axure交互和情境

目录 一.Axure交互和情境的介绍 1.交互介绍 概念 常见的Axure交互设计技巧 2.情境介绍 概念 常见的Axure情境设计技巧&#xff1a; 二.实例展示 1.ERP登录页到主页的跳转 2.ERP的菜单跳转到各个页面 &#x1f4da;&#x1f4da; &#x1f3c5;我是默&#xff0c;一个…...

Python 自动化之收发邮件(一)

imapclient / smtplib 收发邮件 文章目录 imapclient / smtplib 收发邮件前言一、基本内容二、发送邮件1.整体代码 三、获取邮件1.整体代码 总结 前言 简单给大家写个如何用Python进行发邮件和查看邮件教程&#xff0c;希望对各位有所帮助。 一、基本内容 本文主要分为两部分…...

Flutter开发笔记 —— sqflite插件数据库应用

前言 今天在观阅掘金大佬文章的时候&#xff0c;了解到了该 sqflite 插件&#xff0c;结合官网教程和自己实践&#xff0c;由此总结出该文&#xff0c;希望对大家的学习有帮助&#xff01; 插件详情 Flutter的 SQLite 插件。支持 iOS、Android 和 MacOS。 支持事务和batch模式…...

OxLint 发布了,Eslint 何去何从?

由于最近的rust在前端领域的崛起&#xff0c;基于rust的前端生态链遭到rust底层重构&#xff0c;最近又爆出OxLint&#xff0c;是一款基于Rust的linter工具Oxlint在国外前端圈引起热烈讨论&#xff0c;很多大佬给出了高度评价&#xff1b;你或许不知道OxLint&#xff0c;相比ES…...

第一次使用ThreadPoolExecutor处理业务

通过对业务逻辑的分析&#xff0c;进行编码&#xff0c;先把第一条sql查出来的数据进行分组&#xff0c;然后分别使用不同的线程去查询数据返回&#xff0c;并添加到原来的数据中。 总感觉哪里写的不对&#xff0c;但是同事们都没用过这个&#xff0c;请大家指教一下&#xff…...

Sharding-Jdbc(6):Sharding-Jdbc日志分析

1 修改配置 将配置文件中的开启分片日志从false改为true Sharding-JDBC中的路由结果是通过分片字段和分片方法来确定的,如果查询条件中有 id 字段的情况还好&#xff0c;查询将会落到某个具体的分片&#xff1b;如果查询没有分片的字段&#xff0c;会向所有的db或者是表都会查…...

centos安装了curl却报 -bash: curl: command not found

前因 我服务器上想用curl下载docker-compress&#xff0c;发现没有curl命令&#xff0c;就去下载安装&#xff0c;安装完成之后&#xff0c;报-bash: curl: command not found 解决方法 [rootcentos ~]# rpm -e --nodeps curl warning: file /usr/bin/curl: remove failed: …...

Re58:读论文 REALM: Retrieval-Augmented Language Model Pre-Training

诸神缄默不语-个人CSDN博文目录 诸神缄默不语的论文阅读笔记和分类 论文名称&#xff1a;REALM: Retrieval-Augmented Language Model Pre-Training 模型名称&#xff1a;Retrieval-Augmented Language Model pre-training (REALM) 本文是2020年ICML论文&#xff0c;作者来自…...

java的json解析

import com.alibaba.fastjson.*; public class JsonParser { public static void main(String[] args) { String jsonStr "{\"name\":\"John\", \"age\":30}"; // JSON字符串示例 // 将JSON字符串转换为JSONObject对象 JSONObje…...

网站建设地域名/网店seo排名优化

手头上的机台服务器都装上了BlackICE,这个应该算是防火墙中的元老级软件了&#xff0c;虽然win自带的防火墙也是可以用&#xff0c;不过功能上毕竟跟专业的是没法比&#xff0c;可是就是有一台装不上&#xff0c;一装就蓝屏&#xff0c;不装心里其实还是有点虚&#xff0c;网上…...

网络安全等级保护/seo咨询解决方案

TCP服务端支持并发 解决方式&#xff1a;开多线程 服务端 基础版 import socket """ 服务端1.要有固定的IP和PORT2.24小时不间断提供服务3.能够支持并发 """server socket.socket() server.bind((127.0.0.1,8080)) server.listen(5)def talk(co…...

做网站需要哪些流程/第三方网络营销平台有哪些

点击上方“蓝色字”可关注我们&#xff01;暴走时评&#xff1a;电信巨头NTT公司的泰国子公司计划推出一个专注于区块链&#xff0c;人工智能和物联网技术的大型创新实验室。NTT Communications&#xff08;NTT Com&#xff09;是NTT Com Group在泰国本地的运营部门&#xff0c…...

有什么网站做的比较高大上/网址大全导航

http://blog.csdn.net/ivy_feifei/article/details/41543051...

基金会网站建设/找合作项目app平台

对象&#xff1a;物理对象&#xff0c;角色&#xff0c;事件&#xff0c;交互&#xff0c;规格说明(程序中) 封装&#xff1a;为了信息的私密性(黑箱&#xff0c;只能用接口访问) 继承&#xff1a;为了重用 多态&#xff1a;根据请求时的行为判断 ----------------------------…...

北洼路网站建设/江苏seo团队

很早就知道可以用.NET为SQL Server2005及以上版本编写存储过程、触发器和存储过程的&#xff0c;不过之前开发的系统要么因为历史原因用的是SQL2000要么根本用不着在SQL Server中启用CLR&#xff0c;所以一直没有尝试。最近因为项目的原因&#xff0c;在这方面做了一个调研&…...