目录

1、创建工作空间并初始化
2、进入src创建ROS包并添加依赖
HelloWorld(C++版)
3、进入ROS包的 src目录编辑源文件
 4、编辑ROS包下的Cmakelist.txt文件
5、进入工作空间目录并编译
6、执行
 HelloWorld(Python版)
3、进入ROS包添加scripts目录并编辑python文件
 4、为Python文件添加可执行权限
5、编辑ROS包下的CmakeList.txt
6、进入工作空间目录并编译
 7、进入工作空间目录并执行


ROS中涉及的编程语言以C++和Python为主,ROS中的大多数程序两者都可以实现,这里简述下用C++和Python两种方案演示。

ROS中的程序即便使用不同的编程语言,实现流程也大致类似,以当前的HelloWorld程序为例,实现流程大致如下:

  1. 先创建一个工作空间
  2. 再创建一个功能包
  3. 编辑源文件
  4. 编辑配置文件
  5. 编译并执行

上述流程中,C++和Python只是在步骤3和步骤4的实现细节上有差异,其他流程基本一致。

1、创建工作空间并初始化

mkdir -p 自定义工作空间名称/src

cd 自定义工作空间名称

catkin_make

2、进入src创建ROS包并添加依赖

cd src

catkin_create_pkg 自定义ROS包名 roscpp rospy std_msgs 

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

注意:在ROS中,虽然实现同意功能时,C++和Python可以互换,但是具体选择哪种语言,需要视需求而定,因为两种语言各有特点,C++运行效率高但是编码效率低,而Python则反之,基于二者互补的特点,ROS设计者分别设计了roscpp和rospy库, 前者旨在成为ROS的高性能库,而后者一般用于对性能无要求的场景,旨在提高开发效率。

HelloWorld(C++版)

3、进入ROS包的 src目录编辑源文件

cd 自定义的包

C++源码实现(文件名自定义)

#include "ros/ros.h"
 
int main(int argc,char *argv[])
{
    //执行ros节点初始化
    ros::init(argc,argv,"hello")//hello是节点名称
    //创建ros节点句柄(非必须)
    ros::NodeHandle n;
    //控制台输出,hello world
    ROS_INFO("hello world");
 
    return 0;
 
}

 4、编辑ROS包下的Cmakelist.txt文件

add_executable(步骤3的源文件名
  src/步骤3的源文件名.cpp
)
target_link_libraries(步骤3的源文件名
  ${catkin_LIBRARIES}
)

5、进入工作空间目录并编译

cd 自定义的工作空间

catkin_make 

生成build devel

6、执行

先启动命令行1

 roscore

在启动命令行2:

cd 工作空间

source ./devel/setup.bash

rosrun 自定义包名 C++节点 

命令行输出:hello world 

PS:source ~/工作空间/devel/setup.bash可以添加进.bashrc文件,使用上更方便,可以在任何终端使用

添加方式1:直接使用gedit或vim编辑.bashrc文件,该文件是隐藏文件,使用crtl+h会出现,最后添加该内容

添加方式2:echo “source ~/工作空间/devel/setup.bash”>>~/.bashrc

也可以不添加,就是每次在新的一个终端都要执行source ./devel/setup.bash

 HelloWorld(Python版)

这里也是在前面工作空间和包创建好之后的工作:

3、进入ROS包添加scripts目录并编辑python文件

cd ros包名

mkdir scripts

新建python文件:文件名自定义

#! /usr/bin/env python
 
#指定python解释器
 
import rospy
 
#导入包
 
if __name__ == "__main__":
   #初始化节点
    rospy.init_node("Hello")
    rospy.loginfo("Hello World!!!")

 4、为Python文件添加可执行权限

chmod +x 自定义文件名.py

5、编辑ROS包下的CmakeList.txt

PS:这里noetic版本之前的可以不用配置

catkin_install_python(PROGRAMS scripts/自定义文件名.py

        DESTINATION $(CATKIN_PACKAGE_BIN_DESTINATION)        

6、进入工作空间目录并编译

cd 自定义工作空间

catkin_make 

 7、进入工作空间目录并执行

先启动命令行1

roscore

 在启动命令行2

cd 工作空间

source ./devel/setup.bash

rosrun 包名 自定义文件名.py

 输出结果:hello  world

PS:这里可以看出,这样用记事本的方式编辑代码,效率低下,且易出错,后面会介绍安装IDE工具来编写代码,提高编写代码效率,最常用的IDE就是VScode.