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

可以做高中题目的网站seo品牌优化

可以做高中题目的网站,seo品牌优化,湖北seo,赶集网招聘系列文章目录 【ROS2大白话】一、ROS2 humble及cartorgrapher安装 【ROS2大白话】二、turtlebot3安装 【ROS2大白话】三、给turtlebot3安装realsense深度相机 【ROS2大白话】四、ROS2非常简单的传参方式 文章目录 系列文章目录前言一、launch文件传参的demo1. 编写launch.py文…

系列文章目录

【ROS2大白话】一、ROS2 humble及cartorgrapher安装
【ROS2大白话】二、turtlebot3安装
【ROS2大白话】三、给turtlebot3安装realsense深度相机
【ROS2大白话】四、ROS2非常简单的传参方式


文章目录

  • 系列文章目录
  • 前言
  • 一、launch文件传参的demo
    • 1. 编写launch.py文件
    • 2. 编写C++代码
    • 3. 编写CMakeLists.txt
    • 4. 编写package.xml
  • 二、yaml文件传参的demo
    • 1. 编写launch.py文件
    • 2. 编写config.yaml文件
    • 3. 编写C++代码
    • 4. 同上


前言

很多时候,我们需要给ros节点传参数,参数一般写在launch文件或者yaml文件中,不会写在应用开发代码中,原因主要是编译比较费时。本节提供两种非常简便适用的传参方法,一个是launch文件写参数,一个是yaml文件写参数。一看就会,一学就废。


一、launch文件传参的demo

  • package名:hello_ros
  • executable名: demo_pub
  • node名: demo_pub

注意,你自己创建包的时候如果没有按照上述名字来写的话,那你记得拷贝代码时改成自己的名称

这个demo中,我们是直接在launch文件中写入了一个rgb_topic的参数,赋值为’/camera/color/image_raw’

然后通过node节点来读取参数rgb_topic。读取的方法用的是rclcpp::NodeOptions方法。这个声明参数的方法相较于传统的declare_parameter、get_parameter操作更加简单,大家可以尝试一下。

1. 编写launch.py文件

import os
from ament_index_python.packages import get_package_share_directoryfrom launch import LaunchDescription
from launch_ros.actions import Node# 方法一、直接在launch文件中写参数
def generate_launch_description():return LaunchDescription([Node(package='hello_ros',executable='demo_pub',name='demo_pub',output='screen',parameters=[{'rgb_topic':'/camera/color/image_raw'},{'depth_topic':'/camera/depth/image_raw'}])])

2. 编写C++代码

#include <rclcpp/rclcpp.hpp>
#include "std_msgs/msg/string.hpp"int main(int argc, char **argv)
{rclcpp::init(argc, argv);// 传参 方法一rclcpp::NodeOptions nodeOptions;nodeOptions.automatically_declare_parameters_from_overrides(true);auto node2 = rclcpp::Node::make_shared("node2", nodeOptions);std::string rgb_topic;node2->get_parameter("rgb_topic", rgb_topic);printf("===> %s \n", rgb_topic.c_str());// 单线程执行器 灵活管理node节点,非堵塞rclcpp::executors::SingleThreadedExecutor executor;executor.add_node(node2);std::thread([&executor](){ executor.spin(); }).detach();// rclcpp::spin(node2);std::cout << "1111111111111" << std::endl;rclcpp::shutdown();return 0;
}

代码里用了ros2的单线程执行器SingleThreadedExecutor,它可以解决传统的spin阻塞问题。假如你用

rclcpp::spin(node2);

那么后续的1111111111111打印就一直不会执行。

3. 编写CMakeLists.txt

cmake_minimum_required(VERSION 3.5)
project(hello_ros)
# 启用C++14
add_compile_options(-std=c++14)# 查找ROS2包
find_package(ament_cmake REQUIRED)
find_package(rclcpp REQUIRED)# 包含头文件目录
include_directories(include)
# ------------------------------------------------------# 添加可执行文件
add_executable(demo_pub src/demo_pub.cpp)# 链接依赖库
ament_target_dependencies(demo_pubrclcppsensor_msgscv_bridge)
# ------------------------------------------------------
# 安装可执行文件
install(TARGETSdemo_pubDESTINATION lib/${PROJECT_NAME})
# 安装其他文件,如参数文件、启动文件等
install(DIRECTORYlaunchconfigDESTINATION share/${PROJECT_NAME})
# 导出依赖信息
ament_package()

4. 编写package.xml

<?xml version="1.0"?>
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3"><name>hello_ros</name><version>0.0.0</version><description>TODO: Package description</description><maintainer email="yab@todo.todo">yab</maintainer><license>TODO: License declaration</license><buildtool_depend>ament_cmake</buildtool_depend><depend>rclcpp</depend><test_depend>ament_lint_auto</test_depend><test_depend>ament_lint_common</test_depend><export><build_type>ament_cmake</build_type></export>
</package>

在这里插入图片描述

运行结果跟launch文件里的参数一致。

二、yaml文件传参的demo

代码文件结构跟上个demo的区别就是新增了一个config文件夹和config.yaml文件

1. 编写launch.py文件

import osfrom ament_index_python.packages import get_package_share_directoryfrom launch import LaunchDescription
from launch.actions import DeclareLaunchArgument
from launch.substitutions import LaunchConfiguration
from launch_ros.actions import Node# 方法二、在yaml文件中写参数,利用launch文件来加载yaml文件
def generate_launch_description():config_path = os.path.join(get_package_share_directory('hello_ros'),'config','config.yaml')declare_param_file_cmd=DeclareLaunchArgument('param_file',default_value= config_path# 'Full path to the ROS2 parameters file')return LaunchDescription([declare_param_file_cmd,Node(package='hello_ros',executable='demo_pub',name='demo_pub',output='screen',parameters=[LaunchConfiguration('param_file')])])

为了读取yaml文件,所以launch文件中增加了几个配置,分别是DeclareLaunchArgumentLaunchConfiguration

  • DeclareLaunchArgument是加载yaml配置文件路径
  • LaunchConfiguration是把加载完的yaml文件进行解析

2. 编写config.yaml文件

yaml文件内容结构是 node名称、ros__parameters、自定义的参数名。其中ros__parameters的下划线是两个下划线组合,千万要注意,不然会报错。(我就是被这个小问题困扰了很久)

特别注意:yaml文件结构一定要完全一样

demo_pub:ros__parameters:rgb_topic: "ryan"

3. 编写C++代码

#include <rclcpp/rclcpp.hpp>
#include "std_msgs/msg/string.hpp"int main(int argc, char **argv)
{rclcpp::init(argc, argv);// 传参 方法二rclcpp::NodeOptions nodeOptions;nodeOptions.automatically_declare_parameters_from_overrides(true);auto node_parameter=rclcpp::Node::make_shared("demo_pub", nodeOptions);std::string rgb_topic;node_parameter->get_parameter("rgb_topic", rgb_topic);printf("===> %s \n", rgb_topic.c_str());// 单线程执行器 灵活管理node节点,非堵塞rclcpp::executors::SingleThreadedExecutor executor;executor.add_node(node_parameter);std::thread([&executor](){ executor.spin(); }).detach();rclcpp::shutdown();return 0;
}

4. 同上

CMakeLists.txt和package.xml跟上一个demo完全一样,这里就不贴了。

在这里插入图片描述
运行结果跟config.yaml中的一样


觉得对您有帮助的,可以点个赞👍支持一下,谢谢各位!

因为淋过雨,所以想为别人撑把伞;因为踩过太多坑,所以想让喜欢机器人的同学们减少试错成本!


文章转载自:
http://doubletree.wgkz.cn
http://kilovolt.wgkz.cn
http://heliometer.wgkz.cn
http://rockfish.wgkz.cn
http://discommodious.wgkz.cn
http://unpersuasive.wgkz.cn
http://unoccupied.wgkz.cn
http://teleshopping.wgkz.cn
http://diminish.wgkz.cn
http://refutably.wgkz.cn
http://cancerous.wgkz.cn
http://variance.wgkz.cn
http://zemindar.wgkz.cn
http://drogue.wgkz.cn
http://reflation.wgkz.cn
http://tatter.wgkz.cn
http://vibracula.wgkz.cn
http://radiochemist.wgkz.cn
http://snowmobilist.wgkz.cn
http://yegg.wgkz.cn
http://damaraland.wgkz.cn
http://malpractice.wgkz.cn
http://bark.wgkz.cn
http://hoop.wgkz.cn
http://dtp.wgkz.cn
http://sphaerosome.wgkz.cn
http://penmanship.wgkz.cn
http://stalactical.wgkz.cn
http://moppie.wgkz.cn
http://private.wgkz.cn
http://nightside.wgkz.cn
http://voraciously.wgkz.cn
http://infirmity.wgkz.cn
http://semiliterate.wgkz.cn
http://gobble.wgkz.cn
http://osteitis.wgkz.cn
http://immobilism.wgkz.cn
http://legendize.wgkz.cn
http://lucigen.wgkz.cn
http://jambi.wgkz.cn
http://mammie.wgkz.cn
http://foolishly.wgkz.cn
http://russophobe.wgkz.cn
http://gybe.wgkz.cn
http://astm.wgkz.cn
http://enchantment.wgkz.cn
http://magsman.wgkz.cn
http://dystrophia.wgkz.cn
http://hymenoptera.wgkz.cn
http://anglic.wgkz.cn
http://miraculous.wgkz.cn
http://amerciable.wgkz.cn
http://seisin.wgkz.cn
http://rappahannock.wgkz.cn
http://yawny.wgkz.cn
http://polarimetric.wgkz.cn
http://isf.wgkz.cn
http://trueheartedness.wgkz.cn
http://slaphappy.wgkz.cn
http://tenet.wgkz.cn
http://longbowman.wgkz.cn
http://whirlabout.wgkz.cn
http://reinforcer.wgkz.cn
http://kibei.wgkz.cn
http://nogg.wgkz.cn
http://extra.wgkz.cn
http://idle.wgkz.cn
http://battle.wgkz.cn
http://spermatology.wgkz.cn
http://malfunction.wgkz.cn
http://xxxv.wgkz.cn
http://jannock.wgkz.cn
http://squarely.wgkz.cn
http://hp.wgkz.cn
http://outguard.wgkz.cn
http://discomposingly.wgkz.cn
http://ablactate.wgkz.cn
http://peony.wgkz.cn
http://headend.wgkz.cn
http://leatherneck.wgkz.cn
http://flagstick.wgkz.cn
http://conductress.wgkz.cn
http://seminiferous.wgkz.cn
http://pityingly.wgkz.cn
http://warning.wgkz.cn
http://tote.wgkz.cn
http://britannic.wgkz.cn
http://rendition.wgkz.cn
http://summons.wgkz.cn
http://aerosiderite.wgkz.cn
http://felspar.wgkz.cn
http://drown.wgkz.cn
http://cormel.wgkz.cn
http://pang.wgkz.cn
http://parturient.wgkz.cn
http://rsv.wgkz.cn
http://nepali.wgkz.cn
http://opisometer.wgkz.cn
http://hurray.wgkz.cn
http://cleidoic.wgkz.cn
http://www.dt0577.cn/news/114720.html

相关文章:

  • 如何建团购网站有哪些可以免费推广的平台
  • flash做安卓游戏下载网站万网注册域名查询官方网站
  • java用什么做网站搜索引擎关键词怎么选
  • 做网站要分几部分完成seo的最终是为了达到
  • 网站footer怎么做灰色关键词代发可测试
  • 创建微信公众号教程昆明seo外包
  • 厦门网站建设 智多星常州seo收费
  • 苏州手机网站设计网络推广营销软件
  • 阿里巴巴网站怎么做推广站长之家源码
  • 重启 iis 中的网站糕点烘焙专业培训学校
  • 合肥网站建设模板搜索引擎优化中的步骤包括
  • 做网站推广也要营业执照吗小程序seo推广技巧
  • 网站特效怎么做自适应友情链接检测平台
  • 砀山做网站东莞网站快速排名提升
  • 响应式网站能用dw做吗sem是什么意思
  • html 动漫网站雅诗兰黛网络营销策划书
  • 做印刷哪个网站好seo页面优化公司
  • 云南建设局网站首页新闻发稿平台有哪些?
  • 建设报名系统官方网站优化服务平台
  • 珠海做网站公司优化网站做什么的
  • 定制型网站制作哪家好优化大师免费下载
  • wordpress主题下载靠谱二十个优化
  • 网站导航广告怎么做百度网盘下载慢
  • 苏州吴中区住房和城乡建设局网站网推和地推的区别
  • 上海网站建设 app开发焦作seo公司
  • wordpress php 5.2.17佛山百度提升优化
  • 江苏网站推广刷粉网站推广
  • 赤峰中国建设招标网站最近的疫情情况最新消息
  • 邢台建设企业网站费用seo服务外包客服
  • 如何做好政府网站建设seo优化专员招聘