【ROS机器人学习】--------1ROS工作空间和功能包创建

虚拟机工具和镜像链接: https://pan.baidu.com/s/1HDmpbMESiUA2nj3qFVyFcw?pwd=8686
提取码: 8686


ROS工作空间是一个用于组织和管理ROS(机器人操作系统)包的目录结构,它通常包含多个子目录,用于存放源码、构建文件和安装文件。工作空间的典型结构包括 src、build、devel 和 install 目录,通过这些目录,用户可以方便地进行代码开发、编译和部署。

ROS功能包是ROS工作空间中的基本构建单元,每个功能包包含一组相关的ROS节点、库、配置文件、启动文件和其他资源,用于实现特定的功能或任务。功能包之间可以相互依赖和协作,用户可以通过定义包的依赖关系和接口来构建复杂的机器人系统


(1)c++

#!/bin/bash

#工作空间创建
sudo mkdir -p "ros_workspace_test/src"
sudo chmod -R 777 "ros_workspace_test"

#编译和架构ROS工作空间
cd "ros_workspace_test"
#编译工作空间构建
catkin_make
#添加到系统环境变量
echo " source ~/ros_workspace_test/devel/setup.bash" >> ~/.bashrc

#创建ROS功能包
cd "src"
#创建包名为“ros_pkg”的ROS功能包
catkin_create_pkg ros_pkg roscpp rospy std_msgs

cd "ros_pkg/src"
#创建源文件
gedit "ros_cpp.cpp"

#刷新环境
source ./devel/setup.bash

# 返回上级目录
cd ..

# 输出成功消息
echo "文件夹 '已成功创建,并在其中创建了文件,并设置了文件权限为777。"

在这里插入图片描述
在这里插入图片描述

#文件加权
sudo chmod 777 ros_workspace_test_cpp.sh
#执行脚本
./ros_workspace_test_cpp.sh

在这里插入图片描述
编写c++源文件并ctrl+s保存编辑

#include "ros/ros.h"            //包含ros头文件
int main(int argc, char *argv[])   //编写ros的main函数
{
ros::init(argc, argv, "node_name_demo1"); //初始化ros节点
ROS_INFO("hello world!");             //输出日志
return 0;
}

在这里插入图片描述
打开工作空间在构建过程中正确链接所需的依赖项
在这里插入图片描述
在这里插入图片描述

#添加编译规则
add_executable(ros_cpp_node src/ros_cpp.cpp)
#添加目标链接库
target_link_libraries(ros_cpp_node ${catkin_LIBRARIES})

在这里插入图片描述
终端跳转到工作空间内编译脚本

catkin_make

#刷新环境
source ./devel/setup.bash

在这里插入图片描述
在这里插入图片描述
执行节点,右键鼠标垂直分割打开另一个终端
roscore:ROS 系统的中央节点

#开启节点
roscore 
#查看功能节点

#跳转到工作空间
cd ros_workspace_test
#运行节点
rosrun ros_pkg ros_cpp_node

在这里插入图片描述
(2)python

#!/bin/bash

#工作空间创建
sudo mkdir -p "ros_workspace_test_py/src"
sudo chmod -R 777 "ros_workspace_test_py"

#编译和架构ROS工作空间
cd "ros_workspace_test_py"
#编译工作空间构建
catkin_make 
#添加到系统环境变量
echo " source ~/ros_workspace_test_py/devel/setup.bash" >> ~/.bashrc

#创建ROS功能包
cd "src"
#创建包名为“ros_pkg”的ROS功能包
catkin_create_pkg ros_pkg1 roscpp rospy std_msgs

#创建py脚本
cd "ros_pkg1"
sudo mkdir "scripts"
sudo chmod -R 777 "scripts"
cd "scripts"
#创建源文件
gedit "ros_py.py"
sudo chmod 777 "ros_py.py"
#刷新环境
source ./devel/setup.bash

# 返回上级目录
cd ..

# 输出成功消息
echo "文件夹 '已成功创建,并在其中创建了文件,并设置了文件权限为777。"

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
ctrl+s保存shell文件
打开终端加权shell脚本,并运行脚本

#加权
sudo chmod 777 ros_workspace_test_py.sh
#运行脚本
./ros_workspace_test_py.sh

在这里插入图片描述
编写python脚本文件

#! /usr/bin/env python
# -*- coding: utf-8 -*-

"""
    Python 版 HelloWorld

"""
import rospy

if __name__ == "__main__":
    rospy.init_node("Hello")
    rospy.loginfo("Hello World!!!!")

在这里插入图片描述
编写完成后,strl+s保存文件,并关闭文件
打开工程
在这里插入图片描述
在这里插入图片描述
功能包添加所需依赖项

catkin_install_python(PROGRAMS scripts/ros_py.py
  DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)

在这里插入图片描述
跳转到工作空间内编译工程

catkin_make

#刷新环境
source ./devel/setup.bash

在这里插入图片描述
在这里插入图片描述
执行节点

#开启节点
roscore 
#运行节点
rosrun ros_pkg ros_py.py

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Elastic Cloud 将 Elasticsearch 向量数据库优化配置文件添加到 Microsoft Azure

作者:来自 Elastic Serena Chou, Jeff Vestal, Yuvraj Gupta 今天,我们很高兴地宣布,我们的 Elastic Cloud Vector Search 优化硬件配置文件现已可供 Elastic Cloud on Microsoft Azure 用户使用。 此硬件配置文件针对使用 Elasticsearch 作…

CSS单位px、rem、em、vw、vh的区别

目录 前言 零.视口介绍 一.px 二.em 三.rem【重要】 3.1rem介绍 3.2rem与em的区别 四.vw、vh、vmax、vmin 五.注意问题 5.1如何使1rem 10px? 5.2如果父元素没有指定高度,那么子元素的百分比高度是多少? 5.3更多问题 前言 这几…

实现多级树形结构查询 比如分类(父分类、子分类)

实现多级树形结构查询 比如分类(父分类、子分类) 数据库表结构 CREATE TABLE course_category (id varchar(20) NOT NULL COMMENT 主键,name varchar(32) NOT NULL COMMENT 分类名称,label varchar(32) DEFAULT NULL COMMENT 分类标签默认和名称一样,p…

CLIP 论文的关键内容

CLIP 论文整体架构 该论文总共有 48 页,除去最后的补充材料十页去掉,正文也还有三十多页,其中大部分篇幅都留给了实验和响应的一些分析。 从头开始的话,第一页就是摘要,接下来一页多是引言,接下来的两页就…

qt-C++笔记之QThread使用

qt-C笔记之QThread使用 ——2024-05-26 下午 code review! 参考博文: qt-C笔记之使用QtConcurrent异步地执行槽函数中的内容,使其不阻塞主界面 qt-C笔记之QThread使用 文章目录 qt-C笔记之QThread使用一:Qt中几种多线程方法1.1. 使用 QThread 和 Lambda…

gnocchi学习小结

背景 总结gnocchi 4.4版本gnocchi-metricd工作流程 入口 gnocchi.cli.metricd metricd stop after processing metric默认为0,调servicemanager run MetricdServiceManager __init__ 服务逻辑封装到MetricdServiceManager初始化中 主要由MetricProcessor, Met…

火山引擎“奇袭”阿里云

图片|电影《美国队长3》剧照 ©自象限原创 作者丨程心 编辑丨罗辑 大模型价格战,已经不是什么新闻。 从OpenAI发布GPT-4o,将API价格下调50%,并宣布面向普通用户免费开始,就标志着大模型的竞争从性能进入到了成本…

Java设计模式 _行为型模式_迭代器模式

一、迭代器模式 1、迭代器模式 迭代器模式(Iterator Pattern)是一种行为型设计模式,用于顺序访问集合对象的元素,不需要关心集合对象的底层表示。如:java中的Iterator接口就是这个工作原理。 2、实现思路 &#xff0…

面试大杂烩之kafka

面试这个领域最近环境不行,所以卷起来流量挺大 搭建: 总体来说 比较简单,主要是配置文件,命令的话分开了producer /consumer/ topic 大概这么个意思。具体可以看里面的博客 #host配置 #安装包 wget https://archive.apache.or…

国内最受欢迎的7大API供应平台对比和介绍||电商API数据采集接口简要说明

本文将介绍7款API供应平台:聚合数据、百度APIStore、Apix、数说聚合、通联数据、HaoService、datasift 。排名不分先后! 免费实用的API接口 第一部分 1、聚合数据(API数据接口_开发者数据定制) 2、百度API Store(API集市_APIStore…

C++第十九弹---string模拟实现(下)

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】 目录 1、修改操作 2、迭代器操作 3、字符串操作 4、非成员函数重载操作 总结 1、修改操作 1、string& operator (const char* s); //尾部插入…

骑行 - 新区永旺出发的环太湖路线

环过好几次太湖,但对路线都没太在意,都是跟着别人走的。这次自己制定一个路书,方便下次自己一个人环太湖时使用。 开始是使用高德地图做路书,只能在PC上做。我用的是网页版,每次选点太麻烦了。要输入地址搜索&#xff…

【C语言】八进制、十六进制

前言 在我们日常生活中使用的数往往是十进制的,而当我们学习C语言后我们会接触到许多不同的进制并且时常需要去思考与使用这些不同的进制(尤其是2的幂相关的进制,因为这种计数系统比十进制更接近于计算机的二进制系统)&#xff0…

5.26机器人基础-空间描述和变换2

在前文的基础上引入平移算子和旋转算子 1.平移算子 2.旋转算子 3.变换算子

推荐一款媒体影音嗅探神器—Chrome扩展插件(猫抓cat-catch)

目录 1.1、前言1.2、下载地址1.3、github Releases 版本说明1.4、安装步骤1.5、猫抓插件常规设置1.5.1、设置抓取文件的类型1.5.2、设置抓取文件的后缀名 1.1、前言 我们在日常上网的过程中,很多音频、视频网站下载资源都非常不方便,要么需要安装客户端&…

联邦学习(一)

世界第一本“联邦学习”专著——《联邦学习》。作者阅读数书籍《联邦学习实战》。 1.联邦学习概述 在构件全局模型时,其效果与数据被整合在一起进行集中式训练的效果几乎一致,这便是联邦学习提出的动机和核心思想。 核心理念:数据不动模型动,数据可用不可见。 传统训练范式…

初步认识栈和队列

Hello,everyone,今天小编讲解栈和队列的知识!!! 1.栈 1.1栈的概念及结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。 进行数据插入和删除操作的一端 称为栈顶&…

hsql学习笔记

1. row_number() over (partition by uid order by dt 分析: row_number(): 这是一个窗口函数,用于为结果集中的每一行分配一个唯一的序号。默认情况下,这个序号是按照查询结果的顺序来分配的,但你可以通过OVER()子句…

Mybatis源码剖析---第二讲

Mybatis源码剖析—第二讲 那我们在讲完了mappedstatement这个类,它的一个核心作用之后呢?那下面我有一个问题想问问各位。作为mappedstatement来讲,它封装的是一个select标签或者insert标签。但是呢,我们需要大家注意的是什么&am…

文件夹打开出错?这里有你需要的数据恢复与预防指南

在日常使用电脑时,我们有时会遇到文件夹打开出错的情况。当你尝试访问某个文件夹时,系统可能会弹出一个错误提示,告诉你无法打开该文件夹。这种情况不仅会影响我们的工作效率,还可能导致重要数据的丢失。接下来,我们将…