当先锋百科网

首页 1 2 3 4 5 6 7

小白学ROS

小白从头开始学习ROS,大三参加过大学生智能车大赛,但是比赛过后,就没有在进行学习,但是仍念念不忘它,或许魅力太大了,如今从新开始学习,就拿博客做个笔记吧。准备紧跟古月居前辈走下去了:https://www.guyuehome.com/

ROS笔记(1)

1.ros背景以及系统安装

直接参考古月居前辈的博客:链接: https://blog.csdn.net/hcx25909/article/details/8795043?spm=1001.2014.3001.5501.

2.创建工作空间和功能包

2.1创建工作空间

工作空间是一个储存工程开发的相关的文件夹。一般包含四个目录:
1)src:代码空间,开发工程中最常用的文件夹,用来储存所有ROS功能的源码文件。
2)build:编译空间,用来储存工作空间编译过程中产生的缓存的信息和中间文件。
3)devel:开发空间,用来放编译生成的文件夹,
4)install:安装空间,编译成功后,可以使用make install命令将可执行文件安装到该空间中,运行该空间的环境变量脚本,即可在终端运行这些可执行文件。

创建工作空间
// 创建一个名为catkin_ws的工作空间
$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src
//把当前目录初始化为一个ros工作空间。
$ catkin_init_workspace 

创建完成后,可以在工作空间根目录使用catkin_make命令来编译整个工作空间。

$ cd  ~/catkin_ws
$ catkin_make

编译的过程中。在工作空间的根目录里会产生build和devel两个文件夹及其中的文件。编译完成后,在devel文件夹中已经产了setup.*sh形式的环境变量设置脚本。使用source命令运行这些脚本文件,则工作空间中的环境变量可以生效。

souece ~/catkin_ws/devel/setup.bash

上面的语句,通过source命令设置的环境变量只能在当前终端生效,如果需要在所有终端生效,则需啊在终端的配置文件中加入环境变量设计。

echo "souece ~/catkin_ws/devel/setup.bash" >>~/.bashrc

为了确保环境变量生效,可以使用如下命令进行检查:

$echo $ROS_PACKAGE_PATH
2.1创建功能包

功能包:ROS软件中的基本单元,包含节点源码、配置文件、数据定义等。
创建一个功能包需要在catkin_ws/src下,用到catkin_create_pkg命令,用法是:

catkin_create_pkg my-package [depend1][depend2][depend3] 

depend1-3为依赖项,可以依赖多个软件包,比如常见的roscpp、 rospy、 std_msgs。
创建完成后,代码空间src中生成一个my-package功能包,其中已经包含了:

  1. CMakeLists.txt: 定义package的包名、依赖、源文件、目标文件等编译规则,是package不可少的成分。
  2. package.xml: 描述package的包名、版本号、作者、依赖等信息,是package不可少的成分
    然后回到工作空间的根目录下进行编译,并且设置环境变量:
$ cd  ~/catkin_ws
$ catkin_make
$ souece  devel/setup.bash

一般常见的功能包里根据自己的要求也会有其他的文件

src/: 存放ROS的源代码,包括C++的源码和(.cpp)以及Python的module(.py)
include/: 存放C++源码对应的头文件
scripts/: 存放可执行脚本,例如shell脚本(.sh)、Python脚本(.py)
msg/: 存放自定义格式的消息(.msg)
srv/: 存放自定义格式的服务(.srv)
models/: 存放机器人或仿真场景的3D模型(.sda, .stl, .dae等) urdf/: 存放机器人的模型描述(.urdf或.xacro)
launch/: 存放launch文件(.launch或.xml)

ROS包的常用命令

catkin_create_pkg     创建功能包
rospack                       获取功能包的信息
catkin_make               编译工作空间中的功能包
rosdep                          自动安装功能包依赖的其他包
roscd                            功能包目录跳转
roscp                            拷贝功能包文件
rosed                            编辑功能包中的文件
ros run                          运行功能包的可执行文件
ros launch                    运行启动文件