首页 > Udacity机器人软件工程师课程笔记(十)-ROS-Catkin-包(package)和gazebo

Udacity机器人软件工程师课程笔记(十)-ROS-Catkin-包(package)和gazebo

包和gazebo仿真

1.添加包

(1)克隆simple_arm包

克隆现有的包并将其添加到我们新创建的工作区。

首先导航到src目录,然后从其github仓库克隆本课程 simple_arm 的包。

$ cd ~/catkin_ws/src
$ git clone https://github.com/udacity/simple_arm_01.git simple_arm

在这里插入图片描述

(2) 构建simple_arm包

在repo完成克隆之后,可以将目录更改为ros工作空间的顶级并构建新包。

$ cd ~/catkin_ws
$ catkin_make

在这里插入图片描述

(3)使用apt-get安装缺失的软件包

如果不知道这缺失软件包的名称,可以依靠搜索引擎找出所需包的确切名称。比如 controller_manager 是指 ROS Control 的ROS包,命令如下。

$ sudo apt-get install ros-kinetic-controller-manager

或者使用以下命令成功安装缺失的包:

$ source devel/setup.bash 
$ rosdep install simple_arm

2.roslaunch

roslaunch接收一个或多个XML配置文件(带有.launch扩展名),指定要设置的参数和要启动的节点,以及它们应运行的服务。

roslaunch 允许执行以下操作

  • 使用一个简单的命令启动ROS Master和多个节点
  • 在参数服务器上设置默认参数
  • 自动重新生成已经结束的进程

(1)要使用roslaunch,必须首先确保工作区已构建并已获取:

$ cd ~/catkin_ws
$ catkin_make

(2)构建工作区后,可以获取它的安装脚本:

$ source devel/setup.bash

(3)使用工作区,现在可以启动simple_arm:

$ roslaunch simple_arm robot_spawn.launch

出错1:网络配置错误

在这里插入图片描述

经查阅官网资料后给出解决方案

export ROS_HOSTNAME=LOCALHOST

在这里插入图片描述

程序便可正常运行

出错2:

长时间卡在加载界面

在这里插入图片描述

解决办法:

$ cd ~/
$ hg clone https://bitbucket.org/osrf/gazebo_models

下载完成后讲gazebo_models复制到~/.gazebo文件夹中,重命名为models

在这里插入图片描述

在上面程序运行时,可能出现以下警告线:

The controller spawner couldn’t find the expected controller_manager ROS interface.

ROS包具有两种不同类型的依赖关系:构建依赖关系和运行依赖关系。此错误消息是由于缺少运行时依赖性。

该rosdep工具将检查包的缺失依赖项,下载它们并安装它们。

要检查包中缺少的依赖项simple_arm:

$ rosdep check simple_arm

注意:为了使命令起作用,必须提供工作空间。

这将为您提供缺少的系统依赖项列表以及从何处获取它们。

要rosdep安装软件包,请从catkin工作区的根目录调用以下命令

$ rosdep install -i simple_arm

使用VM时可能会出现此命令的问题。如果是这种情况,请尝试:

sudo apt-get install ros-kinetic-gazebo-ros-control

当simple_arm再次启动时,机械臂不应再摆动。

在这里插入图片描述

3.更多包

所有ROS包都应该位于src目录下。

假设我们已经获得了ROS环境和catkin工作区,导航到src目录:

$ cd ~/catkin_ws/src

创建catkin包的语法很简单,

$ catkin_create_pkg  [dependency1 dependency2 …]

包的名称是任意的,但如果我们的catkin工作区中有多个具有相同名称的包,则会遇到麻烦。尽量使其具有描述性和独特性,而且名字最好不要过长。让我们尝试命名为“ first_package”,我们不会指定任何依赖项。按照惯例,包名称是小写的。

$ catkin_create_pkg first_package

在我们新创建的包中导航显示它只包含两个文件,CMakeLists.txtpackage.xml 。这是一个最小的工作catkin包。它是一个非常简单的文件,因为它没有做任何事情,但它满足catkin包的所有要求。这两个文件的主要功能之一是描述依赖关系以及catkin应如何与它们进行交互。

之前提到ROS包具有传统的目录结构。我们来看看一个更典型的包。

•	script(python可执行文件)
•	src(C ++源文件)
•	msg(用于自定义消息定义)
•	srv(用于服务消息定义)
•	include - >作为依赖项所需的头文件/库
•	config - >配置文件
•	launch - >提供更自动化的启动节点的方式
其他文件夹可能包括
•	urdf(通用机器人描述文件)
•	meshes(.dae(Collada)或.stl(STereoLithography)格式的CAD文件)
•	worlds(用于Gazebo仿真环境的XML文件)

在这里插入图片描述

4.小结

我在这几个笔记中主要介绍的内容,大概整理为下

  • 创建工作区
  • 添加包
  • 管理依赖关系
  • 排除构建错误。
  • Gazebo,这是一个强大的模拟工具

在接下来的笔记中,主要学习ROS节点等问题。官方给出的建议时多多查阅ROS Wiki。

更多相关: