ROS初级教程

ROS--构建系统 序言    ROS使用catkin构建系统,可以轻松使用与ROS相关的构建、功能包管理和功能包之间的依赖关系。它实际上是一种CMake(Cross Platform Make),可以跨平台使用,使用CMakeLists.txt描述。1、创建功能包命令:$ catkin_create_pkg [功能包名称][依赖功能包1][依赖功能包n]会自动生成CMakeList.txt和package.xml文... 阅读详情

1.安装并配置ROS环境

在安装ROS期间,你会看到提示说需要 source 多个setup.*sh文件中的某一个,或者甚至提示添加这条’source’命令到你的启动脚本里面。这些操作是必须的,因为ROS是依赖于某种组合空间的概念,而这种概念就是通过配置脚本环境来实现的。这可以让针对不同版本或者不同软件包集的开发更加容易。
如果你在查找和使用ROS软件包方面遇到了问题,请确保你已经正确配置了脚本环境。一个检查的好方法是确保你已经设置了像ROS_ROOT和ROS_PACKAGE_PATH这样的环境变量,可以通过以下命令查看:

$ export | grep ROS

如果发现没有配置,那这个时候你就需要’source’某些’setup.*sh’文件了。
如果你是通过ubuntu上的 apt 工具来安装ROS的,那么你将会在’/opt/ros//’目录中看到setup.*sh文件,然后你可以执行下面的source命令:

# source /opt/ros/<distro>/setup.bash

请使用具体的ROS发行版名称代替。

比如你安装的是ROS Indigo,则上述命令改为:

$ source /opt/ros/indigo/setup.bash

在每次打开终端时你都需要先运行上面这条命令后才能运行ros相关的命令,为了避免这一繁琐过程,你可以事先在.bashrc文件(初学者请注意:该文件是在当前系统用户的home目录下。)中添加这条命令,这样当你每次登录后系统已经帮你执行这些命令配置好环境。这样做也可以方便你在同一台计算机上安装并随时切换到不同版本的ROS(比如fuerte和groovy)。

此外,你也可以在其它系统平台上相应的ROS安装目录下找到这些setup.*sh文件。

2.创建ROS工作空间

catkin操作方法只适用于ROS Groovy及后期版本,对于ROS Fuerte及早期版本请选择rosbuild。
下面我们开始创建一个catkin 工作空间:

$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src

即使这个工作空间是空的(在’src’目录中没有任何软件包,只有一个CMakeLists.txt链接文件),你依然可以编译它:

$ cd ~/catkin_ws/
$ catkin_make

catkin_make命令在catkin 工作空间中是一个非常方便的工具。如果你查看一下当前目录应该能看到’build’和’devel’这两个文件夹。在’devel’文件夹里面你可以看到几个setup.*sh文件。source这些文件中的任何一个都可以将当前工作空间设置在ROS工作环境的最顶层,想了解更多请参考catkin文档。接下来首先source一下新生成的setup.*sh文件:

source devel/setup.bash

要想保证工作空间已配置正确需确保ROS_PACKAGE_PATH环境变量包含你的工作空间目录,采用以下命令查看:

$ echo $ROS_PACKAGE_PATH
/home/<youruser>/catkin_ws/src:/opt/ros/indigo/share:/opt/ros/indigo/stacks

2.ROS文件系统介绍

2.1预备工作

本教程中我们将会用到ros-tutorials程序包,请先安装:

$ sudo apt-get install ros-<distro>-ros-tutorials

将 替换成你所安装的版本(比如Jade、Indigo、hydro、groovy、fuerte等)。

快速了解文件系统概念

Packages: 软件包,是ROS应用程序代码的组织单元,每个软件包都可以包含程序库、可执行文件、脚本或者其它手动创建的东西。

Manifest (package.xml): 清单,是对于'软件包'相关信息的描述,用于定义软件包相关元信息之间的依赖关系,这些信息包括版本、维护者和许可协议等。 

2.2文件系统工具

程序代码是分布在众多ROS软件包当中,当使用命令行工具(比如ls和cd)来浏览时会非常繁琐,因此ROS提供了专门的命令工具来简化这些操作。

2.2.1使用 rospack

rospack允许你获取软件包的有关信息。在本教程中,我们只涉及到rospack中find参数选项,该选项可以返回软件包的路径信息。

用法:

# rospack find [包名称]

示例:

$ rospack find roscpp

应输出:

    YOUR_INSTALL_PATH/share/roscpp

如果你是在Ubuntu Linux操作系统上通过apt来安装ROS,你应该会准确地看到:

   /opt/ros/groovy/share/roscpp

2.2.2使用 roscd

roscd是rosbash命令集中的一部分,它允许你直接切换(cd)工作目录到某个软件包或者软件包集当中,用法:

# roscd [本地包名称[/子目录]]

示例

$ roscd roscpp

为了验证我们已经切换到了roscpp软件包目录下,现在我们可以使用Unix命令pwd来输出当前工作目录:

$ pwd

你应该会看到:

    YOUR_INSTALL_PATH/share/roscpp

你可以看到YOUR_INSTALL_PATH/share/roscpp和之前使用rospack find得到的路径名称是一样的。

注意,就像ROS中的其它工具一样,roscd只能切换到那些路径已经包含在ROS_PACKAGE_PATH环境变量中的软件包,要查看ROS_PACKAGE_PATH中包含的路径可以输入:

$ echo $ROS_PACKAGE_PATH

你的ROS_PACKAGE_PATH环境变量应该包含那些保存有ROS软件包的路径,并且每个路径之间用冒号分隔开来。一个典型的ROS_PACKAGE_PATH环境变量如下:

    /opt/ros/groovy/base/install/share:/opt/ros/groovy/base/install/stacks

跟其他路径环境变量类似,你可以在ROS_PACKAGE_PATH中添加更多其它路径,每条路径使用冒号’:’分隔。

子目录

使用roscd也可以切换到一个软件包或软件包集的子目录中。

执行:

$ roscd roscpp/cmake
$ pwd

应该会看到:

 YOUR_INSTALL_PATH/share/roscpp/cmake

2.2.3 roscd log

使用roscd log可以切换到ROS保存日记文件的目录下。需要注意的是,如果你没有执行过任何ROS程序,系统会报错说该目录不存在。

如果你已经运行过ROS程序,那么可以尝试:

$ roscd log

2.2.4 使用 rosls

rosls是rosbash命令集中的一部分,它允许你直接按软件包的名称而不是绝对路径执行ls命令(罗列目录)。

用法:

# rosls [本地包名称[/子目录]]

示例:

$ rosls roscpp_tutorials

应输出:

 cmake  package.xml  srv

2.2.5 Tab 自动完成输入

当要输入一个完整的软件包名称时会变得比较繁琐。在之前的例子中roscpp tutorials是个相当长的名称,幸运的是,一些ROS工具支持TAB 自动完成输入的功能。

输入:

# roscd roscpp_tut<<< 现在请按TAB键 >>>

当按TAB键后,命令行中应该会自动补充剩余部分:

$ roscd roscpp_tutorials/

这应该有用,因为roscpp tutorials是当前唯一一个名称以roscpp tut作为开头的ROS软件包。

现在尝试输入:

# roscd tur<<< 现在请按TAB键 >>>

按TAB键后,命令应该会尽可能地自动补充完整:

$ roscd turtle

但是,在这种情况下有多个软件包是以turtle开头,当再次按TAB键后应该会列出所有以turtle开头的ROS软件包:

 turtle_actionlib/  turtlesim/         turtle_tf/

这时在命令行中你应该仍然只看到:

$ roscd turtle

现在在turtle后面输入s然后按TAB键:

# roscd turtles<<< 请按TAB键 >>>

因为只有一个软件包的名称以turtles开头,所以你应该会看到:

$ roscd turtlesim/

3.创建ROS程序包

3.1 一个catkin程序包由什么组成?

一个程序包要想称为catkin程序包必须符合以下要求:

该程序包必须包含catkin compliant package.xml文件
    这个package.xml文件提供有关程序包的元信息。 

程序包必须包含一个catkin 版本的CMakeLists.txt文件,而Catkin metapackages中必须包含一个对CMakeList.txt文件的引用。
每个目录下只能有一个程序包。
    这意味着在同一个目录下不能有嵌套的或者多个程序包存在。 

最简单的程序包也许看起来就像这样:

    my_package/
      CMakeLists.txt
      package.xml

3.2在catkin工作空间中的程序包

开发catkin程序包的一个推荐方法是使用catkin工作空间,但是你也可以单独开发(standalone)catkin 软件包。一个简单的工作空间也许看起来像这样:

    workspace_folder/        -- WORKSPACE
      src/                   -- SOURCE SPACE
        CMakeLists.txt       -- 'Toplevel' CMake file, provided by catkin
        package_1/
          CMakeLists.txt     -- CMakeLists.txt file for package_1
          package.xml        -- Package manifest for package_1
        ...
        package_n/
          CMakeLists.txt     -- CMakeLists.txt file for package_n
          package.xml        -- Package manifest for package_n

在继续本教程之前请先按照创建catkin工作空间教程创建一个空白的catkin工作空间。

3.3 创建一个catkin程序包

本部分教程将演示如何使用catkin_create_pkg命令来创建一个新的catkin程序包以及创建之后都能做些什么。

首先切换到之前通过创建catkin工作空间教程创建的catkin工作空间中的src目录下:

# You should have created this in the Creating a Workspace Tutorial
$ cd ~/catkin_ws/src

现在使用catkin_create_pkg命令来创建一个名为’beginner_tutorials’的新程序包,这个程序包依赖于std_msgs、roscpp和rospy:

$ catkin_create_pkg beginner_tutorials std_msgs rospy roscpp

这将会创建一个名为beginner_tutorials的文件夹,这个文件夹里面包含一个package.xml文件和一个CMakeLists.txt文件,这两个文件都已经自动包含了部分你在执行catkin_create_pkg命令时提供的信息。

catkin_create_pkg命令会要求你输入package_name,如果有需要你还可以在后面添加一些需要依赖的其它程序包:

# This is an example, do not try to run this
# catkin_create_pkg <package_name> [depend1] [depend2] [depend3]

catkin_create_pkg命令也有更多的高级功能,这些功能在catkin/commands/catkin_create_pkg中有描述。

3.4 程序包依赖关系

3.4.1 一级依赖

之前在使用catkin_create_pkg命令时提供了几个程序包作为依赖包,现在我们可以使用rospack命令工具来查看一级依赖包。

(Jan 9, 2013) There is a bug reported and already fixed in rospack in groovy, which takes sometime until the change gets reflected on your computer. If you see a similar issue like this with the next command, you can skip to the next command.
$ rospack depends1 beginner_tutorials 
   std_msgs
    rospy
    roscpp

就像你看到的,rospack列出了在运行catkin_create_pkg命令时作为参数的依赖包,这些依赖包随后保存在package.xml文件中。

$ roscd beginner_tutorials
$ cat package.xml
    <package>
    ...
      <buildtool_depend>catkin</buildtool_depend>
      <build_depend>roscpp</build_depend>
      <build_depend>rospy</build_depend>
      <build_depend>std_msgs</build_depend>
    ...
    </package>
3.4.2 间接依赖

在很多情况中,一个依赖包还会有它自己的依赖包,比如,rospy还有其它依赖包。

(Jan 9, 2013) There is a bug reported and already fixed in rospack in groovy, which takes sometime until the change gets reflected on your computer. If you see a similar issue like this with the next command, you can skip to the next command.
$ rospack depends1 rospy
    genpy
    rosgraph
    rosgraph_msgs
    roslib
    std_msgs

一个程序包还可以有好几个间接的依赖包,幸运的是使用rospack可以递归检测出所有的依赖包。

$ rospack depends beginner_tutorials
cpp_common
rostime
roscpp_traits
roscpp_serialization
genmsg
genpy
message_runtime
rosconsole
std_msgs
rosgraph_msgs
xmlrpcpp
roscpp
rosgraph
catkin
rospack
roslib
rospy

3.5 自定义你的程序包

本部分教程将剖析catkin_create_pkg命令生成的每个文件并详细描述这些文件的组成部分以及如何自定义这些文件。

3.5.1 自定义 package.xml

自动生成的package.xml文件应该在你的新程序包中。现在让我们一起来看看新生成的package.xml文件以及每一个需要你注意的标签元素。

3.5.1.1描述标签

首先更新描述标签:

Toggle line numbers

   5   <description>The beginner_tutorials package</description>

将描述信息修改为任何你喜欢的内容,但是按照约定第一句话应该简短一些,因为它覆盖了程序包的范围。如果用一句话难以描述完全那就需要换行了。

3.5.1.2 维护者标签

接下来是维护者标签:

Toggle line numbers

   7   <!-- One maintainer tag required, multiple allowed, one person per tag --> 
   8   <!-- Example:  -->
   9   <!-- <maintainer email="jane.doe@example.com">Jane Doe</maintainer> -->
  10   <maintainer email="user@todo.todo">user</maintainer>

这是package.xml中要求填写的一个重要标签,因为它能够让其他人联系到程序包的相关人员。至少需要填写一个维护者名称,但如果有需要的话你可以添加多个。除了在标签里面填写维护者的名称外,还应该在标签的email属性中填写邮箱地址:

Toggle line numbers

   7   <maintainer email="you@yourdomain.tld">Your Name</maintainer>
3.5.1.3 许可标签

你应该选择一种许可协议并将它填写到这里。一些常见的开源许可协议有BSD、MIT、Boost Software License、GPLv2、GPLv3、LGPLv2.1和LGPLv3。你可以在Open Source Initiative中阅读其中的若干个许可协议的相关信息。对于本教程我们将使用BSD协议,因为ROS核心组件的剩余部分已经使用了该协议:

3.5.1.4 依赖项标签

接下来的标签用来描述程序包的各种依赖项,这些依赖项分为build_depend、buildtool_depend、run_depend、test_depend。关于这些标签的更详细介绍请参考Catkin Dependencies相关的文档。在之前的操作中,因为我们将 std_msgs、 roscpp、 和 rospy作为catkin_create_pkg命令的参数,所以生成的依赖项看起来如下:

Toggle line numbers

  27   <!-- The *_depend tags are used to specify dependencies -->
  28   <!-- Dependencies can be catkin packages or system dependencies -->
  29   <!-- Examples: -->
  30   <!-- Use build_depend for packages you need at compile time: -->
  31   <!--   <build_depend>genmsg</build_depend> -->
  32   <!-- Use buildtool_depend for build tool packages: -->
  33   <!--   <buildtool_depend>catkin</buildtool_depend> -->
  34   <!-- Use exec_depend for packages you need at runtime: -->
  35   <!--   <exec_depend>python-yaml</exec_depend> -->
  36   <!-- Use test_depend for packages you need only for testing: -->
  37   <!--   <test_depend>gtest</test_depend> -->
  38   <buildtool_depend>catkin</buildtool_depend>
  39   <build_depend>roscpp</build_depend>
  40   <build_depend>rospy</build_depend>
  41   <build_depend>std_msgs</build_depend>

除了catkin中默认提供的buildtool_depend,所有我们列出的依赖包都已经被添加到build_depend标签中。在本例中,因为在编译和运行时我们需要用到所有指定的依赖包,因此还需要将每一个依赖包分别添加到run_depend标签中:

Toggle line numbers

  12   <buildtool_depend>catkin</buildtool_depend>
  13 
  14   <build_depend>roscpp</build_depend>
  15   <build_depend>rospy</build_depend>
  16   <build_depend>std_msgs</build_depend>
  17 
  18   <exec_depend>roscpp</exec_depend>
  19   <exec_depend>rospy</exec_depend>
  20   <exec_depend>std_msgs</exec_depend>
3.5.1.5 最后完成的 package.xml

现在看下面最后去掉了注释和未使用标签后的package.xml文件就显得更加简洁了:

Toggle line numbers

   1 <?xml version="1.0"?>
   2 <package format="2">
   3   <name>beginner_tutorials</name>
   4   <version>0.1.0</version>
   5   <description>The beginner_tutorials package</description>
   6 
   7   <maintainer email="you@yourdomain.tld">Your Name</maintainer>
   8   <license>BSD</license>
   9   <url type="website">http://wiki.ros.org/beginner_tutorials</url>
  10   <author email="you@yourdomain.tld">Jane Doe</author>
  11 
  12   <buildtool_depend>catkin</buildtool_depend>
  13 
  14   <build_depend>roscpp</build_depend>
  15   <build_depend>rospy</build_depend>
  16   <build_depend>std_msgs</build_depend>
  17 
  18   <exec_depend>roscpp</exec_depend>
  19   <exec_depend>rospy</exec_depend>
  20   <exec_depend>std_msgs</exec_depend>
  21 
  22 </package>
3.5.2 自定义 CMakeLists.txt

到此,这个包含程序包元信息的package.xml文件已经按照需要完成了裁剪整理,现在你可以继续下面的教程了。catkin_create_pkg命令生成的CMakeLists.txt文件将在后续关于编译ROS程序代码的教程中讲述。

ROS维基小结(2)——ROS初级教程总结 ROS初级教程总结一,文件系统工具1.1 rospack1.2 roscd1.3 pwd1.4 roscd log1.5 rosls1.6 tab键自动补全二,创建一个ROS包2.1 创建一个功能包2.2包依赖三,ROS节点3.1 rosnode3.2 rosrun四,ROS Topics4.1 rqt_graph4.2 rostopic4.2.1 rostopic echo4.2.2 rosto... 阅读详情

相关推荐

【Autolabor初级教程】ROS机器人入门 第1章 环境搭建与HelloWorld实战

本文是Autolabor ROS机器人入门教程的第一章,详细指导初学者完成ROS环境搭建与HelloWorld实战。内容涵盖Ubuntu系统与ROS Noetic的安装配置、工作空间创建、以及分别使用C++和Python编写并运行第一个ROS节点。教程旨在通过动手实践帮助开发者快速上手ROS,为后续机器人应用开发奠定坚实基础。

weixin_29190651的博客 482

ros入门中文官方教程

http://wiki.ros.org/cn/ROS/Tutorials

天空中的太阳和月 2万+

【Autolabor初级教程】ROS机器人入门 第1章 环境搭建 个人学习笔记

OS中涉及的编程语言以C++和Python为主,ROS中的大多数程序两者都可以实现,C++运行效率高但是编码效率低,Python则反之。基于二者互补的特点,ROS设计者分别设计了roscpp与rospy库,roscpp旨在成为ROS的高性能库,而rospy则一般用于对性能无要求的场景,旨在提高开发效率。创建工作空间并初始化工作空间:一般形式为xxx_ws/src(意思是项目_工作空间workspace),下级目录src用于存放源码执行编译会在xxx_ws下生成两个文件夹build和devel。

qq_51247800的博客 3962

ROS中文学习笔记初级篇

ROS中文学习笔记初级篇安装配置ROS环境 安装配置ROS环境 安装ROS 此处安装的为kinetic。仅支持(ubuntu 14.10、ubuntu 16.04 和debian 的系统包) 注意:如果你是通过apt这样的命令安装ros,那么这些包不能也不应该被用户编辑。你应该在你可以访问的文件夹内工作,比如你的home文件夹。防止破坏安装文件。 1> 配置UBUNTU存储库 2> ...

weixin_40588009的博客 284

STM32F103xx / STM32F429VET6最小系统原理图

心血来潮想试一下STM32F4系列和F1系列在编程上有什么差别,手头没有开发板,本着能勤俭节约的原则自己先做一块看看能不能成,看了一下STM32F429VET6的芯片在F429xx中最便宜,对照着数据手册绘制了原理图画了PCB,目前打板中,焊接完如果跑不通回来修改文章。这里我们可以看到,VDD是标准工作电压,VDDA是模拟工作电压,且VDDA必须与VDD等电位,VBAT是备份工作电压,一般接纽扣电池电源,如果存在VREF+引脚,则要求VDDA-VREF+ < 1.2V。截图下来比较糊,不知道为什么。

m0_51294753的博客 1万+

AMCL实战:如何用2D激光雷达在ROS中实现稳定重定位(附参数调优指南)

本文深入解析了在ROS中使用2D激光雷达实现稳定AMCL重定位的实战技巧与参数调优指南。针对粒子发散、位姿跳变等常见问题,文章从算法核心原理出发,系统讲解了初始化、粒子滤波、运动与观测模型等关键参数的分类与调优策略,并提供了一套经过验证的调优框架,帮助开发者提升移动机器人在已知地图环境下的定位鲁棒性和稳定性。

sql99的博客 135

关于ros的初级操作

关于ros的初级操作 1.如何查看ubuntu版本: shift+ctrl+t,开启一个终端,在终端输入:cat /etc/issue   版本便显示出来了; 结果:Ubuntu 18.04.1 LTS 2.如何查看ros版本: shift+ctrl+t,开启一个终端,在终端输入:roscore   版本便显示出来了; 结果:  PARAMETERS /rosdistro: melodic /ro...

hongju_tang的博客 413

用FPGA在HDMI上显示自定义字符:从COE文件到OSD叠加的保姆级教程

本文详细介绍了如何在FPGA上实现HDMI视频流的OSD字符叠加技术,从COE文件生成到动态区域控制的完整流程。通过Verilog代码示例和实战技巧,帮助开发者掌握字符ROM设计、像素坐标追踪和动态混合等核心技术,适用于视频监控、系统状态显示等应用场景。

weixin_28720767的博客 231

ROS初级教程学习笔记

ROS学习笔记一、创建ROS软件包1. catkin工作空间中的软件包2. 创建catkin软件包3. 构建catkin工作区并生效配置文件二、ROS节点1. 概念2. rosnode使用三、ROS话题 说明:<>中的内容表示必选项,[]中的内容表示可选项目 一、创建ROS软件包 来源:http://wiki.ros.org/cn/ROS/Tutorials/CreatingPackage 1. catkin工作空间中的软件包 workspace_folder/ -- WORKSPACE

u011609063的博客 1050

【笔记6】SP3485自动收发电路设计分析

则TXD路为1,MOS管导通,2/3引脚为0,芯片实际上事与愿违的进入了接收模式。但是,由于我们采用单根双绞线与上位机通信,在数据发出去前数据线上没有任何信号传输,所以AB处于高阻态,进而受到R1下拉与R2上拉的影响,差分信号为1,所以输出1;此外,RXD内路也被上拉,485总线B端上拉,A端下拉。此时TXD由于没有数据传输,所以一直处于1的状态,因而MOS管导通,2/3引脚为0,芯片处于正常接收状态。总而言之就是,RE#与 DE只能有一个是1,1代表微控制器向外发送,0代表微控制器接收。

Haytham233的博客 3138

Maxwell参数化建模

MAXWELL 2019 R3 参数化建模 参数化建模的优势 所谓参数化,就是在电机本体设计中涉及到的各类参数变量化,而每个变量之间又存在一定的制约关系,这样只需修改其中某个或者某些变量就可以做到对整个电机模型合理地改动。 参数化举例 以表贴式电机为例,先画电机定子,如上所示,依次进行后会弹出下面的选项框 上图就是描述电机尺寸的各类参数,接下来进行参数化。 回车ENTER,并给变量ds赋值。 赋值好后,回车ENTER 左下角properties里面就有我们新建立的变量ds了。 继续将剩余的参数

qq_41387280的博客 1万+

一文带你详细了解ROS(初级教程)

本文介绍了ROS(机器人操作系统)的文件系统结构和核心开发工具。主要内容包括: ROS文件系统组成:软件包(Packages)作为基本单元,包含程序库、可执行文件等;Manifests(package.xml)用于定义依赖关系和元信息。 文件系统工具: rospack:查找软件包路径 roscd:快速跳转到包目录 rosls:查看包内文件结构 支持TAB补全功能提高效率 Catkin软件包:基于CMake扩展的编译系统,通过package.xml管理依赖,取代旧版rosbuild系统。

2301_80215401的博客 1692

Vue3 - 超详细最新 wangEditor V5 富文本编辑器安装引入及使用教程,提供工具栏配置、基础富文本功能、API使用示例教程等(新手小白快速引入并植入到项目中)

vue3,wangEditorv5富文本编辑器,wangEditorv5官方文档,vue3最新安装wangEditorv5富文本详细使用教程,vue3使用wangEditorv5编辑器示例代码,vue3网站网页安装植入富文本编辑器教程,vue3wangEditor使用api,vue3安装富文本控制台出现报错如何解决,vue3wangEditor-v5工具栏配置,vue3中使用富文本编译器wangEditor5的方法,wangeditor5在vue3中的全使用过程,vue3超详细最新wangedi

🏆 前端领域优质创作者 4253

Ubuntu14.04_ROS学习笔记(3)ROS官方初级教程遇到的错误

学习ROS一定都是先去看ROS的wiki官方教程 http://wiki.ros.org/ 在学习初级教程的时候也会遇到许多的报错和提示,有一些能够修正过来,有一些要去百度好久才能够修正,因为官网的不一定是绝对正确的~ 这是我的第三次复习笔记,想起来在学习官网的时候也发现了有些坑,在这填了吧,官网教程至少要运行好几遍才能熟悉整个ROS的构架和工作流程,这样也对其运行机理有一定的...

MIR.X的博客 329

MVSNet (pytorch版) 搭建环境 运行dtu数据集重建 实操教程(图文并茂、超详细)

MVSNet (pytorch版) 代码注释版 下载 (注释非常详细,代码结构有所调整,使用起来更方便) 深度学习三维重建 MVSNet-ECCV-2018 (源码、pytorch版、原文+注释、译文+批注)Meshlab查看三维点云时 ,使用技巧总结。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 2938

cherry使用MCP协议Streamable HTTP实践

摘要:Streamable HTTP协议是针对传统HTTP+SSE传输方式的改进方案,解决了连接恢复、服务器资源占用和单向通信等问题。该协议基于普通HTTP实现,支持无状态服务器、纯HTTP服务和多轮对话,同时兼容现有基础设施。通过演示展示了服务端和客户端的配置方法,体现了其灵活性和实用性。MCP(多轮对话协议)作为扩展LLM能力的关键技术,代表着未来交互式AI的发展趋势。

全网120W+关注AI拉呱,专注人工智能以及科技前沿! 563

【Autolabor初级教程】ROS机器人入门 第 3 章 ROS通信机制进阶 个人学习笔记

这里真是把坑都踩完了😵🙃😫编写头文件A.创建.h文件务必!放在!include/包名!放在包名这里!再右键新建.h文件B.编写.h文件内容格式如下(这里只声明):// 注意class声明结束有一个;/*声明namespace|--class|--run*/public:void run();#endif编写可执行文件(同时也是源文件)编写前请先编辑,否则在include导入自定义包时会报错复制include的路径,加上/**

qq_51247800的博客 1490

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

ros2初级教程

整理自ros2 WiKi

chch2010523的博客 547

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

ROS ——初级教程常见问题汇总

1.linux中用root用户source profile提示权限不够 涉及到文件权限问题,文件目录 ~/etc/profile 为此文件添加读写权限。(chmod加到最大就完事了) 查看权限 ls -ld /etc/profile 修改权限 sudo chmod 755 /etc/profile #刷新环境 方法一 source~/tutorial_ws...

qq_41958529的博客 1106

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

ROS Tutorials 初级教程学习总结 1 - 4

ROS Tutorials 初级教程学习总结 1 - 4 ROS wiki 教程 1. 安装并配置ROS环境 1.1 安装ROS 见另一篇博客 Ubuntu16.04 ROS-Kinetic 安装 1.2 管理环境 通过类似apt的软件包管理器安装ROS软件包时会生成setup.*sh文件,*如果是通过 Ubuntu 上的 apt 工具来安装ROS的,那么将会在 ‘/opt/ros/<版本名>/’ 目录中看到 setup.sh 文件。如果是kinetic版本,则执行 $ souce /opt/

SZZ的博客 483

ROS官网初级教程学习总结(5-9)

教程网址:http://wiki.ros.org/cn/ROS/Tutorials。 本博客为5-7小节。理解 ROS节点图概念概述 Nodes:节点,一个节点即为一个可执行文件。节点可以发布或接收一个话题,也可以提供或使用某种服务。 Messages:消息,消息是一种ROS数据类型,用于订阅或发布到一个话题。 Topics:话题,节点可以发布消息到话题,也可以订阅话题以接收消息。 Master

NodYoung 1433

【Autolabor初级教程】ROS机器人入门 第 2 章 ROS通信机制 个人学习笔记

作用:类似于C语言的结构体在自定义msg时,可以适用的字段类型有自定义msg实现功能包下新建msg目录,添加文件xxx.msg(注意后缀)内容每行定义字段类型和字段名即可,回车换行uint16 age修改,添加以下内容修改(没有的内容增加,被注释的解开)编译编译后会在devel/include生成对应的头文件后续代码使用自定义msg的准备工作配置将自定义msg的头文件所在路径添加到即可发布者// 1.包含头文件 #include "demo_pub_sub/person.h"

qq_51247800的博客 1707

ROS初级教程 cmake cmakelist.txt 的编写教程

摘自:https://www.cnblogs.com/wanghuixi/p/7044487.html ROS初级教程 cmake cmakelist.txt 的编写教程 有很多 的时候我们使用别人的程序包。然后添加东西的时候缺少什么东西,会使程序编译不过去,甚至无法运行,接下来介绍一下cmakelist.txt 的每一行的作用。为了以后添加和修改方便。 2.整体结构和订购 您的CMakeLists.txt文件必须遵循此格式,否则您的包将无法正确构建。 配置中的顺序计数。 所需CMake版...

自主无人机 PX4 ROS SLAM 路径规划 MVS等技术分享 1599

ROS初级教程1---官方ROS文件系统导览

文章目录1.文件系统概念简介2.文件系统工具2.1使用rospack2.2使用roscd2.2.1 子目录2.2.2 roscd log2.3 使用rosls2.3 Tab补全 1.文件系统概念简介 •软件包(packages):包是ROS代码的软件组织单元,每个软件包都可以包含程序库、可执行文件、脚本或其他构建。 •Manifests(package.xml):清单(Manifest)是对软件包的描述。它用于定义软件包之间的依赖关系,并记录有关软件包的元信息,如版本、维护者、许可证。 2.文件系统工具 程

LoongEmbedded的专栏 2165
上一篇: ROS入门教程
Sandeldeng
博客等级 码龄11年 38粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值