ROS学习记录(一)--简单的命令

这篇博客记录了ROS学习的初步过程,涉及ROS系统、文件系统、工作空间、catkin工具包的创建与编译,以及ROS节点、话题、服务和参数的基本操作。通过roslaunch启动多节点,rqt_graph展示系统结构,rostopic和rosservice进行话题和服务交互,同时介绍了调试工具rqt_console和rqt_logger_level。
摘要由CSDN通过智能技术生成

实验要用到kobuki,kinectv2,做三维重建,用到RGBDSLAMV2开源代码和ROS系统,边学边记录

ROS中文社区

ROS中有很多各种函数库和工具,我们提供了四种默认安装方式,你也可以单独安装某个特定软件包。

桌面完整版安装:(推荐) 包含ROS、rqt、rviz、通用机器人函数库、2D/3D仿真器、导航以及2D/3D感知功能。

sudo apt-get install ros-jade-desktop-full

快速了解文件系统概念

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

Manifest (package.xml): 清单,是对于’软件包’相关信息的描述,用于定义软件包相关元信息之间的依赖关系,这些信息包括版本、维护者和许可协议等。
文件系统工具
程序代码是分布在众多ROS软件包当中,当使用命令行工具(比如ls和cd)来浏览时会非常繁琐,因此ROS提供了专门的命令工具来简化这些操作。

使用 rospack

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

用法: rospack find [包名称]
示例:$ rospack find roscpp
应输出:YOUR_INSTALL_PATH/share/roscpp

使用 roscd

roscd是rosbash命令集中的一部分,它允许你直接切换(cd)工作目录到某个软件包或者软件包集当中。
用法:roscd [本地包名称[/子目录]]
示例: roscdroscpp使Unixpwd pwd
你应该会看到:YOUR_INSTALL_PATH/share/roscpp

roscd只能切换到那些路径已经包含在ROS_PACKAGE_PATH环境变量中的软件包,要查看ROS_PACKAGE_PATH中包含的路径可以输入:
echo ROS_PACKAGE_PATH

export ROS_PACKAGE_PATH=/home/ada/Code/rgbdslam_catkin_ws/src:/opt/ros/kinetic/share:/home/ada/kinect/catin_ws/src

加入路径,告诉ROS系统在哪里搜索更多的ROS包。
如果有相同名称的多个包,ROS会选择上出现的ROS_PACKAGE_PATH 第一个包。
如此就不需要进工作目录下输入命令了!
(想到上篇,其实只要把kinect2的包加入路径应该就可以了!!没知识真可怕)

roscd log

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

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

使用 roslsh

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

用法:rosls [本地包名称[/子目录]]
示例:$ rosls roscpp_tutorialsian应输出:cmake package.xml srv

建立工作空间

创建catkin程序包

1. 程序包的组成
my_package/
     CMakeLists.txt
     package.xml   package.xml文件提供有关程序包的元信息
     每个目录下只能有一个程序包。这意味着在同一个目录下不能有嵌套的或者多个程序包存在.

一个简单的工作空间:

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
2. 创建一个catkin程序包
cd ~/ada_ws/src

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

catkin_create_pkg beginner_tutorials std_msgs rospy roscpp

创建了名为brginner_tutorials文件夹,包含camkelists和package.cxml

catkin_create_pkg <package_name> [depend1] [depend2] [depend3]
3. 查看程序包的依赖关系

a. 直接依赖

rospack depends1 beginner_tutorials

(先source ../devel/setup.sh)这些依赖包保存在package.xml文件中
b. 间接依赖
比如rospy还有其它依赖包

rospack depends1 rospy

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

4. 自定义package.xml
  <description>The beginner_tutorials package</description>
描述标签

 <!-- One maintainer tag required, multiple allowed, one person per tag -->
  <!-- Example:  -->
  <!-- <maintainer email="jane.doe@example.com">Jane Doe</maintainer> -->
  <maintainer email="ada@todo.todo">ada</maintainer>
  维护标签

  <!-- One license tag required, multiple allowed, one license per tag -->
  <!-- Commonly used license strings: -->
  <!--   BSD, MIT, Boost Software License, GPLv2, GPLv3, LGPLv2.1, LGPLv3 -->
  <license>TODO</license>
  许可标签
  (对于本教程我们将使用BSD协议,因为ROS核心组件的剩余部分已经使用了该协议:
    <license>BSD</license>)

build_depend
buildtool_depend
run_depend
test_depend
依赖项标签

除了catkin中默认提供的buildtool_depend,所有我们列出的依赖包都已经被添加到build_depend标签中。
  <buildtool_depend>catkin</buildtool_depend>
  <build_depend>roscpp</build_depend>
  <build_depend>rospy</build_depend>
  <build_depend>std_msgs</build_depend>

在本例中,因为在编译和运行时我们需要用到所有指定的依赖包,因此还需要将每一个依赖包分别添加到run_depend标签中
  <run_depend>roscpp</run_depend>
  <run_depend>rospy</run_depend>
  <run_depend>std_msgs</run_depend>
编译程序包

先source /opt/ros/kinetic/setup.sh
可以认为catkin_make是在CMake标准工作流程中依次调用了cmake 和 make

编译指定程序包

catkin_make [make_targets] [-DCMAKE_VARIABLES=…]

多个一起编译
# In a catkin workspace
$ catkin_make
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值