ROS Hello World

这篇具有很好参考价值的文章主要介绍了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.进入ros_learning目录
cd ros_learning/src
# 2.编译工作空间
catkin_make

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,如下:

ROS Hello World,ROS,ROS,Hello World,教程,C++,Python,机器人

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

ROS Hello World,ROS,ROS,Hello World,教程,C++,Python,机器人

修改说明如下:

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 Hello World,ROS,ROS,Hello World,教程,C++,Python,机器人

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

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

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

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

ROS Hello World,ROS,ROS,Hello World,教程,C++,Python,机器人

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如下:

ROS Hello World,ROS,ROS,Hello World,教程,C++,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

ROS Hello World,ROS,ROS,Hello World,教程,C++,Python,机器人文章来源地址https://www.toymoban.com/news/detail-740185.html

到了这里,关于ROS Hello World的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [ROS 系列学习教程] ROS参数服务器(Param):通信模型、Hello World与拓展

    ROS 系列学习教程(总目录) 参数服务器在ROS中主要用于实现不同节点之间的数据共享。 参数服务器相当于是独立于所有节点的一个公共容器,可以将数据存储在该容器中,被不同的节点调用,当然不同的节点也可以往其中存储数据。 使用场景一般存储一些机器人的固有参数,

    2024年02月01日
    浏览(46)
  • Ros驱动Ur5e过程 | 手把手教程 | Ros驱动真实机器人Ur5e | Ros与Ur5e建立通讯 | Ubuntu20.04驱动Ur5e机器人

    UR5e连接过程 安装ROS 安装moveit 电脑端UR机器人驱动安装 UR实体机器人-软件安装与通信建立 urcap软件安装 电脑端ip问题 需要指定临时ip的情况 不需指定临时ip UR机器人IP 机器人的启动 驱动UR机器人 电脑-ip : 192.168.56.1 ur5e-ip :192.168.56.101 Ubuntu20.04 + Ur5e + 一根网线 + 一个U盘 省略,

    2024年02月12日
    浏览(83)
  • ROS的机器人协议:实现机器人之间的有效通信

    作者:禅与计算机程序设计艺术 ROS(Robot Operating System)是一个开源的机器人操作系统,其功能主要包括以下几个方面: 消息传递:ROS通过消息传递的方式进行通信,各个节点之间可以通过发布、订阅等方式互相通讯。 资源管理:ROS可以对进程、线程、资源进行管理,使得不

    2024年02月06日
    浏览(48)
  • ROS机器人实战,对标古月老师HRMRP机器人(一)——机器人总体方案设计

    咳咳!这个是自己的毕业设计,内容比较多就拆开发。设计实现了一款SLAM移动机器人,加机械臂完成视觉识别抓取的,同时还有语音识别控制、QT上位机控制、Web网页控制。前几年看古月老师的视频,看到古月老师设计的HRMRP(混合实时移动机器人平台),就也来对标一下!

    2024年04月28日
    浏览(38)
  • ROS:机器人系统仿真

    通过计算机对实体机器人系统进行模拟的技术,在 ROS 中,仿真实现涉及的内容主要有三:对机器人建模(URDF)、创建仿真环境(Gazebo)以及感知环境(Rviz)等系统性实现。 仿真在机器人系统研发过程中占有举足轻重的地位,在研发与测试中较之于实体机器人实现,仿真有如下几点的

    2024年02月15日
    浏览(50)
  • ROS实现机器人移动

    使用是github上六合机器人工坊的项目。 https://github.com/6-robot/wpr_simulation.git 运动模型如下所示:👇   机器人运动的消息包: 实现思路:👇   为什么要使用/cmd_vel话题。因为这个是约定俗成的,项目中订阅的就是这个话题,否则无法订阅到主题或者更改项目的订阅者的源码

    2024年02月14日
    浏览(48)
  • 【ROS 06】机器人系统仿真

    对于ROS新手而言,可能会有疑问:学习机器人操作系统,实体机器人是必须的吗?答案是否定的,机器人一般价格不菲,为了降低机器人学习、调试成本,在ROS中提供了系统的机器人仿真实现,通过仿真,可以实现大部分需求,本章主要就是围绕“仿真”展开的,比如,本章会

    2024年02月09日
    浏览(47)
  • ROS机器人入门-环境搭建

    ROS  是机器人操作系统(Robot Operating System)的英文缩写。  ROS  是用于编写机器人软件程序的一种具有高度灵活性的软件架构。 ROS 图标  : ROS  是开源的,是用于机器人控制的一种后操作系统,或者说次级操作系统。它提供类似操作系统所提供的功能,包含硬件抽象描述、

    2024年02月08日
    浏览(64)
  • ROS高效进阶第五章 -- 机器人语音交互之ros集成科大讯飞中文语音库,实现语音控制机器人小车

    从本文开始,我们将用两篇文章学习机器人语音交互。本文作为第一篇,将在ros上集成科大讯飞的中文语音库,实现语音控制机器人小车运动。至于语音识别和语音合成的原理,本文并不深究,读者可以自行搜索相关的文章介绍。这里提醒,本文的测试环境是ubuntu20.04 + ros

    2024年02月04日
    浏览(84)
  • python微信机器人制作教程+源码

    大多数人无法登录网页版,所以饶过它模拟电脑登录,这个模块一定记得安装: python微信机器人 b站:川川菜鸟 前面qq机器人教程也在b站有,关注一下博主吧。 比如给文件传输助手发送消息,并实时监控,代码: 效果如下: 比如要自动给张三发送消息,代码如下: 效果:

    2024年02月13日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包