ROS入门-第 1 章 ROS概述与环境搭建

这篇具有很好参考价值的文章主要介绍了ROS入门-第 1 章 ROS概述与环境搭建。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

第 1 章 ROS概述与环境搭建

1.1 ROS简介

1.1.1 ROS概念

1.1.2 ROS设计目标

1.1.3 ROS发展历程

1.3 ROS快速体验

1.3.1 HelloWorld实现简介

1.3.2 HelloWorld(C++版)

步骤 1:创建工作空间

步骤 2:创建发布者节点

步骤 3:创建订阅者节点

步骤4:C++版CMakeLists.txt配置

步骤 5:编译和运行

1.3.3 HelloWorld(Python版)

步骤 1:创建工作空间

步骤 2:创建发布者节点

步骤 3:创建订阅者节点

步骤4:Python版CMakeLists.txt配置

步骤 5:编译和运行


第 1 章 ROS概述与环境搭建

1.1 ROS简介

ROS(Robot Operating System)是一个开源的机器人操作系统,旨在为机器人开发提供一套强大的工具和框架。它采用分布式计算模型,允许开发者构建复杂的机器人应用程序。ROS提供了一系列的库、工具和约定,用于简化机器人软件的开发、测试和部署。

1.1.1 ROS概念
  • 节点(Nodes):ROS中的基本执行单元,每个节点都是一个独立的进程,可以执行特定的任务。
  • 话题(Topics):节点通过话题进行异步通信,一个节点可以发布消息到话题,其他节点可以订阅来接收消息。
  • 服务(Services):节点可以提供服务,并在其他节点请求时响应特定的任务。
  • 参数(Parameters):ROS节点可以使用参数来存储配置信息,这些参数可以在运行时进行修改。
1.1.2 ROS设计目标

ROS的设计目标着重于以下几点:

  • 模块化:ROS鼓励开发者将系统拆分为多个模块,每个模块都是一个独立的节点,可以并行开发和测试。
  • 重用性:ROS支持代码和功能的重用,这有助于加快开发速度。
  • 工具丰富:ROS提供了一系列的工具,包括可视化工具、调试工具、仿真工具等,用于开发和调试机器人应用程序。
  • 分布式计算:ROS采用分布式计算模型,允许节点在不同的计算机上运行,通过网络通信进行交互。
1.1.3 ROS发展历程

ROS从最初的构想逐步发展为一个广泛应用的机器人操作系统:

  • 初期阶段:ROS最早由斯坦福大学的人工智能实验室开发,作为一个实验性项目。
  • 开源发布:2007年,ROS作为开源项目发布,逐渐吸引了全球的机器人开发者和研究人员。
  • 发展壮大:随着时间的推移,ROS不断增加了新的功能、库和工具,广泛应用于各种机器人领域,如工业、服务、农业等。
  • 版本迭代:ROS的不同版本(如Kinetic、Melodic、Noetic等)推出,不断引入新特性,改进性能,提高稳定性。

1.3 ROS快速体验

在本章中,我们将通过一个简单的HelloWorld例子来体验ROS的基本功能和流程。我们将分别使用C++和Python来实现HelloWorld示例,以展示ROS在不同编程语言下的使用方法。

1.3.1 HelloWorld实现简介

HelloWorld示例是一个经典的起始点,它帮助我们了解如何创建ROS节点、发布消息到话题以及订阅话题来接收消息。我们将创建两个节点,一个发布者节点负责发布消息,一个订阅者节点负责接收消息。

1.3.2 HelloWorld(C++版)

步骤 1:创建工作空间

首先,在您的工作目录中创建一个新的ROS工作空间:

mkdir -p ~/ros_hello_world_ws/src
cd ~/ros_hello_world_ws/src
catkin_init_workspace
cd ..
catkin_make
步骤 2:创建发布者节点

src文件夹下创建一个新的包并切换到该包:

cd ~/ros_hello_world_ws/src
catkin_create_pkg hello_world_cpp roscpp std_msgs

src文件夹中创建一个新的C++文件,例如publisher.cpp,并编写发布者节点的代码:

#include <ros/ros.h>
#include <std_msgs/String.h>

int main(int argc, char **argv) {
    ros::init(argc, argv, "hello_world_cpp_publisher");
    ros::NodeHandle nh;
    ros::Publisher pub = nh.advertise<std_msgs::String>("hello_topic", 10);

    ros::Rate rate(1);

    while (ros::ok()) {
        std_msgs::String msg;
        msg.data = "Hello, ROS from C++!";
        pub.publish(msg);

        ros::spinOnce();
        rate.sleep();
    }

    return 0;
}
步骤 3:创建订阅者节点

在同一包中创建另一个C++文件,例如subscriber.cpp,并编写订阅者节点的代码:

#include <ros/ros.h>
#include <std_msgs/String.h>

void messageCallback(const std_msgs::String::ConstPtr &msg) {
    ROS_INFO("Received: %s", msg->data.c_str());
}

int main(int argc, char **argv) {
    ros::init(argc, argv, "hello_world_cpp_subscriber");
    ros::NodeHandle nh;
    ros::Subscriber sub = nh.subscribe("hello_topic", 10, messageCallback);

    ros::spin();

    return 0;
}
步骤4:C++版CMakeLists.txt配置

在C++版的示例中,假设您的工作空间位于~/ros_hello_world_ws,ROS软件包的名称是hello_world_cpp。以下是CMakeLists.txt文件的配置:

cmake_minimum_required(VERSION 2.8.3)
project(hello_world_cpp)

find_package(catkin REQUIRED COMPONENTS
  roscpp
  std_msgs
)

catkin_package(
  CATKIN_DEPENDS roscpp std_msgs
)

include_directories(
  include
  ${catkin_INCLUDE_DIRS}
)

add_executable(publisher_node src/publisher.cpp)
target_link_libraries(publisher_node ${catkin_LIBRARIES})

add_executable(subscriber_node src/subscriber.cpp)
target_link_libraries(subscriber_node ${catkin_LIBRARIES})
步骤 5:编译和运行

回到工作空间的根目录,编译工作空间并运行发布者和订阅者节点:

cd ~/ros_hello_world_ws
catkin_make
source devel/setup.bash

# 启动发布者节点
rosrun hello_world_cpp publisher

# 在新的终端中启动订阅者节点
rosrun hello_world_cpp subscriber

1.3.3 HelloWorld(Python版)

步骤 1:创建工作空间

同样,在您的工作目录中创建一个新的ROS工作空间(如果您之前没有创建):

mkdir -p ~/ros_hello_world_ws/src
cd ~/ros_hello_world_ws/src
catkin_init_workspace
cd ..
catkin_make
步骤 2:创建发布者节点

src文件夹下创建一个新的包并切换到该包:

cd ~/ros_hello_world_ws/src
catkin_create_pkg hello_world_py rospy std_msgs

src文件夹中创建一个新的Python文件,例如publisher.py,并编写发布者节点的代码:

#!/usr/bin/env python

import rospy
from std_msgs.msg import String

def publisher():
    pub = rospy.Publisher('hello_topic', String, queue_size=10)
    rospy.init_node('hello_world_py_publisher', anonymous=True)
    rate = rospy.Rate(1)

    while not rospy.is_shutdown():
        msg = "Hello, ROS from Python!"
        rospy.loginfo(msg)
        pub.publish(msg)
        rate.sleep()

if __name__ == '__main__':
    try:
        publisher()
    except rospy.ROSInterruptException:
        pass
步骤 3:创建订阅者节点

在同一包中创建另一个Python文件,例如subscriber.py,并编写订阅者节点的代码:

#!/usr/bin/env python

import rospy
from std_msgs.msg import String

def callback(data):
    rospy.loginfo("Received: %s", data.data)

def subscriber():
    rospy.init_node('hello_world_py_subscriber', anonymous=True)
    rospy.Subscriber('hello_topic', String, callback)
    rospy.spin()

if __name__ == '__main__':
    subscriber()
步骤4:Python版CMakeLists.txt配置

在Python版的示例中,假设您的工作空间位于~/ros_hello_world_ws,ROS软件包的名称是hello_world_py。以下是CMakeLists.txt文件的配置:

cmake_minimum_required(VERSION 2.8.3)
project(hello_world_py)

find_package(catkin REQUIRED COMPONENTS
  rospy
  std_msgs
)

catkin_package(
  CATKIN_DEPENDS rospy std_msgs
)

include_directories(
  include
  ${catkin_INCLUDE_DIRS}
)

catkin_install_python(PROGRAMS
  scripts/publisher.py
  scripts/subscriber.py
  DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)
步骤 5:编译和运行

回到工作空间的根目录,编译工作空间并运行发布者和订阅者节点:

cd ~/ros_hello_world_ws
catkin_make
source devel/setup.bash

# 启动发布者节点
rosrun hello_world_py publisher.py

# 在新的终端中启动订阅者节点
rosrun hello_world_py subscriber.py

ROS入门-第 1 章 ROS概述与环境搭建,ROS入门,c++,ros,python

 文章来源地址https://www.toymoban.com/news/detail-641107.html

到了这里,关于ROS入门-第 1 章 ROS概述与环境搭建的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • ROS第 2 课 ROS 系统安装和环境搭建

      本节课适用于Jetson Nano 官方镜像下从0 开始搭建ROS 环境,这里提供两种ROS 系 统的安装方式,“方法一”为一键安装,只需要一条指令即可自动安装整个ROS 系统;“方 法二”则需要设置下载源配置、设置环境变量等步骤。   如果你是初次接触ROS 的用户,建议选择“方

    2024年01月17日
    浏览(36)
  • 【ros2】ros2环境安装与基础入门

    😏 ★,° :.☆( ̄▽ ̄)/$: .°★ 😏 这篇文章主要介绍ros2环境安装与基础入门。 学其所用,用其所学。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,下次更新不迷路🥞 ROS 2 (Robot Operating System 2)是一个开源的机器人操作系统,它是ROS(Robot

    2024年02月09日
    浏览(44)
  • 【ROS机器人入门】1.1 ROS概念及环境配置

    ROS=Plumbing+Tools+Capabilities+Ecosystem 代码复用 :ROS的目标不是成为具有最多功能的框架,ROS的主要目标是支持机器人技术研发中的代码 重用。 分布式 :ROS是进程(也称为Nodes)的分布式框架,ROS中的进程可分布于不同主机,不同主机协同工 作,从而分散计算压力 。 松耦合 :ROS中功

    2023年04月22日
    浏览(46)
  • MATLAB与ROS联合仿真——ROS环境搭建及相关准备工作(下)

       本篇文章主要介绍在安装完ROS后,在进行MATLAB与ROS联合仿真之前,需要进行的一些环境搭建以及准备工作,主要分为 创建ROS工作空间及功能包、必备功能包安装、安装Gazebo11、导入实验功能包至工作空间、安装Visual_Studio_Code(选做)、常用便捷工具安装(选做) 六部分。

    2024年02月16日
    浏览(47)
  • vscode+ros开发环境搭建

    目录 介绍   前提 vscode安装  vscode插件安装   工作空间准备    打开vscode    创建catkin包  编写cpp代码 编译 运行     启动ros服务     监听话题     启动ros测试   ros开发是机器人开发中必不可少的工作,语言选择可以是c++,也可以是python。工具的话,不能像windows系统那样丰

    2024年02月11日
    浏览(42)
  • Qt + ROS 开发环境搭建

    安装配置 本文是用的操作系统是 ubuntu 16.04 中文版, ROS 版本是 kinetic, Qt 版本是 Qt5.9.0(Qt Creator4.3.1) 1、 下载.run 安装包 操作系统: Ubuntu16.04 软件 QT5.9.1 下载地址: http://download.qt.io/official_releases/qt/5.9/5.9.1/qt-opensource-linux-x64-5.9.1.run 2、 安装过程 3、 安装 ros_qtc_plugin(apt-get 安装

    2023年04月08日
    浏览(37)
  • window10环境下搭建ros

    vs2022下载地址 chocolatey是windows下的一个包管理工具,下载ros相关的包都采用这个工具。 安装过程:在菜单栏中搜索 x64 Native Tools Command Prompt for VS 2022 (2),然后右击选择管理员运行,输入: 确保您在C盘中有10GB的可用空间,用于安装ROS系统。 还是以管理员方式打开 x64 Native T

    2024年02月05日
    浏览(52)
  • ROS2入门与实践--1(ROS2的安装与环境测试)

    对于VMware虚拟机的安装教程请看这篇文章:VMware虚拟机安装 对于20.04版本的Ubuntu操作系统安装教程请看这篇文章:Ubuntu-20.04系统安装 对于22.04版本的Ubuntu操作系统安装教程请看这篇文章:Ubuntu-22.04系统安装 1.在ROS2官方的文档中,安装ROS2之前需要首先检查操作系统语言环境 官

    2024年02月15日
    浏览(48)
  • ubuntu环境上搭建ros2

    首先需要确保安装环境支持 UTF-8 格式 设置你的sources.list,让您的计算机以接受来自 packages.ros.org 的软件 设置您的密钥 如果密钥设置失败,提示gdp:找不到有效的OpenPGP数据,那就从另一个网址获取密钥,直接执行下面的指令就可以了 更新列表: 安装 ROS2 桌面版,包括 ROS, R

    2024年02月13日
    浏览(37)
  • 【ROS2 入门】虚拟机环境 ubuntu 18.04 ROS2 安装

             大家好,我是虎哥,从今天开始,我将花一段时间,开始将自己从ROS1切换到ROS2,做为有别于ROS1的版本,做了很多更新和改变,我还是很期待自己逐步去探索ROS2中的惊喜。在安装过程中我也遇到的一些坑,我自己也尝试填了一部分,未必是全部,但是相信集合大

    2024年01月17日
    浏览(61)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包