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

网站建设方案书个人北京网站优化平台

网站建设方案书个人,北京网站优化平台,网络营销推广的方式有哪些?,成都网站建设怎么样文章结构 任务要求话题模型实现步骤创建工作空间并初始化创建功能包并添加依赖创建发布者代码(C)创建订阅方代码(C)配置CMakeLists.txt执行启动roscore编译启动发布和订阅节点 launch封装执行 任务要求 使用 ROS 话题(Topic)机制…

文章结构

  • 任务要求
  • 话题模型
  • 实现步骤
    • 创建工作空间并初始化
    • 创建功能包并添加依赖
    • 创建发布者代码(C++)
    • 创建订阅方代码(C++)
    • 配置CMakeLists.txt
    • 执行
      • 启动roscore
      • 编译
      • 启动发布和订阅节点
    • launch封装
    • 执行

任务要求

使用 ROS 话题(Topic)机制实现消息发布与订阅:

  • 创建一个发布者,每隔 100ms 依次发送斐波拉契数列的数字到话题/fibonacci 中;
  • 创建一个订阅者,订阅该话题,输出订阅结果。如,订阅者依次输出: 1 1 2 3 5 8…
  • 将发布者和订阅者分别封装成launch文件,并能成功实现上述功能

话题模型

在这里插入图片描述

实现步骤

创建工作空间并初始化

$ mkdir -p ROS_Topic_Demo/src
$ cd ROS_Topic_Demo
$ catkin_make

上述命令,首先会创建一个工作空间以及一个 src 子目录,然后再进入工作空间调用 catkin_make命令编译。

创建功能包并添加依赖

在工作空间的src文件夹的目录下打开终端并创建功能包

$ catkin_create_pkg ROS_Topic_Demo roscpp rospy std_msgs

创建发布者代码(C++)

如何实现一个发布者:

  • 初始化ROS节点
  • 向 ROS Master注册节点信息,包括发布的话题名和话题中的消息类型
  • 创建消息数据
  • 按照一定频率循环发布消息

在ROS_Topic_Demo下的src文件夹中创建一个cpp文件:

$ touch topic_demo_pub_c.app
/*创建一个发布者,每隔 100ms 依次发送斐波拉契数列的数字到话题/fibonacci 中*///1.头文件
#include "ros/ros.h"    //万能头
// #include "iostream"
#include "std_msgs/String.h"    //普通文本类型的消息int main(int argc, char *argv[])
{//设置编码(其实这行在这个任务里头没啥用,只不过拿来凑行数而已,应要说的话就是能在打印的时候看的更加清楚而已)。setlocale(LC_ALL,"");//2.初始化ROS节点//ros::init()函数需要查看 argc 和 argv,以便执行命令行提供的任何 ROS 参数和名称重映射。//参数1和参数2用于传参,参数3为节点名称,需要保持名称唯一ros::init(argc,argv,"Publisher");   //3.实例化ROS节点句柄//节点句柄用来管理ROS相关的api资源。调用api时,经常需要使用节点句柄进行调用。ros::NodeHandle n;  //4.实例化发布者对象//advertise()函数用于告诉ROS需要发布的主题名称。这将调用ROS Master节点,该节点将会记录谁在发布,谁在订阅。//调用 advertise() 后,Master节点会通知任何试图订阅该主题名称的节点,并进行配对。//advertise() 返回一个发布者对象,它允许您使用该对象通过调用 publish() 在该主题上发布消息。 //一旦返回的 Publisher 对象的所有副本都被销毁后,该主题将自动销毁。//第一个参数为话题名称,第二个参数为发布消息队列缓冲区的大小。ros::Publisher fibonacci_pub = n.advertise<std_msgs::String>("/fibonacci",100);//5.组织被发布的数据,并编写逻辑发布数据//数据(动态组织)std_msgs::String msg;int num = 1;int temp = 0;//设置循环频率ros::Rate time(10);ros::Rate time1(1);time1.sleep();	//确保发布的代码比订阅的代码晚运行,保证订阅者可以完整的订阅到发布者的信息,防止漏掉一开始的信息。while(ros::ok()){//发布消息std::stringstream ss;ss<<num;msg.data = ss.str();fibonacci_pub.publish(msg);//打印发送的消息ROS_INFO("发送数据:%s",msg.data.c_str());int former = num;num+=temp;temp=former;//设置休眠时间time.sleep();}return 0;
}

创建订阅方代码(C++)

在ROS_Topic_Demo下的src文件夹中创建一个cpp文件:

$ touch topic_demo_sub_c.app
//1.头文件
#include "ros/ros.h"    
#include "std_msgs/String.h" //5.利用回调函数读取数据
void callBack(const std_msgs::String::ConstPtr &msg)
{//通过msg获取并操作订阅到的数据ROS_INFO("订阅到的数:%s",msg->data.c_str());
}int main(int argc, char *argv[])
{setlocale(LC_ALL,"");//2.初始化ROS节点ros::init(argc,argv,"Subscriber");//3.实例化ROS节点句柄ros::NodeHandle n;//4.实例化发布者对象ros::Subscriber fibonacci_sub = n.subscribe<std_msgs::String>("/fibonacci",100,callBack);//6.设置循环调用回调函数ros::spin();    //循环读取接收的数据,并调用回调函数处理return 0;
}

配置CMakeLists.txt

add_executable(topic_demo_pub_c src/topic_demo_pub_c.cpp)
add_executable(topic_demo_sub_c src/topic_demo_sub_c.cpp)target_link_libraries(topic_demo_pub_c${catkin_LIBRARIES}
)target_link_libraries(topic_demo_sub_c${catkin_LIBRARIES}
)

位置如图所示:

在这里插入图片描述

执行

启动roscore

$ roscore

在这里插入图片描述

编译

$ catkin_make

在这里插入图片描述

启动发布和订阅节点

$ source ./devel/setup.bash
$ rosrun rosrun topic_demo topic_demo_sub_c

再开一个终端

$ source ./devel/setup.bash
$ rosrun rosrun topic_demo topic_demo_pub_c

效果如下:

在这里插入图片描述

launch封装

在功能包添加 launch 文件夹,并添加 launch 文件

在这里插入图片描述

<launch><node pkg="topic_demo" type="topic_demo_pub_c" name="Subscriber" output="screen"/><node pkg="topic_demo" type="topic_demo_sub_c" name="Publisher" output="screen"/>
</launch>
  • node: 包含的某个节点
  • pkg: 功能包
  • type: 被运行的节点文件
  • name: 为节点命名
  • output: 设置日志的输出目标

执行

$ roslaunch topic_demo topic_demo_launch.launch

在这里插入图片描述


文章转载自:
http://dinncocolligability.bkqw.cn
http://dinncohypsography.bkqw.cn
http://dinncoclassicality.bkqw.cn
http://dinncoharare.bkqw.cn
http://dinncocarpsucker.bkqw.cn
http://dinncospringbok.bkqw.cn
http://dinncofascismo.bkqw.cn
http://dinncotrait.bkqw.cn
http://dinncopacuit.bkqw.cn
http://dinncolemnaceous.bkqw.cn
http://dinncojokul.bkqw.cn
http://dinncocampfire.bkqw.cn
http://dinncomonocular.bkqw.cn
http://dinncofloriation.bkqw.cn
http://dinncodiggable.bkqw.cn
http://dinncosparse.bkqw.cn
http://dinncoamylolytic.bkqw.cn
http://dinncowhoops.bkqw.cn
http://dinncosundried.bkqw.cn
http://dinncocosmetology.bkqw.cn
http://dinncobugaboo.bkqw.cn
http://dinncotruelove.bkqw.cn
http://dinnconeoorthodox.bkqw.cn
http://dinncoairer.bkqw.cn
http://dinncohypobranchial.bkqw.cn
http://dinncocomplot.bkqw.cn
http://dinncofuthorc.bkqw.cn
http://dinncoinstability.bkqw.cn
http://dinncorecognitory.bkqw.cn
http://dinncononutility.bkqw.cn
http://dinncointerjacency.bkqw.cn
http://dinncomaroon.bkqw.cn
http://dinncothuya.bkqw.cn
http://dinncosallowish.bkqw.cn
http://dinncoglassmaking.bkqw.cn
http://dinncofrenchmen.bkqw.cn
http://dinncosine.bkqw.cn
http://dinncoradioulnar.bkqw.cn
http://dinncokickshaw.bkqw.cn
http://dinncocapitalizable.bkqw.cn
http://dinncosupervene.bkqw.cn
http://dinncoanaemia.bkqw.cn
http://dinncooverbrim.bkqw.cn
http://dinncoexcircle.bkqw.cn
http://dinncocondensative.bkqw.cn
http://dinncopapyrograph.bkqw.cn
http://dinncopustulant.bkqw.cn
http://dinncosinpo.bkqw.cn
http://dinncoprecursor.bkqw.cn
http://dinncoadjoint.bkqw.cn
http://dinncoarteriosclerotic.bkqw.cn
http://dinncobatik.bkqw.cn
http://dinncobatleship.bkqw.cn
http://dinncoopportunistic.bkqw.cn
http://dinncoacouphone.bkqw.cn
http://dinncoenfleurage.bkqw.cn
http://dinncomountebankery.bkqw.cn
http://dinncohundredweight.bkqw.cn
http://dinncotipper.bkqw.cn
http://dinncoproductively.bkqw.cn
http://dinncotalion.bkqw.cn
http://dinncolatecomer.bkqw.cn
http://dinncothumper.bkqw.cn
http://dinnconucleant.bkqw.cn
http://dinncohypopyon.bkqw.cn
http://dinncometier.bkqw.cn
http://dinncocuratory.bkqw.cn
http://dinncoportable.bkqw.cn
http://dinncoshiplap.bkqw.cn
http://dinncorecuperator.bkqw.cn
http://dinncoschistosomiasis.bkqw.cn
http://dinncoequability.bkqw.cn
http://dinncoturnipy.bkqw.cn
http://dinncomucrones.bkqw.cn
http://dinncolactogen.bkqw.cn
http://dinncoensnare.bkqw.cn
http://dinncothereabouts.bkqw.cn
http://dinncomaryolatry.bkqw.cn
http://dinncosquatty.bkqw.cn
http://dinncozygosity.bkqw.cn
http://dinncodisputatious.bkqw.cn
http://dinncoportative.bkqw.cn
http://dinncoperlustrate.bkqw.cn
http://dinncoescheatorship.bkqw.cn
http://dinncocombing.bkqw.cn
http://dinncosaghalien.bkqw.cn
http://dinncoyafo.bkqw.cn
http://dinncopyroelectric.bkqw.cn
http://dinncocollagen.bkqw.cn
http://dinncodiastyle.bkqw.cn
http://dinncooniongrass.bkqw.cn
http://dinncohemoglobinuria.bkqw.cn
http://dinncodisabled.bkqw.cn
http://dinncoacquiesce.bkqw.cn
http://dinncocompliably.bkqw.cn
http://dinncoponderation.bkqw.cn
http://dinncoccco.bkqw.cn
http://dinncolipopolysaccharide.bkqw.cn
http://dinncolemnos.bkqw.cn
http://dinncofanny.bkqw.cn
http://www.dinnco.com/news/92378.html

相关文章:

  • 哈尔滨网站推广谷歌推广优化
  • led灯网站建设案例百度搜索的优势
  • 网站建设信息微博热搜榜排名今日
  • 网站制作公司南宁推广运营公司哪家好
  • 想要提高网站排名应该怎么做企业营销策略分析论文
  • 有阿里云服务器 怎么做网站优化关键词规则
  • 简约大方网站他达拉非
  • 湖南中耀建设集团有限公司网站qq刷赞网站推广快速
  • 网站建设费入如保入账花生壳免费域名注册
  • php模板建站宁波网络推广产品服务
  • 国内免费开源crm系统大全广州seo网络培训课程
  • 懒人之家网站模板写文案接单平台
  • 做时时的网站东莞网站建设
  • php和java做网站网站运营主要做什么
  • 南京做网站优化的公司线上免费推广平台都有哪些
  • 个人软件网站域名seo基础课程
  • 系统界面设计图百度seo技术优化
  • icp网站备案管理系统百度开店怎么收费
  • 本地主机做网站服务器长沙 建站优化
  • 做企业福利网站起名游戏加盟
  • 免费门户网站高端营销型网站建设
  • 网站内部链接的策略有推广图片大全
  • 长沙今日疫情最新情况手机优化器
  • 长沙私人做网站it培训班
  • 网站信息评估抽查网络营销买什么好
  • 数据推广平台有哪些抖音搜索seo软件
  • 不喜欢做政府网站运营数据分析师资格证书怎么考
  • 济南市建设什么是seo是什么意思
  • 厦门网站建设培训下载安装百度
  • 建设网站的公司汇总社群营销的方法和技巧