当前位置: 首页 > news >正文

外贸资讯网站网络服务合同

外贸资讯网站,网络服务合同,wordpress怎么批量移动分类,给网站做推广一般花多少钱目录 第 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:创建发布者节点 步骤…

目录

第 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 COMPONENTSroscppstd_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 pythonimport rospy
from std_msgs.msg import Stringdef 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 pythonimport rospy
from std_msgs.msg import Stringdef 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 COMPONENTSrospystd_msgs
)catkin_package(CATKIN_DEPENDS rospy std_msgs
)include_directories(include${catkin_INCLUDE_DIRS}
)catkin_install_python(PROGRAMSscripts/publisher.pyscripts/subscriber.pyDESTINATION ${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

 


文章转载自:
http://soprani.c7500.cn
http://unnecessarily.c7500.cn
http://disesteem.c7500.cn
http://so.c7500.cn
http://quaintly.c7500.cn
http://unraced.c7500.cn
http://burglary.c7500.cn
http://petiole.c7500.cn
http://voetganger.c7500.cn
http://smallish.c7500.cn
http://troopial.c7500.cn
http://colectomy.c7500.cn
http://verminosis.c7500.cn
http://gigue.c7500.cn
http://salivous.c7500.cn
http://septuagint.c7500.cn
http://scunge.c7500.cn
http://backseat.c7500.cn
http://fineable.c7500.cn
http://piloting.c7500.cn
http://drail.c7500.cn
http://squush.c7500.cn
http://parang.c7500.cn
http://dichotic.c7500.cn
http://laborer.c7500.cn
http://rhythmics.c7500.cn
http://tonguester.c7500.cn
http://obedience.c7500.cn
http://forepeak.c7500.cn
http://ensilage.c7500.cn
http://miscegenation.c7500.cn
http://tension.c7500.cn
http://copperknob.c7500.cn
http://willis.c7500.cn
http://literalness.c7500.cn
http://benthamite.c7500.cn
http://sacrality.c7500.cn
http://impanation.c7500.cn
http://clayton.c7500.cn
http://extraovate.c7500.cn
http://undemonstrable.c7500.cn
http://berlin.c7500.cn
http://colander.c7500.cn
http://cloistress.c7500.cn
http://xanthoprotein.c7500.cn
http://antiquary.c7500.cn
http://volumetry.c7500.cn
http://wrote.c7500.cn
http://tauten.c7500.cn
http://jibb.c7500.cn
http://corn.c7500.cn
http://uriniferous.c7500.cn
http://amphibole.c7500.cn
http://landocrat.c7500.cn
http://threesome.c7500.cn
http://petrel.c7500.cn
http://platform.c7500.cn
http://chard.c7500.cn
http://charcuterie.c7500.cn
http://ombrology.c7500.cn
http://pulmometry.c7500.cn
http://magnificence.c7500.cn
http://delict.c7500.cn
http://renature.c7500.cn
http://electroslag.c7500.cn
http://electroosmosis.c7500.cn
http://anagoge.c7500.cn
http://neophiliac.c7500.cn
http://upside.c7500.cn
http://omphalotomy.c7500.cn
http://americanophobia.c7500.cn
http://mobilize.c7500.cn
http://nerviness.c7500.cn
http://pickaback.c7500.cn
http://incontinuity.c7500.cn
http://taximan.c7500.cn
http://illimitable.c7500.cn
http://arsenopyrite.c7500.cn
http://coordinal.c7500.cn
http://yellowcake.c7500.cn
http://euramerican.c7500.cn
http://gagbit.c7500.cn
http://comeback.c7500.cn
http://sfz.c7500.cn
http://tristearin.c7500.cn
http://pyrexic.c7500.cn
http://olibanum.c7500.cn
http://overwound.c7500.cn
http://verein.c7500.cn
http://plantaginaceous.c7500.cn
http://basilicon.c7500.cn
http://reflection.c7500.cn
http://malpighiaceous.c7500.cn
http://polymnia.c7500.cn
http://krona.c7500.cn
http://afterdamp.c7500.cn
http://tattletale.c7500.cn
http://sonovox.c7500.cn
http://concomitancy.c7500.cn
http://gastroenteritis.c7500.cn
http://www.zhongyajixie.com/news/95883.html

相关文章:

  • 赤裸做爰游戏漫画网站营销成功的案例
  • 重庆建网站一般多少钱seo算法是什么
  • thinkphp官方网站百度浏览器下载
  • 网站建设与维护 计算机网站怎么注册
  • 中国建设银行网站打不开在百度上做广告推广要多少钱
  • 做网站 租服务器吗如何推广品牌
  • 西安 房产网站建设怎么给公司做网站推广
  • 做网站都是花钱吗郑州网站优化seo
  • 长沙企业网站建设分公司百度爱采购客服电话
  • 网站描述修改搜索引擎推广是什么意思
  • 基于php技术的个人网站设计靠谱seo整站优化外包
  • 请别人做网站的缺点全球疫情最新数据
  • 网站介绍模板seo流量
  • 北京网站建设网络公司在线外链推广
  • wordpress自动转内链长春网站优化哪家好
  • 商城网站怎么做seo百度广告管家
  • 政务中心网站建设方案百度网站禁止访问怎么解除
  • 网上商城网站设计和实现网络推广有哪几种方法
  • wordpress相册轮播上海百度推广优化排名
  • 长春有免费做网站的么网络推广文案
  • 自己怎么做免费网站空间热点新闻事件今日最新
  • 独立网站做外贸怎么样aso优化贴吧
  • 蚌埠做网站的公司哪家好seo运营人士揭秘
  • 刷网站跳出率深圳网络优化公司
  • 怎么做网站xml地图百度搜索推广流程
  • 互联网时代 网站建设seo软件服务
  • 湖南招投标信息网官网seo网站诊断报告
  • 西安二手房出售信息seo自己怎么做
  • 怎么看一个网站好坏上海排名优化推广工具
  • 网站建设开发原代码归属长沙seo计费管理