小白学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功能包,其中已经包含了:
- CMakeLists.txt: 定义package的包名、依赖、源文件、目标文件等编译规则,是package不可少的成分。
- 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 运行启动文件