ROS2

在ROS中的编程语言主要为C++和Python,ROS中的大部分程序二者都可以实现。不同的语言的实现流程也类似,主要有以下几点:

1、创建工作空间

2、创建功能包

3、配置源文件

4、编辑配置文件

5、编译执行

接下来通过一个HelloWorld项目简单熟悉一下具体流程。

创建工作空间并初始化

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

上述命令,首先会创建一个工作空间以及一个 src 子目录,然后再进入工作空间调用 catkin_make命令编译。

image-20220610114607184

创建 ros 包并添加依赖

1
2
cd src
catkin_create_pkg 自定义ros包名 roscpp rospy std_msgs

上述命令,会在工作空间下生成一个功能包,该功能包依赖于 roscpp、rospy 与 std_msgs,其中roscpp是使用C++实现的库,而rospy则是使用python实现的库,std_msgs是标准消息库,创建ROS功能包时,一般都会依赖这三个库实现。

image-20220610114705800

在ROS中,虽然使用python和c++都可以实现大部分功能,但具体实现还要根据开发实际而定。根据语言特性,C++运行效率高但编码效率低,而Python则反之,基于二者互补的特点,ROS设计者分别设计了roscpp与rospy库,前者旨在成为ROS的高性能库,而后者则一般用于对性能无要求的场景,旨在提高开发效率。

C++ 实现HelloWorld

编辑源文件

进入之前建立的ros包的src目录下后新建cpp文件编写代码

image-20220610120619909

编辑配置文件

编辑 ros 包下的 Cmakelist.txt文件,取消add_executable和target_link_libraries的注释,并修改项目名以及源代码名。

image-20220610121332164

编译

返回工作空间目录,执行catkin_make进行编译。

image-20220610121627843

执行

首先执行roscore启动ros

image-20220610121836976

启动成功后,在工作空间目录下执行source ./devel/setup.bash刷新环境变量

image-20220610122152099

执行源代码文件rosrun 功能包名 项目名(Cmakelist.txt中定义)

image-20220610122500498

Python 实现HelloWorld

添加scripts目录

1
2
cd ros包
mkdir scripts

编辑python源文件

scripts目录内新建python文件,编辑源码

image-20220610162924869

源码编辑好后保存,执行chmod +x 文件名.py,赋予执行权限。

编辑配置文件

编辑 ros 包下的 Cmakelist.txt文件,取消catkin_install_python注释并修改文件名。

image-20220610165601644

编译

返回工作空间目录,执行catkin_make进行编译。

image-20220610165723612

执行

整个执行过程与c++类似

1、首先执行roscore启动ros

2、启动成功后,在工作空间目录下执行source ./devel/setup.bash

3、执行源代码文件```rosrun 功能包名 python文件

image-20220610170039388

环境变量配置

在之前的示例中,执行源代码之前需要先执行source ./devel/setup.bash才能在当前终端中找到功能包。

为了方便运行,可以将source ~/工作空间/devel/setup.bash添加进.bashrc文件。

  • 方式一:直接使用gedit或vi编辑.bashrc文件,添加该条内容
  • 方式二:echo "source ~/工作空间/devel/setup.bash" >> ~/.bashrc