[ROS 系列学习教程] ROS Hello World

在这里插入图片描述

ROS 系列学习教程(总目录)

万物始于Hello World,为了体验ROS,使用Hello World介绍ROS的简单使用。

1.1 Hello World工程简介

首先需要创建工程,流程为:

  1. 创建工作空间目录(即工程根目录,注意此时还不是ROS工作空间,只是一个目录)
  2. 初始化工作空间(即把当前目录初始化为一个ROS工作空间)
  3. 创建功能包(ROS基本单元,可以理解为一个功能模块,每个工程至少有一个功能包)
  4. 编辑源文件(写代码实现需求)
  5. 编辑编译配置文件(ROS1使用CMake编译系统,这里编辑CMakeList.txt文件)
  6. 编译工程(使用CMake编译ROS工程,生成可执行文件,即ros节点,下文均称作节点)

不只是Hello World,所有ROS工程都是这样的流程。

另外,目前ROS开发主要使用C++和Python语言,这里会分别实现。

1.2 ROS Hello World C++ 版

注:其中ros_learning是工作空间的自定义名称。

1.2.1 创建工作空间目录

# 递归创建工作空间目录
mkdir -p ros_learning/src

1.2.2 初始化工作空间

# 1.进入src目录
cd ros_learning/src
# 2.初始化工作空间
catkin_init_workspace

1.2.3 创建功能包

cd ros_learning/src
catkin_create_pkg hello_world std_msgs rospy roscpp

其中,hello_world:自定义功能包名称,

std_msgs rospy roscpp:功能包依赖,roscpp是C++实现的库,而rospy是python实现的库,std_msgs是ROS标准消息库

1.2.4 编辑源文件

ros_learning/src/hello_world/src目录下新增hello_world.cpp文件,文件内容如下:

#include "ros/ros.h"

int main(int argc, char **argv)
{
    // 初始化ros节点,"hello_world_cpp"为自定义节点名称
    ros::init(argc, argv, "hello_world_cpp");

    // 在控制台打印 hello world
    ROS_INFO("Hello World!");

    return 0;
}

1.2.5 编辑编译配置文件CMakeList.txt

由于新增了源文件hello_world.cpp,所以要配置该文件的编译规则。

找到ros_learning/src/hello_world/CMakeLists.txt中的Build,如下:

在这里插入图片描述

修改其中的add_executabletarget_link_libraries两项,如下:

在这里插入图片描述

修改说明如下:

add_executable(${PROJECT_NAME}_node src/hello_world.cpp)
# 生成可执行文件,其中 ${PROJECT_NAME}_node 代表节点的名称(也可以自定义,比如hello_world)
# src/hello_world.cpp 是源文件,也可以有多个。

target_link_libraries(${PROJECT_NAME}_node
  ${catkin_LIBRARIES}
)
# 链接库文件,因为我们使用了ros的 ros::init 和 ROS_INFO,所以需要链接相应的库才可以编译成功。
# ${PROJECT_NAME}_node 代表要执行链接库的节点名称
# ${catkin_LIBRARIES} 搜索库的路径

1.2.6 编译工程

进入到ros_learning目录,编译该工程

cd ros_learning
catkin_make

编译成功后,会在ros_learning目录下生成build 和devel。

1.2.7 运行节点

生成的节点在 devel/lib/hello_world 中,我们可以直接执行:

在这里插入图片描述

不过这样需要知道节点的具体路径,实际中操作较麻烦。

ROS提供了 rosrun 命令,可以根据包名和节点名,在任何目录执行。

但需要具备以下两个条件:

  • 启动 roscore
  • 进入到工作空间目录中,执行 source ./devel/setup.bash(为了让系统找到节点)

在这里插入图片描述

source ./devel/setup.bash 只对当前终端有效,新打开终端仍需再执行该命令,为了避免每次执行,可以把该命令加到当前用户的 .bashrc 文件中,该文件在用户的 home 目录下。

方法一:直接打开 ~/.bashrc 文件,在末尾添加 source 你的工作空间目录/devel/setup.bash ,保存。

方法二:使用命令 echo "source 你的工作空间目录/devel/setup.bash" >> ~/.bashrc

最后,使用命令 source ~/.bashrc 使修改生效。

1.3 ROS Hello World Python 版

1到3步骤上面已经做过,这里直接编辑源文件。

1.3.1 编辑源文件

进入到 ros_learning/src/hello_world 目录,新建 scripts 目录,在该目录中新增 hello_world.py,内容如下:

#! /usr/bin python

import rospy

if __name__ == "__main__":
    # 初始化ros节点,"hello_world_py"为自定义节点名称
    rospy.init_node("hello_world_py")

    # 在控制台打印 Hello World!
    rospy.loginfo("Hello World!")

1.3.2 编辑编译配置文件CMakeList.txt

找到ros_learning/src/hello_world/CMakeLists.txt中的Install,修改catkin_install_python如下:

在这里插入图片描述

修改说明:

catkin_install_python(PROGRAMS
  scripts/hello_world.py
  DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)
# 将脚本scripts/hello_world.py安装到指定位置
# PROGRAMS 关键字指定脚本程序
# DESTINATION 关键字指定安装位置
# ${CATKIN_PACKAGE_BIN_DESTINATION} 系统环境变量,存储当前功能包可执行文件安装路径

1.3.3 编译工程

进入到ros_learning目录,编译该工程

cd ros_learning
catkin_make

编译成功后,会在ros_learning目录下生成build 和devel。

1.3.4 运行节点

生成的脚本在 devel/lib/hello_world 中,同样可以直接运行,也可以使用 rosrun命令。

这里注意,无论直接运行还是使用rosrun命令,都需要先启动roscore

在这里插入图片描述

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

万俟淋曦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值