【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_msgscd "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 rospyif __name__ == "__main__":rospy.init_node("Hello")rospy.loginfo("Hello World!!!!")

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

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

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

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

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

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

在这里插入图片描述

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

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

相关文章

香橙派OrangePI AiPro测评

实物 为AI而生 打开盒子 截图电源开机进入 作为一个AI产品,必须有一个人机交互的界面才行。大家都在跑算法,于是我就开始进行整理着手整理搭建Qt的环境。 1、下载源码 wget https://download.qt.io/archive/qt/5.12/5.12.12/single/qt-everywhere-src-5.12.12.tar.xz待…

RDP方式连接服务器上传文件方法

随笔 目录 1. RDP 连接服务器 2. 为避免rdp 访问界面文字不清晰 3. 本地上传文件到服务器 1. RDP 连接服务器 # mstsc 连接服务器step1: 输入mstscstep2: 输入 IP, username, passwd 2. 为避免rdp 访问界面文字不清晰 解决方法: 3. 本地上传文件到服务器 step…

关于C++的特殊类定制

特殊类定制 在C中,一些特殊性质的类如何设计 类禁止拷贝的对象 C11 使用delete关键字赋值给拷贝构造和赋值C98将拷贝构造和赋值声明在私有里 类只能在堆上创建的对象 将构造函数私有化, 提供一个获取对象堆上创建对象的公有函数将析构函数私有化, 提供一个释放…

JavaScript面向对象编程入门:从0到1的奇幻之旅【含代码示例】

JavaScript面向对象编程入门:从零到英雄的奇幻之旅【含代码示例】 一、OOP:编程界的哈利波特基本概念类与实例 二、挥舞魔杖:创建类与实例基本语法 三、继承与封装:家族的力量继承封装 四、实战与技巧:打造坚固的魔法城…

IT行业的现状与未来发展趋势:从云计算到量子计算的技术变革

随着技术的不断进步,IT行业已经成为推动全球经济和社会发展的关键力量。从云计算、大数据、人工智能到物联网、5G通信和区块链,这些技术正在重塑我们的生活和工作方式。本文将深入探讨当前IT行业的现状,并展望未来发展趋势,旨在为…

vscode当前分支有未提交的修改,但是暂时不想提交,想要切换到另一个分支该怎么办

当前分支有未提交的修改,但是暂时不想提交,想要切换到另一个分支该怎么办? 首先,可以将当前修改暂存起来,以便之后恢复 git stash 然后切换到目标分支,例如需求A所在分支 git checkout feat-a-jie 修改完A需求后,需要先切换回之前的分支,例如需求B所在分支 git checkout feat…

免费插件集-illustrator插件-Ai插件-文本对象分行

文章目录 1.介绍2.安装3.通过窗口>扩展>知了插件4.功能解释5.总结 1.介绍 本文介绍一款免费插件,加强illustrator使用人员工作效率,进行文本对象分行。首先从下载网址下载这款插件 https://download.csdn.net/download/m0_67316550/87890501&…

通过安全的云开发环境重新发现 DevOps 的心跳

云开发平台如何“提升” DevOps 首先,我来简单介绍一下什么是云开发环境:它通常运行带有应用程序的 Linux 操作系统,提供预配置的环境,允许进行编码、编译和其他类似于本地环境的操作。从实现的角度来看,这样的环境类…

前端 JS 经典:读取文件原始内容

前言:有些时候在工程化开发中,我们需要读取文件里面的原始内容,比如,你有一个文件,后缀名为 .myfile,你需要拿到这个文件里的内容,该怎么处理呢。 在 vue2 中,因为 vue2 使用 vue-c…

【算法】前缀和——寻找数组的中心下标

本节博客是用前缀和算法图解“寻找数组的中心下标”,有需要借鉴即可。 目录 1.题目2.题意3.前缀和求解4.示例代码5.细节6.总结 1.题目 题目链接:LINK 2.题意 我们以示例1为例来图解一下题意: 3.前缀和求解 根据已有经验,我…

Java 读取 xml 文件的五种方式

在编写与 XML 数据交互的现代软件应用时,有效地读取和解析 XML 文件是至关重要的。XML(可扩展标记语言)因其灵活性和自我描述性,已成为数据存储和传输的一种普遍格式。对于 Java 开发者来说,Java 提供了多种工具和库来…

数据库索引相关的知识点总结

目录 1. 索引的概念 2. 索引的作用 3. 索引的类型 4. 索引的缺点 5. 索引的使用场景 6. 索引的设计原则 7. 索引的实现技术 8. 索引的优化技巧: 数据库表的索引是一个非常重要的概念,它类似于一本书的目录,可以帮助我们快速找到所需的…

Idea工具的使用技巧与常见问题解决方案

一、使用技巧 1、启动微服务配置 如上图,在编辑配置选项,将对应的启动入口类加进去, 增加jvm启动参数, 比如: -Denvuat 或者 -Denvuat -Dfile.encodingUTF-8 启动配置可能不是-Denvuat,这个自己看代…

Android 11 Audio音频系统配置文件解析

在AudioPolicyService的启动过程中,会去创建AudioPolicyManager对象,进而去解析配置文件 //frameworks/av/services/audiopolicy/managerdefault/AudioPolicyManager.cpp AudioPolicyManager::AudioPolicyManager(AudioPolicyClientInterface *clientIn…

MySQL目录和文件

MySQL目录和文件 bin目录 存储一些mysql脚本比如mysqld、mysqld-self等等,用于执行mysql一些操作 数据目录 show variables like datadir;--查看数据目录位置每一个数据库都有一个和数据库名相同的文件夹;MySQL5.7开始每创建一个表,在Innod…

Python机器学习 Tensorflow + keras 实现CNN

一、实验目的 1. 了解SkLearn Tensorlow使用方法 2. 了解SkLearn keras使用方法 二、实验工具: 1. SkLearn 三、实验内容 (贴上源码及结果) 使用Tensorflow对半环形数据集分 #encoding:utf-8import numpy as npfrom sklearn.datasets i…

Dynadot API调整一览

关于Dynadot Dynadot是通过ICANN认证的域名注册商,自2002年成立以来,服务于全球108个国家和地区的客户,为数以万计的客户提供简洁,优惠,安全的域名注册以及管理服务。 Dynadot平台操作教程索引(包括域名邮…

AI Agent教育行业落地案例

【AI赋能教育】揭秘Duolingo背后的AI Agent,让学习更高效、更有趣! ©作者|Blaze 来源|神州问学 引言 随着科技的迅猛发展,人工智能技术已经逐步渗透到我们生活的各个方面。而随着AI技术的广泛应用,教育培训正引领着一场新的…

149.二叉树:二叉树的前序遍历(力扣)

代码解决 这段代码实现了二叉树的前序遍历,前序遍历的顺序是:访问根节点 -> 递归遍历左子树 -> 递归遍历右子树。以下是详细解释,包括各个部分的注释: // 二叉树节点的定义 struct TreeNode {int val; // 节…

php -v在cmd中正常显示 在vscode中却报错

效果展示 原因 在vscode中 终端是 PowerShell PowerShell 默认情况下它不会继承系统的PATH环境变量 解决方案 使用CMD作为终端 打开VSCode设置(File > Preferences > Settings 或 Ctrl,)。搜索 terminal.integrated.shell.windows。更改其值…