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

【ROS学习笔记1】ROS快速体验输出Hello World

【ROS学习笔记1】ROS快速体验输出Hello World

文章目录

  • 【ROS学习笔记1】ROS快速体验输出Hello World
  • 1.1 ROS快速体验
    • 1.1.1 Hello World快速实现简介
    • 1.1.2 Hello World的C++实现
    • 1.1.3 Hello World的Python实现

写在前面,本系列笔记参考的是AutoLabor的教程,具体项目地址在 这里

1.1 ROS快速体验

1.1.1 Hello World快速实现简介

本节使用ROS编写一个程序实现打印Hello World字符串的功能,分别用C++Python实现。

无论使用那种语言,使用ROS的大致流程都是一样的,分别是:

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

1、创建工作空间

mkdir -p 工作空间名称/src
cd 工作空间名称
catkin_make

上述的命令会创建一个工作空间名称/src的两个文件夹,再回到工作空间目录中用catkin_make进行编译。

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

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

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

1.1.2 Hello World的C++实现

1、进入ros包的src目录编辑源文件

cd 自定义的包

写入以下源码文件(文件名可以自定义)

#include "ros/ros.h"int main(int argc, char *argv[])
{//执行 ros 节点初始化ros::init(argc,argv,"hello_node");//创建 ros 节点句柄(非必须)ros::NodeHandle n;//控制台输出 hello worldROS_INFO("hello world!");return 0;
}

2、编辑ros包下的Cmakelist.txt文件

在CmakeList.txt文件中找到

###########
## Build ##
###########
add_executable(步骤3的源文件名src/步骤3的源文件名.cpp
)
target_link_libraries(步骤3的源文件名${catkin_LIBRARIES}
)

3、进入工作空间目录并编译

cd 自定义空间名称
catkin_make

4、执行

先启动命令行1:

roscore

再启动命令行2:

cd 工作空间
source ./devel/setup.bash
rosrun 包名 C++节点

注:source ~/工作空间/devel/setup.bash可以添加进.bashrc文件,在使用时更加方便。

添加方式1:直接使用gedit编辑.bashrc文件,在文件的末尾添加改内容

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

采用Cpp实现时:

1.1.3 Hello World的Python实现

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

需要特别注意,应该进入ros的包再创建文件夹scripts

给出一个示例的路径

~/demo1_ws/src/功能包名/srcipts

cd ros包
mkdir scripts

新建python文件(文件名可以自定)

#! /usr/bin/env python
## 指定解释器"""Python 版 HelloWorld"""
import rospyif __name__ == "__main__":rospy.init_node("Hello")rospy.loginfo("Hello World!!!!")

2、为python文件添加可执行权限

chmod +x 自定义文件名.py

3、编辑ros包下的CmakeList.txt文件

在CmakeList.txt文件中找到

#############
## Install ##
#############

开头的部分

catkin_install_python(PROGRAMS scripts/自定义文件名.pyDESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)

4、进入工作空间目录并编译

cd 自定义空间名称
catkin_make

5、进入工作空间目录并执行

先启动命令行1:

roscore

再启动命令行2:

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

采用Python实现时

相关文章:

【ROS学习笔记1】ROS快速体验输出Hello World

【ROS学习笔记1】ROS快速体验输出Hello World 文章目录【ROS学习笔记1】ROS快速体验输出Hello World1.1 ROS快速体验1.1.1 Hello World快速实现简介1.1.2 Hello World的C实现1.1.3 Hello World的Python实现写在前面,本系列笔记参考的是AutoLabor的教程,具…...

复习git的使用

文章目录复习git的使用基础提交文件查看回退撤销修改分支创建切换tag其他命令HEAD 指针 的理解复习git的使用 最近公司的老旧项目要由svn转到git,git 命令大都忘记了,这里复习总结一下。 基础 查看本地git版本 git --version 查看本地git配置信息 gi…...

pip命令大全 含换源方法

目录 一、命令列表 二、通用选项列表 三、常用操作 1.使用 requirements.txt 安装包 2.生成requirements.txt文件 3.pip升级命令 4.开启向后不兼容的新功能 5.启用已弃用的功能 四、pip换源 1.临时使用pip源方法 2.永久修改方法 一、命令列表 命令说明实例install安…...

数据结构与算法之最短路路径与最短路径和动态规划

If every unfolding we experience takes us further along in life, then, we are truly experiencing what life is offering.如果我们在人生中体验的每一次转变都让我们在生活中走得更远,那么,我们就真正的体验到了生活想让我们体验的东西。Do not tr…...

git 本地新建分支并进行合并

由于新的要求 不允许在线上直接clone下的git分支进行开发,只能本地新建分支再往线上分支合并远程库clone到本地库 git clone 需要下载的git地址注意我下载下来的是dev分支 根据实际情况进行分析git clone https://gitee.com/hello.git本地创建新的分支 git checkout…...

2023年DAMA-CDGA/CDGP数据治理认证选择哪家机构好?

DAMA认证为数据管理专业人士提供职业目标晋升规划,彰显了职业发展里程碑及发展阶梯定义,帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力,促进开展工作实践应用及实际问题解决,形成企业所需的新数字经济下的核心职业…...

浅析高速服务区交互一体机设备管理系统的建设与方向

很多高速公路服务区均缺乏现代化的服务思维、理念和手段,信息系统功能薄弱,服务区的自助服务终端存在功能单一、人机交互体验差、设备维护管理成本高、联动效率低、运营难等问题,这不仅无法支撑服务区的精细化服务和智能化管理需求&#xff0…...

分布式面试题

目录 分布式id的生成方案有哪些 雪花算法生成的ID由哪些部分组成 分布式锁在项目中有哪些应用场景? 分布式锁有哪些解决方案 Redis做分布式锁用什么命令 Redis做分布式锁,死锁有哪些情况?如何解决 Redis如何做分布式锁 MySQL如何做分布式锁 什么…...

Prophet 处理时间序列数据

Prophet 处理时间序列数据 flyfish 论文地址 https://peerj.com/preprints/3190/ 官网 https://facebook.github.io/prophet/ 源码地址 https://github.com/facebook/prophet hon import pandas as pd from prophet import Prophet df pd.read_csv(https://raw.githubuse…...

一文搞清楚LoRa网关,LoRa网关全知道

欢迎来到东用知识小课堂下面,今天我们用东用科技的OGC300系列LoRa为例,以简单的方式帮助大家了解一下LoRa相关的小知识一、LoRa网关的基本介绍LoRa是semtech公司创建的低功耗局域网无线标准,低功耗一般很难覆盖远距离,远距离一般功…...

医疗保健和智慧城市服务将引领5G物联网采用

Juniper Research预测,到2026年,全球5G物联网连接将达到1.16亿,而2023年仅为1700万。该公司预测,医疗保健部门和智慧城市服务将在未来三年推动这1100%的增长,到2026年占5G物联网设备的60%以上。5G物联网技术的超低延迟…...

promise静态方法及相关练习

promise的静态方法相对简单,这篇文章做个总结,以便漏补缺总结如下:1. Promise.all/Promise.anyPromise.allSettled/Promise.race都是接受数组,数组里面是promise2.. Promise.all 接收的promise数组只要有一个失败那么整个就是失败…...

【Tips】通过背数据了解业务

学习资料:做了三年数据分析,给你的几点建议 1. 通过背数据了解业务 原文: 总结: 方法:每天早上去到公司第一件事情就是先背一遍最新的各种指标。原理: 数据敏感性就是建立在对数据的了解和熟悉上。业务的…...

设备太分散?如何一站式管理边缘 OS、K8s 和应用?

作者简介 张志龙,SUSE 大中华区资深解决方案架构师,CNCF 官方认证的 CKA&CKAD 工程师,深耕以 Kubernetes 为代表的云原生领域,具备丰富的架构设计、业务容器化改造和项目落地实践经验。 据 Gartner 预测,到 2025 年…...

CF1692D The Clock 题解

CF1692D The Clock 题解题目链接字面描述题面翻译题目描述输入输出题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1提示代码实现题目 链接 https://www.luogu.com.cn/problem/CF1692D 字面描述 题面翻译 题目描述 从一个24小时制的时间点开始,每隔 xx…...

IDEA 30 个好用天花板技巧,敲代码直接接爽到飞。

IDEA 作为Java开发工具的后起之秀,几乎以碾压之势把其他对手甩在了身后,主要原因还是归功于:好用;虽然有点重,但依旧瑕不掩瑜,内置了非常多的功能,大大提高了日常的开发效率,下面汇总…...

关于selenium的等待

目录 隐式等待 显式等待 注意事项 隐式等待 简单来说:在规定的时间范围内,轮询等待元素出现之后就立即结束。 如果在规定的时间范围内,元素仍然没有出现,则会抛出一个异常【NoSuchElementException】,脚本停止运行…...

结构建模设计——Solidworks软件之装配体操作基本总结三(高级配合、机械配合、快捷菜单功能)

【系列专栏】:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来! 《QT开发实战》 《嵌入式通用开发实战》 《从0到1学习嵌入式Linux开发》 《Android开发实战》 《实用硬件方案设计》 长期持续带来更多案例与技术文章分享…...

【在 Colab 中使用 TensorBoard 绘图】

【在 Colab 中使用 TensorBoard 绘图】进入 Google Drive进入 Colab在深度学习中,使用本机GPU跑可能会比较慢,这里使用 Google Drive Colab 进行训练,运行代码 进入 Google Drive 进入网盘 初次进入需要注册账号。注意科学上网即可。右键…...

React循环DOM时为什么需要添加key

一、React 渲染流程和更新流程 react渲染流程:jsx -> 虚拟dom -> 真实domreact更新流程:props/state改变 -> render函数重新执行 -> 生成新的虚拟dom树 -> 新旧虚拟dom树进行diff -> 计算出差异进行更新 ->更新到真实的dom树 所以…...

idea大量爆红问题解决

问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...

爬虫基础学习day2

# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...

Linux --进程控制

本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...

C#学习第29天:表达式树(Expression Trees)

目录 什么是表达式树? 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持: 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...

Linux nano命令的基本使用

参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...

Python爬虫实战:研究Restkit库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的有价值数据。如何高效地采集这些数据并将其应用于实际业务中,成为了许多企业和开发者关注的焦点。网络爬虫技术作为一种自动化的数据采集工具,可以帮助我们从网页中提取所需的信息。而 RESTful API …...

用鸿蒙HarmonyOS5实现国际象棋小游戏的过程

下面是一个基于鸿蒙OS (HarmonyOS) 的国际象棋小游戏的完整实现代码,使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├── …...