【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…

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

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

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

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

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

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

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…

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。更改其值…

springboot集成nacos

springboot集成nacos 1.版本2. POM依赖3. nacos服务3.1 下载nacos压缩包3.2 启动nacos 4. yaml配置5.Demo5.1 配置中心简单格式获取方式普通方式还可以再启动类上添加注解完成5.2 获取json格式的demo5.2 自动注册根据yaml配置 1.版本 nacos版本:2.3.2 springboot版本&#xff…

【已解决】使用StringUtils.hasLength参数输入空格仍然添加成功定价为负数仍然添加成功

Bug情景 今天在做功能测试时,发现使用使用StringUtils.hasLength()方法以及定价为负数时,添加图书仍然成功 思考过程 0.1 当时在做参数检验时用了spring提供的StringUtils工具包,百度/大数据模型说: 0.2…

Redis:redis基础

Redis Remote Dictionary Service即远程字典服务 一个基于内存的key-value结构数据库,在开发中常常作为缓存存储不经常被改变的数据 基于内存存储,读写性能高 在企业中应用广泛 Redis介绍 用C语言开发的开源高性能键值对数据库,可以达到10w的qps,可以存储丰富的value类型…

【ubuntu20】--- 定时同步文件

在编程的艺术世界里,代码和灵感需要寻找到最佳的交融点,才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里,我们将共同追寻这种完美结合,为未来的世界留下属于我们的独特印记。 【Linux命令】--- 多核压缩命令大全&…

VM虚拟机共享文件夹fuse: bad mount point `/mnt/hgfs‘: No such file or directory

报错显示挂载点 /mnt/hgfs 不存在,你需要先创建这个目录。可以按照以下步骤进行操作: 创建挂载点目录: sudo mkdir -p /mnt/hgfs 手动挂载共享文件夹: sudo vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other 确保每次启动时自动…

液氮罐内部会污染吗

液氮罐是一种常见的存储液态氮的设备,广泛应用于科研、生物医药、食品冷冻等领域。但是,人们对于液氮罐内部是否会产生污染一直存在疑问。 我们来看液氮罐内部可能的污染源。液氮罐内部主要存在以下几种潜在的污染来源:气体污染、杂质污染、…

C++ | Leetcode C++题解之第117题填充每个节点的下一个右侧节点指针II

题目: 题解: class Solution { public:void handle(Node* &last, Node* &p, Node* &nextStart) {if (last) {last->next p;} if (!nextStart) {nextStart p;}last p;}Node* connect(Node* root) {if (!root) {return nullptr;}Node *…

推券客CMS淘宝优惠券网站源码

推券客CMS淘宝优惠券网站源码是一个以PHPMySQL进行开发的PHP淘宝客优惠券网站。支持电脑站、手机站以及微信公众号查券。支持多级代理返利和阿里妈妈最新的渠道管理等功能。 五大优势 一、全开源 推券客cms网站程序数据库完全开源,目前市场上基本都是以下2种淘宝客系统 第一…