【ROS教程】 Python 版:ROS运行 Hello Word

devtools/2024/9/20 11:32:33/ 标签: ROS, Ubuntu, Linux, 机器人, python

万物始于Hello World,为了体验ROS,使用Hello World介绍ROS的简单使用。

一、Hello World工程简介

首先需要创建工程,流程为:

  1. 创建工作空间目录(即工程根目录,注意此时还不是ROS工作空间,只是一个目录)
  2. 初始化工作空间(即把当前目录初始化为一个ROS工作空间)
  3. 创建功能包(ROS基本单元,可以理解为一个功能模块,每个工程至少有一个功能包)
  4. 编辑源文件(写代码实现需求)
  5. 编辑编译配置文件(ROS1使用CMake编译系统,这里编辑CMakeList.txt文件)
  6. 编译工程(使用CMake编译ROS工程,生成可执行文件,即ros节点,下文均称作节点)

不只是Hello World,所有ROS工程都是这样的流程。

另外,目前ROS开发主要使用C++和Python语言,这里使用Python实现。

ROS_Hello_World_17">二、ROS Hello World

注:其中ros_helloworld是工作空间的自定义名称。

01 创建工作空间

python">mkdir -p ros_helloworld/src
cd ros_helloworld
catkin_make

在这里插入图片描述

02 创建功能包

cd src
catkin_create_pkg helloworld roscpp rospy std_msgs
  • hello_world:自定义功能包名称;
  • roscpp:C++实现的库;
  • rospy:python实现的库;
  • std_msgs:ROS标准消息库。

在这里插入图片描述

03 编辑源文件

进入到 ros_learning/src/hello_world 目录,新建 scripts 目录,在该目录中新增 hello.py,内容如下:在功能包中新建名称为【scripts】的文件夹与【src】文件夹同级

cd ~/ros_helloworld/src/helloworld/scripts
gedit hello.py

在hello.py空白文档中输入下面内容:

python">#! /usr/bin python
import rospyif __name__ == "__main__":# 初始化ros节点,"hello_world_py"为自定义节点名称rospy.init_node("hello_world_py")# 在控制台打印 Hello World!rospy.loginfo("Hello World!")

04 编辑编译配置文件CMakeList.txt

找到ros_learning/src/hello_world/CMakeLists.txt中的Install,修改catkin_install_python如下:

python">catkin_install_python(PROGRAMSscripts/hello.pyDESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)

在这里插入图片描述
05 编译并执行

新打开一个终端输入roscore(启动ros核心)

在这里插入图片描述

再打开一个终端输入以下内容(在工作空间中编译并执行)

cd ~/ros_helloworld
catkin_make
source ./devel/setup.bash
rosrun hello_world hello.py

在这里插入图片描述


http://www.ppmy.cn/devtools/19347.html

相关文章

修改k8s kube-proxy转发为ipvs

查看kube-proxy目前使用的转发模式 a. 通过查看kube-proxy Pod日志来确定 [rootk8s-master ~]# kubectl -n kube-system get pod -o wide | grep kube-proxy kube-proxy-bt2lf 1/1 Running 0 3m26s 192.168.44.148 k8s-master <no…

CentOS yum安装jdk8

在CentOS系统中使用yum命令安装JDK 8&#xff0c;你可以按照以下步骤操作&#xff1a; 更新系统包: 在开始安装之前&#xff0c;建议先更新你的系统包&#xff0c;确保使用的是最新的软件包信息。 sudo yum update 检查已安装的Java版本&#xff08;可选&#xff09;: 如果你不…

idea 的使用和安装 以及简介

Java开发工具 大家刚才写代码的时候都是用记事本写的&#xff0c;但是有没有觉得记事本写代码不太方便啊&#xff01;记事本写代码单词写错了没有提示&#xff0c;格式也不好调整&#xff0c;写代码之后还需要我们到命令行使用javac命令手动编译&#xff0c;然后运行。 有没有一…

模型部署的艺术:让深度学习模型跃入生产现实

模型部署的艺术&#xff1a;让深度学习模型跃入生产现实 1 引言 1.1 部署的意义&#xff1a;为何部署是项目成功的关键 在深度学习项目的生命周期中&#xff0c;模型的部署是其成败的关键之一。通常&#xff0c;一个模型从概念构思、数据收集、训练到优化&#xff0c;最终目的…

HIVE:谓词下推

谓词 指返回bool值即true和false的函数&#xff0c;或是隐式转换为bool的函数&#xff1a; 如SQL中的谓词主要有 LKIE、BETWEEN、IS NULL、IS NOT NULL、IN、EXISTS 谓词下推 Predicate Pushdown&#xff08;PPD&#xff09;&#xff1a; 谓词下推 Predicate Pushdown&…

MySQL随便聊----之SQL的简单了解

一、含义 结构化查询语言&#xff0c;针对所有关系型数据库进行操作的语法 每一种数据库操作语法都存在不同的地方,操作相同的其实就是SQL语法,不同语法称之为该数据库操作软件的"方言" 二、通用语法 1. SQL 语句可以单行或多行书写&#xff0c;以分号结尾。 2. 可使…

oracle--merge into :匹配则更新不匹配则插入

merge into &#xff1a;匹配则更新不匹配则插入 --语法 merge into 目标表 using &#xff08;增量&#xff09; on (匹配字段&#xff09; where matched then update set --update和sel直接不需要加表名 when not matched then insert values--insert和values之间不需要加i…

Node.js在前端的妙用:打造更出色的Web体验

在Web开发领域&#xff0c;Node.js早已成为一种不可或缺的技术。尽管Node.js最初是作为服务器端技术而闻名&#xff0c;但是在前端开发中&#xff0c;它同样有着令人惊叹的应用。本文将探讨Node.js在前端的各种用途&#xff0c;并展示如何利用它来提升Web应用的性能、可维护性和…

机器学习 | 准确率、召回率、精准率、特异度傻傻分不清?ROC曲线怎么看?一篇文章帮你搞定

一、真正类、假负类、假正类与真负类 二、准确率、召回率、精准率、特异度与假正率 1. 准确率 (Accuracy) 准确率表明成功预测&#xff08;预测为负或为正&#xff09;的结果占总样本的百分比。 准确率 &#xff0c; 2. 召回率/查全率/灵敏度/真正率&#xff08;Recall&a…

《MATLAB科研绘图与学术图表绘制从入门到精通》示例:绘制伊甸火山3D曲面图

伊甸火山&#xff08; Mount Eden&#xff09;是新西兰奥克兰市的一座火山&#xff0c;也是一处受欢迎的旅游景点。数据来自R内置volcano数据&#xff0c;笔者导出为volcano.csv文件&#xff0c;这个数据集用于演示3D曲面图和地形建模的目的。 购书地址&#xff1a;https://ite…

uniapp使用地图开发app

使用uniapp开发app中使用到地图的坑&#xff1a; 1、简单使用地图的功能比较简单&#xff0c;仅使用到地图选点和定位功能&#xff1a;&#xff08;其中问题集中在uni.chooseLocation中&#xff09;下面是api官网地址 uni.getLocation(OBJECT) | uni-app官网 官方建议app端使…

centos 安装配置文件中心 nacos2.2.3 稳定版

安装mysql 8 参考文章 centos7搭建mysql5.6 && mysql 8.0_centos7 mysql5.6-CSDN博客 安装 jdk 17 官网下载 对应的版本 Java Downloads | Oracle wget https://download.java.net/java/GA/jdk17.0.2/dfd4a8d0985749f896bed50d7138ee7f/8/GPL/openjdk-17.0.2_l…

OSPF域间路由

注&#xff1a;区域&#xff08;area&#xff09;是以接口进行划分的 描述&#xff1a; R1的g0/0/1接口属于area 0 √ R1属于区域0和区域1 1.设计原则 1、OSPF区域的设计原则&#xff1a; 骨干区域有且只能存在一个 非骨干区域必须和骨干区域相连 多区域时&#…

Golang基础1-基本类型、if、switch、string

基本类型 bool 整数&#xff1a;byte(相当于uint8), rune(相当于int32), int/uint ,int8/uint8 ,int16/uint16 ,int32/uint32 ,int64/uint64 浮点数: float32 ,float64, complex64 ,complex128 array&#xff08;值类型&#xff09;、slice、map、chan&#xff08;引用类型…

线上社交app的搭建,圈子社交系统,小程序+app+H5三端,源码交付,支持二开!

在科技飞速发展的大背景下&#xff0c;年轻人社交不再局限于面对面&#xff0c;线上社交app已深入各大年轻人的手机中。相比于传统交友方式&#xff0c;线上社交app为用户提供了更加新奇的交友体验。同时&#xff0c;它还可以吸引更多的朋友&#xff0c;提高用户的整体交友体验…

c++ 智能指针 简单实现

1.需要设计 智能指针实现&#xff0c;目标用一个对象管理指针。 指针类:B 智能指针类A<T> A<B> a(new B); 用A来管理B的指针&#xff0c;如果有多个指针指向一个对象&#xff0c;那么都用A来承载这个指针 A<B> b(a); 这里需要一个拷贝构造函数&#xff0c;为…

嵌入式物联网实战开发笔记-乐鑫ESP32芯片功能对比以及功能选型【doc.yotill.com】

乐鑫ESP32入门到精通项目开发参考百例下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1ATvRnAZvxkev-PJfd3EAPg?pwd4e33 提取码&#xff1a;4e33 2.1 初识 ESP32 ESP32-S3 是一款低功耗的 MCU 系统级芯片 (SoC)&#xff0c;支持 2.4 GHz Wi-Fi 和低功耗蓝牙 (…

并并并并·病查坤

P1、什么是并查集 引用自百度百科&#xff1a; 并查集&#xff0c;在一些有N个元素的集合应用问题中&#xff0c;我们通常是在开始时让每个元素构成一个单元素的集合&#xff0c;然后按一定顺序将属于同一组的元素所在的集合合并&#xff0c;其间要反复查找一个元素在哪个集合…

go中标签创建与引用

go中tag维护方法 util项目&#xff1a; 0 util修改的代码提交 1 从gitlab上获取最新的tag https://git.****.com/peiyou_like_shuangshi_zhongtai/beibo_utils/tags 2 创建tag: git tag -a v1.101.11 -m "its的ggb查询" 3 tagpush&#xff1a;git push origin v1.10…

玄子Share-Shell编程之条件语句

玄子Share-Shell编程之条件语句 条件测试操作 test命令 测试表达式是否成立&#xff0c;若成立返回0&#xff0c;否则返回其他数值 格式1&#xff1a;test 条件表达式 格式2&#xff1a;[ 条件表达式 ] # 至少应有一个空格文件测试 [ 操作符 文件或目录 ][rootlocal…