ROS机器人系统学习笔记(二)--------ROS基础操作

ROS学习4 自定义消息 一、ROS中内置的消息结构 ros为我们提供了很多消息结构;感谢博主整理了常用ROS消息类型API常用ROS消息类型API整理速查_江渚渔樵笑春风的博客-优快云博客 那我们怎么查看这个消息结构可以支持那些数据类型呢?可以使用roscd 结构名 打开消息结构所在的文件夹。 例如: 比如我们打开其中一个msg文件查看一下它的数据类型 二、自定义消息 那我们知道了如何查看ros自定义的消息了之后,那如果ros自定义的消息不能满足我们的需求,那我们该如何自己来建立自己的消息呢?答题过程概览如. 阅读详情

通过我的上一篇博客,相信大家都已经熟练掌握了ROS的安装,那么,现在我们开始详细讲述ROS如何创建一个工程,如何编译运行工程。

一、新建一个工程

使用命令进入我们上一篇新建的工作空间

cd ~/catkin_ws/
source devel/setup.bash

在当前目录下执行命令进行编译

catkin_make

我们的工程源代码在我们的src/目录下,我们如何创建一个工程呢?

首先我们要明白,我们的ROS工程是一个CMake工程,CMake工程就意味着我们要编写CMakeLists.txt文件,CMake语法我就不讲了,但在ROS中我们可以通过一个简单的命令创建我们想要的工程。

catkin_create_pkg [package name] [ package dependence, such as : std_msgs rospy roscpp ... ]

我先来简单解释一下这个命令,首先,catkin_create_pkg 是ROS内置的创建包的命令,之后加上你的包的名字,再加上你所要的依赖,如:假如你要使用C++编写代码,那么就会要加一个roscpp的依赖。

二、ROS工程结构

├─.settings
├─catkin
│  └─catkin_generated
│      └─version
├─catkin_generated
│  ├─installspace
│  └─stamps
│      └─ccc
├─CMakeFiles
│  ├─3.2.2
│  │  ├─CompilerIdC
│  │  └─CompilerIdCXX
│  ├─abc.dir
│  │  └─src
│  ├─actionlib_generate_messages_cpp.dir
│  ├─actionlib_generate_messages_lisp.dir
│  ├─actionlib_generate_messages_py.dir
│  ├─actionlib_msgs_generate_messages_cpp.dir
│  ├─actionlib_msgs_generate_messages_lisp.dir
│  ├─actionlib_msgs_generate_messages_py.dir
│  ├─clean_test_results.dir
│  ├─CMakeTmp
│  ├─download_extra_data.dir
│  ├─doxygen.dir
│  ├─geometry_msgs_generate_messages_cpp.dir
│  ├─geometry_msgs_generate_messages_lisp.dir
│  ├─geometry_msgs_generate_messages_py.dir
│  ├─roscpp_generate_messages_cpp.dir
│  ├─roscpp_generate_messages_lisp.dir
│  ├─roscpp_generate_messages_py.dir
│  ├─rosgraph_msgs_generate_messages_cpp.dir
│  ├─rosgraph_msgs_generate_messages_lisp.dir
│  ├─rosgraph_msgs_generate_messages_py.dir
│  ├─run_tests.dir
│  ├─sensor_msgs_generate_messages_cpp.dir
│  ├─sensor_msgs_generate_messages_lisp.dir
│  ├─sensor_msgs_generate_messages_py.dir
│  ├─std_msgs_generate_messages_cpp.dir
│  ├─std_msgs_generate_messages_lisp.dir
│  ├─std_msgs_generate_messages_py.dir
│  ├─tests.dir
│  ├─tf2_msgs_generate_messages_cpp.dir
│  ├─tf2_msgs_generate_messages_lisp.dir
│  ├─tf2_msgs_generate_messages_py.dir
│  ├─tf_generate_messages_cpp.dir
│  ├─tf_generate_messages_lisp.dir
│  ├─tf_generate_messages_py.dir
│  └─_catkin_empty_exported_target.dir
├─devel
│  ├─lib
│  │  ├─ccc
│  │  └─pkgconfig
│  └─share
│      └─ccc
│          └─cmake
├─gtest
│  └─CMakeFiles
│      ├─gtest.dir
│      │  └─src
│      └─gtest_main.dir
│          └─src
├─include
│  └─ccc
├─src
└─test_results

上述就是一个简单的ROS工程的代码结构图

include/包名 : 这里会放一些头文件,如,.h 、.hpp。

src/ : 代码目录。

package.xml : 用于描述ROS工程的依赖和其他属性,类似于CMakeLists.txt。

除了以上的目录,一般的工程还会有msg/、srv/目录,这两种文件夹里放的是信息(Message)和服务(Service)文件,这两种文件的使用我们以后再讲。

三、一些有用的命令

ROS既然被称为机器人操作系统,那么在ROS中,就会有一些有用命令:

1、roscd

roscd [package name]

快速转移至工程目录。

2、rosed

rosed [file name]
使用系统默认编辑器编辑某文件,如Vim。
ROS学习笔记16:机器人系统建模与仿真 一、概述:1.机器人系统仿真: 是通过计算机对实体机器人系统进行模拟的技术,在 ROS 中,仿真实现涉及的内容主要有三:对机器人建模(URDF)、创建仿真环境(Gazebo)以及感知环境(Rviz)等系统性实现。(1)仿真优势:低成本、高效、高安全性。(2)仿真缺陷:仿真器所使用的物理引擎目前还不能够完全精确模拟真实世界的物理情况;仿真器构建的是关节驱动器(电机&齿轮箱)、传感器与信号通信的绝对理想情况,目前不支持模拟实际硬件缺陷或者一些临界状态等情形。2.机器人系统仿真所需组件:(1)创建机 阅读详情

相关推荐

ROS应用之如何配置RTOS满足机器人系统中的实时要求

实时操作系统(RTOS)基本概念实时操作系统(RTOS)是设计用于实时应用的操作系统,其主要目标是在确定的时间内完成任务。RTOS的任务调度算法和优先级控制机制能够确保高优先级任务按时完成。精确的传感器数据采集:传感器数据需要在规定时间内采集并传输给控制系统。快速响应外部事件:对于控制系统,需要确保指令在最短的时间内得到响应。任务的调度周期:任务的周期可以通过公式计算,其中 ftask 是任务的调度频率。优先级分配。

weixin_68094467的博客 1008

ROS generate_messages_cpp 编译报错解决

ROS generate_messages_cpp 编译报错解决 正在学习ROS下的 c++ 与 python 联合编程的知识,在编译cpp文件时有报错,以下过程记录: 在参考→文章1←进行配置时,已经完成了cpp与py的插入,进行catkin_make步骤时有报错,报错内容如下: CMake Error at my_pkg/CMakeLists.txt:27 (add_dependencies): The dependency target "my_pkg_generate_messages_cp

青花耄耋的博客 3865

Ubuntu16.04安装ROS(机器人操作系统)教程

“在人生的路上,每一个人都是孤独的旅客。与其舒舒服服,懵懵懂懂过一辈子,倒不如品尝一点不平常的滋味,似苦而是甜。” 还是记录下吧~ 最近脑子总是不好使~ ROS(Robot OS 机器人操作系统) 官网:http://wiki.ros.org/ROS/Installation 先来说一说ROS是干什么用的~ Robot Operating System (ROS) 是...

I-am-Unique 2万+

ROS: learning_communication_generate_messages_cpp does not exist.错误产生原因及修复。

在阅读《ROS机器人开发实践》这本书的3.6时,编译cmake工程出现了如下报错: CMake Error at learning_communication/CMakeLists.txt:125 (add_dependencies): The dependency target "learning_communication_generate_messages_cpp" of target "talker" does not exist....

weixin_47539430的博客 1410

ROS2 学习笔记3:了解ROS2 节点 Node

节点是ROS2 基本元素,在机器人系统里面负责单一模块功能作用在本课程,通过运行中执行文件和,启动turtlesim包中的节点你学会了使用来获取活动节点的名字,使用指令去深入了解某个节点.对于一个复杂真实的机器人系统,这些工具用在了解数据流显得至关重要。

weixin_43180456的博客 2113

北斗/GNSS在ROS机器人系统的应用

前言:ROS机器人操作系统(Robot Operating System)用于编写机器人软件程序的一种具有高度灵活性的软件架构,随着市场智能化的发展,机器人从原来的封闭工厂开始走向户外,而GNSS作为户外高精度定位解决方案,因为其全天时全天候和高精度定位的特点,成为移动机器人ROS主流的集成方案。基于此,本文就北斗/GNSS其主要原理及特点,共同探讨其在ROS机器人系统的相关应用。 GNSS系统 GNSS全球导航卫星系统(Global Navigation Satellite System)是利用一组

qq_31969129的博客 2157

ROS学习过程中的错误记录2 - 编写简单的消息发布器和订阅器(C++)

编译过程中出现如下错误: beginner_tutorials/CMakeFiles/listener.dir/build.make:62: recipe for target ‘beginner_tutorials/CMakeFiles/listener.dir/src/listener.cpp.o’ failed make[2]: *** [beginner_tutorials/CMakeFi...

罗伯特祥的博客 3160

ROS新手教程【一】ROS开源机器人操作系统简介

导师是机器人方向的,毕设就让我ROS的研究,网上有几篇新手教程,我自己照着做也行,但想了想,一直没有写博客的习惯,索性就从这次开始,主要参考是wiki,其实我建议看得懂英文的照着做就好,不理解得地方再看看下面的资料: 1.小菜鸟上校的博客:http://blog.youkuaiyun.com/xiaocainiaoshangxiao/article/category/1710543/2 2.ROS探索总结

BirdMan的广阔天地 2万+

ROS 话题订阅模型之自定义消息类型 C++实现

ROS 中自定义消息类型 C++ 发布模拟数据实现

weixin_46999174的博客 1026

Windows下高效部署llama.cpp:从环境配置到模型量化的完整指南

本文提供了一份详尽的Windows系统下部署llama.cpp的完整指南。内容涵盖从Python环境配置、使用CMake与MinGW编译工具链的搭建,到编译llama.cpp项目、获取并转换模型为GGUF格式,以及执行模型量化和基础推理测试的全过程。指南旨在帮助开发者在普通Windows电脑上,无需高端显卡,仅凭CPU即可高效运行大语言模型,并重点解决了部署过程中常见的环境与编译错误。

weixin_28841265的博客 880

DDR3性能优化实战:如何用Xilinx MIG控制器实现800MHz稳定读写(7系列FPGA版)

本文深入探讨了在Xilinx 7系列FPGA上使用MIG控制器实现DDR3存储器800MHz稳定高速读写的实战优化技巧。文章聚焦于高级时序调优、Bank Machine调度策略、用户接口设计优化以及利用ILA进行信号完整性调试,旨在帮助工程师突破性能瓶颈,实现接近理论峰值的稳定带宽,并为进一步冲刺更高频率提供进阶调参指南。

seed的博客 775

ROS应用之ROS多机器人系统

相比单机器人系统,多机器人系统能够通过协作提高效率和任务完成的鲁棒性,同时降低单点故障风险。借助 ROS(Robot Operating System)的模块化设计与强大的通信机制,开发者可以轻松构建多机器人协作平台,支持多种复杂任务的实现,如仓储物流、无人机编队、农业巡检和灾后救援等。ROS 的节点架构支持将任务分解为多个模块(如任务分配、路径规划、感知),每个模块独立运行,便于开发与调试。

古月居 2745

从零开始之stm32之CAN通信

CAN通信极简教程(小白友好版),从小白的视角了解并实现简单的STM32F103的CAN通信,直接上手。

qq_30993593的博客 1306

ROS2 基础知识学习笔记

命令语法功能说明cdcd <目录路径>改变工作目录,未指定路径时回到用户主目录。pwd显示当前工作目录的绝对路径。mkdirmkdir [选项] <目录名称>创建一个目录/文件夹。touchtouch <文件名称>创建一个空文件。nanonano <文件名称>使用 nano 编辑器编辑文件。lsls [选项] [目录名称...]列出目录/文件夹中的文件列表。geditgedit <文件名称>打开 gedit 编辑器编辑文件,若文件不存在则新建。mv。

Master_Zhang_的博客 5127

国产安全芯片在密码算法国密体系下的性能适配策略

国密体系即国家商用密码体系,是保障信息安全的核心技术体系。自20世纪90年代末起步,国密体系经历了从无到有、从弱到强的发展历程。1999年,国家密码管理局成立,标志着国密体系的正式建立。2000年,国密SM1算法首次发布,开启了国密算法的标准化进程。此后,SM2、SM3、SM4等算法陆续推出,形成了完整的对称与非对称密码算法体系。:2010年,国密标准正式纳入国家标准体系,国密算法在金融、政务、通信等关键领域的应用得到明确规范。

qq_40552871的博客 1355

LVGL v9的lv_scale控件实战:5分钟打造动态仪表盘(附完整代码)

本文详细介绍了LVGL v9中lv_scale控件的实战应用,通过5个关键步骤快速打造动态仪表盘。文章涵盖核心特性解析、代码实现、样式定制及性能优化,适用于工业HMI、智能家居等场景,并附完整代码示例。

gin88的博客 262

ROS学习6:ROS机器人系统仿真

ROS学习6:ROS机器人系统仿真

qq_42994487的博客 9099

从零搭建基于OpenSpec的现代化UI自动化测试框架实战指南

UI自动化测试是软件质量保障的关键环节,其核心在于通过脚本模拟用户操作,对Web应用界面进行功能验证。其原理在于利用浏览器驱动工具(如Selenium、Playwright)提供的API,实现对页面元素的定位、交互与断言。一个设计良好的自动化框架能显著提升测试脚本的可维护性、可读性和执行稳定性,从而在持续集成、回归测试等场景中发挥巨大价值。本文聚焦于如何构建一个现代化的UI测试框架,通过整合OpenSpec架构规范、Pytest测试引擎与Playwright浏览器自动化工具,形成清晰的页面对象模型(POM)

weixin_28836989的博客 286

【ROS速成】半小时入门机器人ROS系统简明教程(Ubuntu24.04+ROS2)

而提到软件部分,我们就不得不提到一个在机器人领域不可避免的系统——ROS系统。ROS就是传说中的机器人操作系统(Robot Operating System),但其本身并不是一个操作系统,而是可以安装在现在已有的操作系统上(Linux、Windows、Mac)上的软件库和工具集。实际上,ROS的作用就是提供一个将机器人硬件部件连接起来的简易的软件系统,同时避免了机器人开发中开发者重复造轮子,大大提升了机器人工程的开发效率。ROS为此设计了一整套通信机制(话题、服务、参数、动作)。

meno的博客 4165

39、信号流图:解决线性代数方程组的图论方法

本文介绍了信号流图理论在求解线性代数方程组中的应用,重点阐述了Coates方法和Mason方法的原理、步骤及对比分析。通过图论视角,将矩阵运算转化为对有向图结构的分析,利用1-因子、1-阶连接、前向路径和反馈回路等概念,推导出方程组解的拓扑公式。文章结合具体实例演示两种方法的计算过程,并总结其在电路分析、控制系统和通信系统等领域的拓展应用,展示了信号流图理论的直观性与有效性。

pear55的博客 87

uniapp - 实现安卓App打包上架应用商店详细教程,详解Hbuilder打包编译apk发布上传到应用市场全流程,提供uniApp云打包、离线打包app、原生本地打包,附带APP备案和安卓证书申请

uni-app,安卓,APP,应用商店,打包编译apk,上架到应用市场,如何打包app并发布到主流应用市场,发布为AndroidApp流程,应用备案,如何申请安卓证书,hbuilder发布安卓apk后怎么上传到各家软件商店,创建app证书,uniapp发行原生APP本地打包安卓APK,详细最全的步骤教程,项目打包成apk,云打包,安心打包,安卓app离线打包,一直审核不通过,被拒绝,不符合规范,上架发布失败,申请安卓证书和获取证书信息,uni-app打包发布安卓Android软件到各大应用商店,腾讯应用

🏆 前端领域优质创作者 1万+

ROS2——ROS2对比ROS1(二)

ROS最早的设计目标就是开发这样一款PR2家庭服务机器人,这款机器人绝大部分时间都是独立工作,为了让他具备充足的能力:它搭载了工作站级别的计算平台和各种先进的通信设备,不用担忧算力不够,有足够的实力支持各种复杂的实时运算和处理; 由于是单兵作战,通信绝大部分都自己内部完成,那就可以用有线连接,保证了良好的网络连接,没有丢数据或者黑客入侵的风险; 这台机器人最终虽然小批量生产,但是由于高昂的成本和售价,也只能用于学术研究。 随着ROS的普及,应用ROS的机器人类型已经和PR2机器人有了天翻地覆的问题,也并不

戚晨夕的博客 3792

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

《ROS机器人编程实践》学习笔记1 -- ROS基础知识

学习笔记目录 学习笔记基本遵从但并不严格按照《ROS机器人编程实践》目录。 学习笔记1–ROS基础知识 学习笔记2–ROS节点间通信 学习笔记3–机器人仿真&WanderBot 学习笔记4–遥控机器人 学习笔记5–创建地图&导航 学习笔记6–操作R2机器人下棋 学习笔记7–借助opencv做一个巡线机器人 学习笔记8–smach状态机 学习笔记9–基于fetch的仓储机器人 学习笔...

sharemon的博客 2754

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

【ROS基础】ROS1和ROS2的区别

ROS1存在的根本问题: 1.无多机器人系统的标准:ROS1中并没有构建多机器人系统的标准方法。 2.平台单一:ROS1基于linux系统,在其他系统中无法安装和使用。 3.实时性差:ROS1缺少实时性方面的设计。 4.稳定性差:ROS1中的节点依赖于ROS Master,一旦节点管理器崩溃,系统将无法订阅和发布主题。 ...

欢迎时常光顾我的干货超市,热衷于AIoT!! 3404

【ROS学习笔记】ROS1和ROS2对比

摘要: ROS1与ROS2是机器人开发的两代操作系统,分别适用于不同场景。ROS1成熟稳定、生态丰富,适合教育和快速原型开发,但存在实时性差、依赖主节点等局限。ROS2采用DDS通信协议,实现去中心化架构,支持硬实时、多机器人协作和端到端加密,更适配工业自动化等高要求场景,但学习曲线陡峭且生态仍在建设中。建议新项目优先选择ROS2,旧系统逐步迁移,根据项目需求(实时性/安全性 vs 开发效率)权衡选择。随着ROS2持续迭代,它正成为具身智能时代机器人商业化的关键技术底座。

ai领域探索者,欢迎一起交流,目前从事具身智能行业。 1936
上一篇: ROS机器人系统学习笔记(一)--------ROS安装与配置
下一篇: ROS机器人系统学习笔记(三)--------认识节点(Node)和话题(Topic)
Zijie Tian
博客等级 码龄10年 68粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值