《ROS机器人开发实践》 第三章ROS基础

  这部分是ROS的基础部分,主要目的是帮助初学者了解ROS框架,并且熟悉ROS中的关键概念以及实现方法。 


  •  工作空间和功能包的创建
  • 继承开发环境的搭建
  • 话题和服务的实现方法
  • ROS中的命名空间及解析方法
  • ROS分布式通信的方法

3.1 第一个ROS例程——小乌龟仿真

3.1.2  控制乌龟运动

1. roscore

打开终端,输入上述命令,调用运行ROS的节点管理器——ROS Master

2.  rosrun turtlesim turtlesim_node

 打开一个新的终端,输入上述命令,调用turtlesim仿真器节点

3. rosrun turtlesim turtle_teleop_key

当小乌龟仿真界面出现后,输入上述命令,调用键盘控制节点

最终效果如下: 


3.2 创建工作空间和功能包

3.2.1工作空间:

  • src:代码空间(Source Space),开发过程中最常用的文件夹。
  • build:编译空间(Build Space),用来存储工作空间编译过程中产生的缓存信息和中间文件
  • devel:开发空间(Development Space),用来放置编译生成的可执行文件。
  • install:安装空间(Install Space)。

3.2.2创建工作空间:

使用系统命令创建工作空间目录,运行ROS的工作空间初始化命令。

mkdir -p 自定义空间名称/src
cd 自定义空间名称
catkin_make

 

3.3 工作空间的覆盖

  ROS允许多个工作空间并存,每个工作空间的创建、编译、运行方法都相同,用户可以在不同项目的工作空间中创建所需要的功能包。但有一种情况:不同的工作空间中可能存在相同命名的功能包,如果这些工作空间的环境变量都已经设置,那么在使用该功能包的时候,是否会发生冲突?如果不会,ROS又会帮助我们选择哪一个功能包?

3.3.1ROS中工作空间的覆盖

ROS的工作空间有一个机制—Overlaying,即工作空间的覆盖。所有工作空间的路径会依次在ROS_PACKAGE_PATH环境变量中记录,当设置多个工作空间的环境变量后,新设置的路径在ROS_PACKAGE_PATH中会自动放置在最前端。在运行时,ROS会优先查找最前端的工作空间中是否存在指定的功能包,如果不存在,就顺序向后查找其他工作空间,直到最后一个工作空间为止。
可以通过env  | grep ros命令查看所有ROS相关的环境变量,其中包含我们最为关心的ROS_PACKAGE_PATH。如下图所示:

 3.3.2 工作空间覆盖案例 

  • 安装ros-kinetic-ros-tutorials 功能包

sudo apt-get install ros-kinetic-ros-tutorials

 安装完成后使用rospack命令查看功能包所放置的工作空间,如下图所示。

roscpp_tutorials是ros-tutorials中的一个功能包。此时该功能包存在于ROS的默认工作空间下。接下来,我们在自己的catkin_ws工作空间中也放置一个同名的功能包,可以在GitHub上下载ros_tutorials功能包的源码:

cd ~/catkin_ws/src   #进入工作空间之前要确保自己已经成功创建了工作空间

git clone git://github.com/ros/ros_tutorials.git 

 然后编译catkin_ws工作空间并设置环境变量:

cd ~/catkin_ws

catkin_make

source ./devel/setup.bash

环境变量设置成功后再来查看roscpp_tutorials功能包的位置。现在,ROS查找到roscpp_tutorials功能包就在我们创建的catkin_ws工作空间下,这是因为在ROS_PACKAGE_PATH环境变量中,catkin_ws工作空间的路径在系统工作空间路径之前。
这种覆盖机制可以让我们在开发过程中轻松替换系统或其他工作空间中原有的功能包,但是也存在一些潜在的风险,比如在如下结构的两个工作空间中:

catkin_ws/
        src/
                package_a

                package_b        #depends on package_a

        devel/

                …
overlay_ws/
        src/
                package_a

        devel/

                …

 如果工作空间overlay_ws中的package_a功能包覆盖了catkin_ws中的package_a,由于package_b功能包是唯一的,而且无法知晓所依赖的package_a是否发生变化,从而导致package_b功能包产生潜在的风险。


 

3.4 搭建Eclipse开发环境

3.5 RoboWare简介

在ROS开发中,可以使用多种编译器对代码进行修改,如Ubuntu系统自带的gedit、vi等。为了方便项目的开发,很多开发者也会使用IDE进行开发,如Eclipse、Vim、Qt Creator、Pycharm、Robo Ware等,具体配置也可以参考官方wiki:http://wiki.ros.org/IDEs.

该书在这两节只是以Eclipse为例介绍了ROS的IDE搭建过程,以及Robo Ware的安装和配置过程,因此这里就不赘述了。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值