创建一个ROS Package

1.创建一个catkinPackage

   执行如下命令创建一个catkin包:

  cd~/ros/catkin_ws/src/
  catkin_create_pkg beginner_tutorials std_msgs rospy roscpp

   执行完会有如下提示:

  Created file beginner_tutorials/package.xml
  Created file beginner_tutorials/CMakeLists.txt
  Created folder beginner_tutorials/include/beginner_tutorials
  Created folder beginner_tutorials/src
  Successfully created files in/home/guochongxin/ros/catkin_ws/src/beginner_tutorials. Please adjust thevalues in package.xml.

   上面的命令是使用catkin_create_pkg命令来创建一个名为beginner_tutorials的包,其依赖于std_msgs、rospy和roscpp。

2.编译catkin工作空间和导入setup文件

   cd~/ros/catkin_ws/
  catkin_make
   . ~/ros/catkin_ws/devel/setup.bash

3.包依赖关系

a.First-order依赖(直接依赖)

  rospack depends1 beginner_tutorials

   执行后有如下返回值:

  roscpp
  rospy
  std_msgs

   跟创建包时设置的依赖包一致,这些包在package.xml中定义:

  roscd beginner_tutorials
  catpackage.xml

   执行后有如下一段:

  catkin
  roscpp
  rospy
  std_msgs

b.Indirect依赖(间接依赖)

  rospack depends1 rospy

   执行后有如下返回值:

  genpy
  roscpp
  rosgraph
  rosgraph_msgs
  roslib
  std_msgs

   执行如下命令可以递归侦测所有的依赖:

  rospack depends beginner_tutorials

   会返回如下值:

  cpp_common
  rostime
  roscpp_traits
  roscpp_serialization
  catkin
  genmsg
  genpy
  message_runtime
  gencpp
  geneus
  gennodejs
  genlisp
  message_generation
  rosbuild
  rosconsole
  std_msgs
  rosgraph_msgs
  xmlrpcpp
  roscpp
  rosgraph
  rospack
  roslib
  rospy

4.自定义包配置信息

   通过package.xml文件,有描述包信息的TAG:

  The beginner_tutorials package

   包名:

  beginner_tutorials

   版本号:

  0.0.0

   包维护人员信息:

  guochongxin@todo.todo">guochongxin

  License信息:

  TODO

   编译时的依赖信息:

  catkin
  roscpp
  rospy
  std_msgs

   运行时的依赖信息:

  roscpp
  rospy
  std_msgs

参考网址:ROS/Tutorials/CreatingPackage - ROS Wiki

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

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

相关文章

主机监控与审计系统是什么?这个功能让您的效率翻倍!

天下之事,皆需明察秋毫,方能运筹帷幄,决胜千里。 于信息之海,主机者,犹若疆土之基石,承载着数据之重,运行着系统之脉。 然,世事如棋局局新,网络之域,暗流涌…

缓存之Tair

介绍 ​ 在Tair出现之前的很长一段时间里,像redis、memcache这些知名NoSql数据库是不支持分布式的,在这样的背景下,由淘宝网自主开发并在2010.6开源的一个高性能、高扩展、高可靠分布式缓存,类似map的key/value结构,在…

开源模型应用落地-qwen2-7b-instruct-LoRA微调模型合并-Axolotl-单机单卡-V100(十)

一、前言 本篇文章将使用Axolotl去合并微调后的模型权重,通过阅读本文,您将能够更好地掌握这些关键技术,理解其中的关键技术要点,并应用于自己的项目中。 二、术语介绍 2.1. LoRA微调 LoRA (Low-Rank Adaptation) 用于微调大型语言模型 (LLM)。 是一种有效的自适应策略,…

【算法】粒子群优化

一、引言 粒子群优化算法(Particle Swarm Optimization, PSO)是一种基于群体智能的优化技术,由Eberhart和Kennedy在1995年提出。它模拟鸟群觅食行为,通过个体与群体的协作来寻找最优解。通过模拟一群粒子的运动来寻找最优解。每个…

qtcreator的vim模式下commit快捷键ctrl+g,ctrl+c没有反应的问题

首先开启vim后,CtrlG,CtrlC无法用 解决: 工具 -> 选项->FakeVim 转到Ex Command Mapping 搜索Commit 底栏Regular expression 输入commit (理论上可以是随意的单词) 设置好后,以后要运行&#x…

ETF指数通行红绿灯对接自动交易框架!添加绿灯品种进交易池!股票量化分析工具QTYX-V2.8.9...

前言 我们的股票量化系统QTYX在实战中不断迭代升级!!! 指数通行红绿灯作用就是识别出上升和下降趋势品种。对于上升趋势的品种,在红转绿时买入,绿转红时卖出,当识别出下降趋势后要果断离场! 在QTYX的2.8.7版本我们推出了“ETF全自…

【css】伪元素实现跟随鼠标移动的渐变效果

主要功能是在按钮上实现鼠标跟随渐变效果。每当用户将鼠标移动到按钮上时,按钮会显示一个以鼠标位置为中心的渐变效果。 1. 核心部分: 监听鼠标在元素内移动 监听鼠标在元素内移动,并触发该事件。 const handleMouseMove (e: MouseEvent) > {if (…

el-form中使用v-model和prop实现动态校验

如何在Vue的el-form中使用v-model和prop实现动态校验,包括多个变量控制校验、数组循环校验和字段级条件显示。通过实例演示了如何配合rules和自定义验证函数来确保表单的完整性和有效性。 公式: 动态校验项的v-model的绑定值 el-form的属性 :model的值 …

多系统萎缩不慌张,这些维生素是你的“守护神”✨

亲爱的朋友们,今天我们来聊聊一个可能不太为人熟知但至关重要的健康话题——多系统萎缩(MSA)。面对这样的挑战,除了医疗治疗,日常的营养补充也是不可或缺的一环。特别是维生素,它们在我们的身体中扮演着举足…

CuponesController : ControllerBase

目录 一、CuponesController : ControllerBase 二、CuponesController : ControllerBase 三、CuponesController : ControllerBase 四、CuponesController : ControllerBase 五、CuponesController : ControllerBase 一、CuponesController : ControllerBase namespace A…

FastGPT+ollama 搭建私有AI大模型智能体工作流-Mac

一、大模型工作流的优势 1. 降低任务门槛:工作流可以将复杂任务分解成多个小任务,降低每个任务的复杂度,从而减少对提示词和大模型推理能力的依赖。这样可以提升大模型处理复杂任务的性能和容错能力。 2. 提升任务效率:工作流可以…

【OpenHarmony】openharmony移植到RK3568------获取源码编译OpenHarmony源码

一、源码获取 源码获取有好几种方式,在这里直接在镜像网站下载源码,点击下面连接下载全量版本的OpenHarmony4.1 https://repo.huaweicloud.com/openharmony/os/4.1-Release/code-v4.1-Release.tar.gz 将源码放到自己建立的目录下解压,我放…

PHP轻创推客集淘客地推任务平台于一体的综合营销平台系统源码

🚀轻创推客,营销新纪元 —— 集淘客与地推任务于一体的全能平台🌐 🌈【开篇:营销新潮流,轻创推客引领未来】 在瞬息万变的营销世界里,你还在为寻找高效、全面的营销渠道而烦恼吗?&…

[Meachines] [Easy] jerry Tomcat用户暴力破解+war包webshell上传

信息收集 IP AddressOpening Ports10.10.10.95TCP:8080 $ sudo masscan -p1-65535 10.10.10.95 --rate1000 -e tun0 > /tmp/ports $ ports$(cat /tmp/ports | awk -F " " {print $4} | awk -F "/" {print $1} | sort -n | tr \n , | sed s/,$//) $ …

理解Flink数据流图

前言 在大数据处理的世界里,Apache Flink 已经成为处理实时数据流的一个强大工具。Flink 提供了一种高度灵活的方法来构建复杂的数据处理管道,其核心是所谓的 DataFlow 图模型。本文将带你深入了解 Flink DataFlow 图的基础知识,帮助你理解它是如何工作的以及如何利用它来构…

微服务——远程调用

为什么需要远程调用? 在微服务架构中,每个服务都是独立部署和运行的,它们之间需要相互协作以完成复杂的业务逻辑。因此,远程调用成为微服务之间通信的主要方式。通过远程调用,一个服务可以请求另一个服务执行某些操作或…

【前端面试】操作系统

进程与线程 进程线程定义是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位是进程中的一个实体,是CPU调度和分派的基本单位,共享进程的资源资源分配拥有独立的内存空间和系统资源共享进程的内存和资源开销…

Educational Codeforces Round 169 (Rated for Div. 2)

前言 电脑显示屏一闪一闪地感觉要拿去修了,比赛时重启了好几次。 手速场,E 题没学过 Sprague-Grundy 吃了亏,好在前四题都一发过才不至于掉分。 Standings:1214 题目链接:Dashboard - Educational Codeforces Round 16…

【架构设计】-- aarch(ARM) and X86

1、aarch(ARM) 架构 (1)操作系统支持:早期为 32 位操作系统,目前大部分都是 64 位操作系统 (2)全称:Advanced RISC Machine,由英国ARM Holdings plc公司开发 这种架构主要⽤于智能…

2.11、matlab中for循环,if else判断语句,break和continue用法以及switch case语句使用

1、前言 在MATLAB中,for循环用于迭代一个固定次数的循环。可以使用if else语句在循环中进行条件判断,根据条件的不同执行相应的代码块。break和continue可以用于控制循环的执行流程,break用于提前结束循环,而continue用于跳过当前循环迭代,继续下一次迭代。switch case语…