ROS机器人入门第一课:ROS快速体验——python实现HelloWorld

文章目录

  • ROS机器人入门第一课:ROS快速体验——python实现HelloWorld
    • 一、HelloWorld实现简介
      • (一)创建工作空间并初始化
      • (二)进入 src 创建 ros 包并添加依赖
    • 二、HelloWorld(Python版)
      • (二)进入 ros 包添加 scripts 目录并编辑 python 文件


ROS安装教程:ROS第 2 课 ROS 系统安装和环境搭建


ROS机器人入门第一课:ROS快速体验——python实现HelloWorld

一、HelloWorld实现简介

ROS中的程序即便使用不同的编程语言,实现流程也大致类似,以当前HelloWorld程序为例,实现流程大致如下:

  1. 先创建一个工作空间;
  2. 再创建一个功能包;
  3. 编辑源文件;
  4. 编辑配置文件;
  5. 编译并执行。

(一)创建工作空间并初始化

mkdir -p 自定义空间名称/src
cd 自定义空间名称
catkin_make

上述命令,首先会创建一个工作空间以及一个 src 子目录,然后再进入工作空间调用 catkin_make命令编译。

(二)进入 src 创建 ros 包并添加依赖

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

上述命令,会在工作空间下生成一个功能包,该功能包依赖于 roscpp、rospy 与 std_msgs,其中roscpp是使用C++实现的库,而rospy则是使用python实现的库,std_msgs是标准消息库,创建ROS功能包时,一般都会依赖这三个库实现。


注意: 在ROS中,虽然实现同一功能时,C++和Python可以互换,但是具体选择哪种语言,需要视需求而定,因为两种语言相较而言:C++运行效率高但是编码效率低,而Python则反之,基于二者互补的特点,ROS设计者分别设计了roscpp与rospy库,前者旨在成为ROS的高性能库,而后者则一般用于对性能无要求的场景,旨在提高开发效率。

二、HelloWorld(Python版)

(二)进入 ros 包添加 scripts 目录并编辑 python 文件

cd ros包
mkdir scripts

在这里插入图片描述\

  1. 在scripts目录中新建 python 文件: (文件名自定义)
touch helloworled.py
  1. 写入代码
#! /usr/bin/env python
# - coding: utf-8 -*-"""Python 版 HelloWorld"""
import rospyif __name__ == "__main__":rospy.init_node("Hello")rospy.loginfo("Hello World!!!!")
  1. 为 python 文件添加可执行权限
chmod +x 自定义文件名.py
  1. 编辑 ros 包下的 CamkeList.txt 文件(包和工作空间要分清哦
catkin_install_python(PROGRAMS scripts/自定义文件名.pyDESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)

不要忘记取消注释
在这里插入图片描述

  1. 进入工作空间目录并编译
cd 自定义空间名称
catkin_make
  1. 进入工作空间目录并执行
  • 先启动命令行1:
roscore
  • 再启动命令行2:
cd 工作空间
source ./devel/setup.bash
rosrun 包名 自定义文件名.py
  • 输出结果:Hello World!!!
    在这里插入图片描述

PS: source ~/工作空间/devel/setup.bash可以添加进.bashrc文件,使用上更方便(因为source ./devel/setup.bash只对该终端窗口起作用

  • 添加方式1: 直接使用 geditvi 编辑 .bashrc 文件,最后添加该内容

  • 添加方式2:echo "source ~/工作空间/devel/setup.bash" >> ~/.bashrc

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

巨细!Python爬虫详解

爬虫(又称为网页蜘蛛,网络机器人,在 FOAF 社区中间,更经常的称为网页追逐者);它是一种按照一定的规则,自动地抓取网络信息的程序或者脚本。 如果我们把互联网比作一张大的蜘蛛网,那…

Redis相关操作高阶篇--集群搭建

Redis相关操作大全一篇全搞定-CSDN博客 Redis集群 是一个由多个主从节点群组成的分布式服务器群,它具有复制、高可用和分片特性。Redis集群不需要seninel哨兵也能完成节点移除和故障转移的功能。需要将每个节点 设置成集群模式,这种集群模式没有中心节…

淘宝1688京东...按图搜索商品数据采集,item_search_img-按图搜索商品(拍立淘) API 返回值说明

按图搜索商品数据采集是一个复杂的过程,涉及多个步骤和工具。以下是一些常见的方法和工具,用于在淘宝、1688、京东等电商平台上进行按图搜索商品数据采集: 请求示例,API接口接入Anzexi58 一、方法 爬虫技术:使用编程…

[Linux开发工具]——make/Makefile的使用

Linux项目自动化构建工具——make/Makefile 前言:一、背景二、认识make和makefile2.1 创建Makefile文件2.2 创建test.c文件,并打开Makefile2.3 我们想要test.c生成test文件2.4 编译2.5 清理可执行文件 三、理解依赖关系和依赖方法3.1 依赖关系3.2 依赖方…

网络: 应用层

网络资源 uri(uniform resource identifier) 统一资源标识符。url(uniform resource location) 统一资源定位符,统指绝对路径。urn(uniform resource name) 统一资源名。 http 报文结构 第一部分简略信息,包含请求方法、url 和协议版本;或…

力扣 739. 每日温度 496.下一个更大元素 I

739. 每日温度 穷举的话就是从当前元素往后找比自己大的第一个元素,时间复杂度O(n^2)。 然后在看单调栈的解法。 就能感受出单调栈的巧妙。这道题主要熟悉单调栈这个数据结构。 单调栈:分为单调递增栈和单调递减栈。单调递增:栈顶元素总是小…

Linux-网络层IP协议、链路层以太网协议解析

目录 网络层:IP协议地址管理路由选择 链路层 网络层: 网络层:负责地址管理与路由选择 — IP协议,地址管理,路由选择 IP协议 数据格式: 4位协议版本:4-ipv4协议版本 4位首部长度:以…

JavaEE企业开发新技术3

目录 2.11 Method的基本操作-1 文字性概念描述 代码: 2.12 Method的基本操作-2 2.13 Method的基本操作-3 2.14 数组的反射操作-1 文字性概念: 代码: 2.15 数组的反射操作-2 学习内容 2.11 Method的基本操作-1 文字性概念描述 Me…

python 深度学习 记录遇到的报错问题12

本篇继python 深度学习 记录遇到的报错问题11_undefined symbol: __nvjitlinkadddata_12_1, version-CSDN博客 目录 一、AttributeError: module ‘tensorflow‘ has no attribute ‘app‘ 二、AttributeError: module tensorflow has no attribute placeholder 三、Attribu…

Qt登录页面

#include "mywidget.h" #include "ui_mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent), ui(new Ui::MyWidget) {ui->setupUi(this);//接收动图QMovie *mv new QMovie(":/pictrue/luori.gif");ui->loglab->setMovie(…

zabbix6.4监控mysql数据库

目录 一、前提二、配置mysql数据库模板三、配置监控的mysql主机 一、前提 已经搭建好zabbix-server 在需要监控的mysql服务器上安装zabbix-agent2 上述安装步骤参考我的上篇文章:通过docker容器安装zabbix6.4.12图文详解(监控服务器docker容器&#xf…

《2024年中国企业CRM软件国产替代趋势研究报告》重磅首发

编者按 近日,Salesforce移动应用在中国大陆苹果应用商店的下架,预示着今年CRM国产化替代即将迎来高潮。CRM作为距离业务最近的软件,被公认为是企业数字化转型、高质量发展的核心系统之一。“企业如何选择一款真正满足自身业务需求的本土化CR…

线程安全的List之CopyOnWriteArrayList

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 ArrayList是线程不…

嵌入式C语言(十)

内建函数 这篇我们来看看什么是内建函数欸? 什么是内建函数 内建函数,顾名思义,就是编译器内部实现的函数。**这些函数和关键字一样,可以直接调用,**无须像标准库函数那样,要先声明后使用。 **内建函数…

ChatGPT是什么,怎么使用,需要注意些什么?

一、ChatGPT 是什么? ChatGPT,全称聊天生成预训练转换器(Chat Generative Pre-trained Transformer),是 OpenAI 开发的人工智能(AI)聊天机器人程序,于2022年11月推出。该程序使用基于GPT-3.5、GPT-4架构的…

权限管理系统-0.6.0

七、员工端审批 员工端审批的大致流程如下图: 这个模块目的是实现员工在微信端的审批提交和处理功能,为了与之前的管理系统区分开,新建一个controller完成这些功能。 7.1 查询审批分类和审批模板 7.1.1 后端接口 //controller Api(tags …

elementUI Tree 树形控件单选实现

文章目录 展示效果代码实现elementui Tree树形控件其他详细数据 在Element UI中,树形控件(el-tree)本身不支持单选功能。但是,你可以通过监听节点点击事件并手动更新选中状态来实现单选树。 以下是一个简单的例子,展示…

【Spring 篇】SpringMVC拦截器:给你的应用增添色彩

嗨,亲爱的小伙伴们!欢迎来到这段关于SpringMVC拦截器的奇妙之旅。今天我们要一探究竟,深入挖掘拦截器的神秘面纱,看看它是如何在你的应用中悄然发挥作用的。别怕,我会用最通俗易懂的语言,一步一步带你走进这…

【合合TextIn】深度解析智能文档处理技术与应用

目录 一、智能文档处理介绍 二、文档格式解析 三、图像增强技术解析 四、传统文字识别OCR技术解析 五、深度学习OCR技术解析 六、深度学习版面分析技术解析 七、文档分类 八、信息抽取 九、系统集成:将IDP处理后的数据集成到企业系统 结论 一、智能文档处…

下载 macOS 系统安装程序的方法

阅读信息: 版本:0.4.20231021 难度:1/10 到 4/10 阅读时间:5 分钟 适合操作系统:10.13, 10.14, 10.15, 11.x, 12.x,13.x, 14 更新2023-10-21 添加Mist的介绍支持版本的更新,13.x&#xff0…