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

培训网站建设多少钱上首页的seo关键词优化

培训网站建设多少钱,上首页的seo关键词优化,高端网站建设方案范文,wap网站开发和自适应【4. ROS的主要通讯方式#xff1a;Topic话题与Message消息】 1. 前言1.1 王者解释结点通讯#xff1a;1.2 通讯小结 2. 灵活的Topic话题图解2.1 话题注意细节2.2 外延补充 3. Message消息图解3.1 消息类型3.2 查看标准消息类型std_msgs 4. 使用C实现Publisher发布者4.1 发布… 【4. ROS的主要通讯方式Topic话题与Message消息】 1. 前言1.1 王者解释结点通讯1.2 通讯小结 2. 灵活的Topic话题图解2.1 话题注意细节2.2 外延补充 3. Message消息图解3.1 消息类型3.2 查看标准消息类型std_msgs 4. 使用C实现Publisher发布者4.1 发布者的实现4.2 消息分析4.3 chao_node.cpp源程序4.4 运行调试chao_node节点 5. 复制节点yao_node5.1 修改C源代码5.2 修改CMakeLists.tet文件5.3 运行调试yao_node节点 6. 使用C实现Subscriber订阅者6.1 创建订阅者节点6.2 消息分析6.3 添加chao_node节点的订阅6.4 修改CMakeLists.tet文件6.5 运行调试ma_node6.6 调整和优化6.7 添加yao_node节点的订阅6.8 rqt_graph查看节点消息流6.9 小结 7. 使用launch文件启动多个ROS节点7.1 使用launch文件启动节点7.2 编写运行launch文件7.3 调试launch文件7.4 launch小结 8. 使用Python编写Publisher发布者节点8.1 订阅者节点的Python实现8.2 编写chao_node.py代码8.3 py文件添加可执行的权限8.4 运行调试chao_node.py8.5 编写yao_node.py代码8.6 运行调试yao_node.py 9. 使用Python实现Subscriber订阅者9.1 创建订阅者节点9.2 编写ma_node.py代码9.3 py文件添加可执行的权限9.4 运行调试ma_node9.5 添加yao_node节点的订阅9.6 编写launch启动文件9.7 运行调试9.8 rqt_graph查看节点消息流 10. 总结 1. 前言 本教程是B站阿杰视频的笔记 视频地址https://www.bilibili.com/video/BV1qa41137ED 1.1 王者解释结点通讯 话题topic发布者publisher订阅者subsciber 1.2 通讯小结 话题Topic是节点间进行持续通讯的一种形式。话题通讯的两个节点通过话题的名称建立起话题通讯连接。3.话题中通讯的数据,叫做消息Message。消息Message通常会按照一定的频率持续不断的发送以保证消息数据的实时性。消息的发送方叫做话题的发布者Pubplisher。消息的接收方叫做话题的订阅者Subsciber。 2. 灵活的Topic话题图解 2.1 话题注意细节 2.2 外延补充 —个ROS节点网络中可以同时存在多个话题。一个话题可以有多个发布者也可以有多个订阅者。一个节点可以对多个话题进行订阅也可以发布多个话题。不同的传感器消息通常会拥有各自独立话题名称每个话题只有一个发布者。机器人速度指令话题通常会有多个发布者但是同一时间只能有一个发言人。 3. Message消息图解 3.1 消息类型 ROS Index官网https://index.ros.org/ 搜索std_msgs 找到匹配的版本 3.2 查看标准消息类型std_msgs 选择Website进入https://wiki.ros.org/std_msgs 下翻到 2.ROS Message Types 消息是嵌套的由简单到复杂类似C的结构体 4. 使用C实现Publisher发布者 这一期我们将按照这个场景来构建话题的发布者一共有2个发布者根据需求创建ssr_pkg包的chao_node和yao_node订阅节点 4.1 发布者的实现 打开之前创建的ssr_pkg教程参照 【初学ROS年轻人的第一个Node节点】用VScode打开chao_node.cpp 4.2 消息分析 去ROS Index查找对应消息类型进入https://wiki.ros.org/std_msgs下翻到 2.ROS Message Types 超哥说的那句话不就是一个字符串吗 4.3 chao_node.cpp源程序 #include ros/ros.h #include std_msgs/String.h int main(int argc,char *argv[]) {ros::init(argc,argv,chao_node );printf(我的枪去而复返你的生命有去无回!\n);ros::NodeHandle nh;ros::Publisher pub nh.advertisestd_msgs ::String(kuai_shang_che_kai_hei_qun, 10);ros::Rate loop_rate(10);while( ros::ok()){printf(我要开始刷屏了!\n);std_msgs::String msg;msg.data 国服马超带飞;pub.publish(msg);loop_rate.sleep();}return 0; }ctrls快捷保存 ctrlshiftb快捷编译 4.4 运行调试chao_node节点 打开两个终端分别运行两行代码 roscore rosrun ssr_pkg chao_node rostopic工具 rostopic list rostopic echo /kuai_shang_che_kai_hei_qun echo -e \u56FD\u670D\u9A6C\u8D85\uFF0C\u5E26\u98DE rostopic hz /kuai_shang_che_kai_hei_qun 小结 确定话题名称和消息类型。在代码文件中include消息类型对应的头文件。在main函数中通过NodeHandler大管家发布一个话题并得到消息发送对象。生成要发送的消息包并进行发送数据的赋值。调用消息发送对象的publish()函数将消息包发送到话题当中。 5. 复制节点yao_node 从chao_node.cpp复制到节点yao_node.cpp 5.1 修改C源代码 #include ros/ros.h #include std_msgs/String.h int main(int argc,char *argv[]) {ros::init(argc,argv,yao_node );printf(过去生于未来!\n);ros::NodeHandle nh;ros::Publisher pub nh.advertisestd_msgs ::String(gie_gie_dai_wo, 10);ros::Rate loop_rate(10);while( ros::ok()){printf(我要开始刷屏了!\n);std_msgs::String msg;msg.data 求上车;pub.publish(msg);loop_rate.sleep();}return 0; }ctrls快捷保存 ctrlshiftb快捷编译 5.2 修改CMakeLists.tet文件 增加yao_node节点配置 add_executable(chao_node src/chao_node.cpp) target_link_libraries (chao_node${catkin_LIBRARIES} ) add_executable(yao_node src/yao_node.cpp) target_link_libraries(yao_node${catkin_LIBRARIES} ) 5.3 运行调试yao_node节点 运行新节点前需要保留下面两个终端 roscore rosrun ssr_pkg chao_noderosrun ssr_pkg yao_node采用rostopic查看消息 rostopic工具 rostopic list rostopic echo /gie_gie_dai_wo echo -e \u56FD\u670D\u9A6C\u8D85\uFF0C\u5E26\u98DE rostopic hz /gie_gie_dai_wo 6. 使用C实现Subscriber订阅者 根据需求创建atr_pkg包的ma_node订阅节点 6.1 创建订阅者节点 创建Package软件包 创建在~/catkin_ws/src文件夹里catkin_create_pkg包名依赖项列表 catkin_creat_pkg atr_pkg rospy roscpp std_msgs 新建src文件夹的ma_node.cpp文件 6.2 消息分析 6.3 添加chao_node节点的订阅 修改ma_node代码 #include ros/ros.h #include std_msgs/String.h void chao_callback(std_msgs::String msg) {printf(msg.data.c_str());printf(\n); } int main(int argc,char *argv[])ros::init(argcargv,ma_node );ros::NodeHandle nh;ros::Subscriber sub nh.subscribe(kuai_shang_che_kai_hei_qun,10,chao_callback);while ( ros::ok()){ros::spinOnce();} return 0; 6.4 修改CMakeLists.tet文件 增加ma_node节点配置 add_executable(ma_node src/ma_node.cpp) target_link_libraries(ma_node${catkin_LIBRARIES} ) ctrls快捷保存 ctrlshiftb快捷编译 6.5 运行调试ma_node 打开3个终端分别运行3行代码 roscore rosrun ssr_pkg chao_node rosrun atr_pkg ma_node6.6 调整和优化 修改ma_node节点,添加chao_node节点的订阅 ma_node.cpp源程序 #include ros/ros.h #include std_msgs/String.h void chao_callback(std_msgs::String msg) {ROS_INFO(msg.data.c_str());} int main(int argc,char *argv[]) {setlocale(LC_ALL,);ros::init(argcargv,ma_node );ros::NodeHandle nh;ros::Subscriber sub nh.subscribe(kuai_shang_che_kai_hei_qun,10,chao_callback);while ( ros::ok()){ros::spinOnce();}return 0; }打印如下 []时间戳表示【格林尼治时间1970年1月1日0时0分0秒】距离现在多少秒。 6.7 添加yao_node节点的订阅 修改ma_node节点,添加yao_node节点的订阅 ma_node.cpp源程序 #include ros/ros.h #include std_msgs/String.h void chao_callback(std_msgs::String msg) {ROS_INFO(msg.data.c_str()); } void yao_callback(std_msgs::String msg) {ROS_WARN(msg.data.c_str()); } int main(int argc,char *argv[]) {setlocale(LC_ALL,);ros::init(argcargv,ma_node );ros::NodeHandle nh;ros::Subscriber sub nh.subscribe(kuai_shang_che_kai_hei_qun,10,chao_callback);ros::Subscriber sub_2 nh.subscribe(gie_gie_dai_wo,10,yao_callback);while ( ros::ok()){ros::spinOnce();}return 0; }打开4个终端分别运行4行代码 roscore rosrun ssr_pkg chao_node rosrun ssr_pkg yao_node rosrun atr_pkg ma_node6.8 rqt_graph查看节点消息流 6.9 小结 确定话题名称和消息类型。在代码文件中include ros.h和消息类型对应的头文件。在main函数中通过NodeHandler大管家订阅一个话题并设置消 息接收回调函数。定义一个回调函数,对接收到的消息包进行处理。main函数中需要执行ros::spinOnce(),让回调函数能够响应接收到的消息包。 7. 使用launch文件启动多个ROS节点 7.1 使用launch文件启动节点 该文件类型是XML语法类似http文本。 批量启动ros节点文件 7.2 编写运行launch文件 新建launch文件夹的kai_hei.launch文件 kai_he.launch源码 launchnode pkgssr_pkg typeyao_node nameyao_node /node pkgssr_pkg typechao_node name chao_node /node pkgatr_pkg typema_node namema_node outputscreen/ /launch 7.3 调试launch文件 运行下面指令启动launch的三个节点 roslaunch atr_pkg kai_hei.launch采用rqt_graph命令查看节点流图 修改kai_he.launch源码添加launch-prefix gnome-terminal -e开一个新终端运行显示chao_node节点 launchnode pkgssr_pkg typeyao_node nameyao_node /node pkgssr_pkg typechao_node name chao_node launch-prefix gnome-terminal -e/node pkgatr_pkg typema_node namema_node outputscreen/ /launch 运行下面指令启动launch的三个节点 roslaunch atr_pkg kai_hei.launch7.4 launch小结 使用launch文件可以通过roslaunch指令一次启动多个节点。在launch文件中为节点添加outputscreen”属性可以让节点信息输出在终端中。(ROS_WARN不受该属性控制)在launch文件中为节点添加launch-prefixgnome-terminal -e属性可以让节点单独运行在一个独立终端中。 8. 使用Python编写Publisher发布者节点 8.1 订阅者节点的Python实现 ctrlaltt打开终端,只需一次编译 创建python包 cd catkin_ws/src/ catkin_create_pkg ssr_pkg rospy std_msgs cd .. catkin_makeVScode打开创建scripts 创建chao_node.py 8.2 编写chao_node.py代码 先引入python包设置中文utf-8显示 ros20.04,采用python3ros20.04,采用python 对比学习C发布节点 NodeHandle变为rospy chao_node.py源码 #!/usr/bin/env python3 #codingutf-8 import rospy from std_msgs.msg import String if _name__ _main_:rospy.init_node ( chao_node )rospy.logwarn(我的枪去而复返你的生命有去无回!)pub rospy.Publisher( kuai_shang_che_kai_hei_qun ,String , queue_size10)rate rospy. Rate( 10)while not rospy.is_shutdown():rospy.loginfo(我要开始刷屏了)msg String()msg.data “国服马超带飞pub.publish(msg)rate.sleep( 8.3 py文件添加可执行的权限 在所在文件夹打开终端 chmod x chao_node.py8.4 运行调试chao_node.py 打开两个终端分别运行两条指令 roscore rosrun ssr_pkg chao_node.pyrostopic工具 rostopic list rostopic echo /kuai_shang_che_kai_hei_qun echo -e \u56FD\u670D\u9A6C\u8D85\uFF0C\u5E26\u98DE python前面经过第一次编译后期不需要编译可以直接运行也不需要CMake文件配置 8.5 编写yao_node.py代码 直接复制chao_node.py改为yao_node.py权限也会一起传递 yao_node.py源码 #!/usr/bin/env python3 #codingutf-8 import rospy from std_msgs.msg import String if _name__ __main_:rospy.init_node ( yao_node)rospy.logwarn(过去生于未来! )pub rospy. Publisher( gie_gie_dai_wo ,String , queue_size10)rate rospy.Rate(10)while not rospy.is_shutdown():rospy.loginfo(我要开始刷屏了)msg String()msg.data 求上车pub.publish(msg)rate.sleep() 8.6 运行调试yao_node.py 打开两个终端分别运行两条指令 roscore rosrun ssr_pkg yao_node.pyrostopic工具 rostopic list rostopic echo /gie_gie_dai_wo echo -e \u56FD\u670D\u9A6C\u8D85\uFF0C\u5E26\u98DE 9. 使用Python实现Subscriber订阅者 根据需求创建atr_pkg包的ma_node订阅节点 9.1 创建订阅者节点 创建Package软件包 创建在~/catkin_ws/src文件夹里catkin_create_pkg包名依赖项列表 cd catkin_ws/src/ catkin_creat_pkg atr_pkg rospy std_msgs cd .. catkin_make VScode打开创建scripts文件夹创建ma_node.py 9.2 编写ma_node.py代码 先引入python包设置中文utf-8显示 ros20.04,采用python3ros20.04,采用python 对比学习C发布节点 NodeHandle变为rospy 修改ma_node代码 #!/usr/bin/env python3 #codingutf-8 import rospy from std_msgs.msg import String def chao_callback(msg):rospy. loginfo(msg.data) ifname _main_:rospy.init_node ( ma_node )sub rospy.Subscriber(kuai_shang_che_kai_hei_qun ,String , chao_callback,queue_size10)rospy.spin ()9.3 py文件添加可执行的权限 在所在文件夹打开终端 chmod x ma_node.py9.4 运行调试ma_node 打开3个终端分别运行3行代码 roscore rosrun ssr_pkg chao_node.py rosrun atr_pkg ma_node9.5 添加yao_node节点的订阅 修改ma_node节点,添加yao_node节点的订阅 ma_node.py源程序 #!/usr/bin/env python3 #codingutf-8 import rospy from std_msgs.msg import String def chao_callback(msg):rospy. loginfo(msg.data) def yao_callback(msg):rospy. logwarn(msg.data) ifname _main_:rospy.init_node ( ma_node )sub rospy.Subscriber(kuai_shang_che_kai_hei_qun ,String , chao_callback,queue_size10)sub_2 rospy.Subscriber(gie_gie_dai_wo ,String , yao_callback,queue_size10)rospy.spin ()9.6 编写launch启动文件 新建launch文件夹的kai_hei.launch文件 kai_he.launch源码 launchnode pkgssr_pkg typeyao_node.py nameyao_node /node pkgssr_pkg typechao_node.py name chao_node /node pkgatr_pkg typema_node.py namema_node launch-prefix gnome-terminal -e/ /launch 9.7 运行调试 打开2个终端分别运行2行代码 roscore roslaunch atr_pkg kai_hei.launch9.8 rqt_graph查看节点消息流 打开一个终端输入 rqt_graph10. 总结 本节学习了ROS机器人的主要通讯方式尝试C和python两种语言编写Topic话题与Message消息接下来会介绍机器人的运动操作。完美撒花
http://www.tj-hxxt.cn/news/216290.html

相关文章:

  • 做网站需要的图片大小wordpress下载地址插件
  • 百度推广要不要建网站php网站开发实战视频教程
  • 北京赛车网站开发多少钱小程序登录不上
  • 酒店网站开发需求文档做好的网站怎么注销
  • 网站运营需要 做哪些工作中国电信企业邮箱登录入口
  • 移动端网站建设的意义网站建设价值
  • 做轻时尚的网站做短租类型的网站
  • 阿里云网站建设方案书一定要嘛网站建设读书笔记
  • 建怎么网站比较赚钱wordpress 评论美化
  • 网站建设能解决哪些问题网站使用帮助
  • 手机怎么创建自己的网站平台具有品牌的网站建设
  • 学校网站建设企业centos7安装wordpress
  • 给我一个用c 做的网站网站建设和维护释义
  • 美工素材网站有哪些无锡住房和城乡建设部网站
  • 外贸网站产品关键词做网站还是做app好
  • 男士手表网站电子商务网站建设与管理的理解
  • 中国建设银行网上银行网站长春网站建设q479185700惠
  • 地图设计网站wordpress装饰
  • 购物建设网站费用网站建设柒金手指花总14
  • 怎样查网站谁做的免费商城网站模板
  • 软件下载网站哪个比较好wordpress 执行效率
  • 网站备案 做网站时就需要吗专用车网站建设价格
  • 苏州市相城区住房和城乡建设局网站关于建设网站的图片素材
  • 电影网站膜拜网站建设推广哪家专业
  • 设计师个人网站建设中国字体设计
  • 网站关键字分析四站合一网站建设价格
  • 兰州房地产网站建设网站需要公司备案么
  • 网站建设蓝图ppt做直播网站赚钱
  • 建设网站的一般步骤网络舆情案例分析
  • 玉溪市城乡建设局网站东莞人力资源招聘官网