首页 > 其他分享 >ROS 加载yaml教程

ROS 加载yaml教程

时间:2024-03-04 20:22:23浏览次数:32  
标签:文件 ROS catkin launch yaml ros 加载

ros加载yaml文件

ROS官方提供了自动加载yaml文件的功能,并且集成到了launch文件里面,只需要使用rosparam标签就能把yaml配置文件加载到ros的参数服务器里面,然后使用nodehandle.getParam()函数就可以方便的使用了。

下面给出关键的使用步骤:

  1. 编写yaml文件。注: 避免使用-分割数组,否则容易产生bug,数组使用[],逗号分隔元素。
  2. 编写launch文件,加载yaml。核心命令 <rosparam command="load" file="filepath" />
  3. cpp文件中访问yaml。直接使用nodehandle.getParam方法,注意参数的命名空间即可。

launch文件

<launch>
	<arg name="global_file" default="global_param.yaml" />
	<!-- 在node节点外部添加yaml文件,加载到参数服务器 -->
	<rosparam command="load" file="$(find learning_load_yaml)/param/$(arg global_file)" />
</launch>

直接使用就能将yaml文件解析成内存cpp对象,然后调用参数服务器访问。

代码中访问

int main(int argc, char** argv) {
  ros::init(argc, argv, "load_yaml");
  ros::NodeHandle nh;
  std::string global_car_name;
  // 获取全局yaml参数
  nh.getParam("/car_name", global_car_name);
  std::cout << "global_car_name: " << global_car_name << std::endl;
}

备注:yaml中的数组对应cpp标准库中的std::vector,字符串对应为std::string

功能包使用方法

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
git clone ...
cd ~/catkin_ws
catkin_make
source ./devel/setup.bash
roslaunch learning_load_yaml start.launch

完整项目

完整项目请查看github仓库

标签:文件,ROS,catkin,launch,yaml,ros,加载
From: https://www.cnblogs.com/LadissonLai/p/18052584

相关文章

  • ROS pluginlib使用教程
    pluginlib用法通俗一点说,plugin的用法就像是面向对象编程里面的多态。插件就是子类,插件实现父类的方法,那么系统调用父类方法时就是子类的方法,也就实现了替换。对应ROS里面只需要在launch文件中选择想要的插件,无需修改预案系统即可完成替换。这里实现一个常用的plugin场景。core......
  • ROS 同一工作空间下两个功能包如何相互调用
    如何在同一工作空间下调用另一ros功能包本项目有两个ros功能包,a_pack和b_pack,a_pack调用了b_pack的函数,本项目为了展示如何配置b_pack和a_pack功能包,让a_pack可以调用b_pack。在c++编程中,常见用法是将b_pack编译成库文件,然后b_pack对外提供头文件,a_pack对b_pack的调用就是通过引......
  • 【python接口自动化系列】python + pytest + requests + allure + jsonpath + pyyaml,
     前置基础:python虚拟环境的创建、操作、迁移等python操作yamlpython操作mysqlpytest简易教程 配套练习环境(含相关接口):https://www.cnblogs.com/uncleyong/p/17165143.html 如果文章不能访问,请联系处理,wx:ren168632201 python接口自动化系列(01):自动化测试框......
  • python加载库
    #testInstance.pyimportimportlibimportsysclassTestInstance:def__init__(self,projectName):self.projectName=projectNameself.lib=self.load_libraries()defload_libraries(self):#Import......
  • python接口自动化系列(02):yaml测试数据文件设计
     本系列汇总,请查看这里:https://www.cnblogs.com/uncleyong/p/18033074实现目标对测试数据进行设计,数据设计决定了后续读取数据的代码该如何实现。 关于被测试接口配套练习环境(含相关接口):https://www.cnblogs.com/uncleyong/p/17165143.html 常用数据用例数据频繁使用......
  • scrapy—图片解析(图片懒加载)
    笔记-图片数据爬取之ImagesPipeline-基于scrapy爬取字符串类型的数据和爬取图片类型的数据区别?-字符串:只需要基于xpth进行解析且提交管道进行持久化存储-图片:xpath解析出图片src属性值。单独的对图片地址发起请求获取图片二进制类型的数据-Imag......
  • 08. 场景加载
    awaitable关键字本节涉及到场景的加载和卸载,在勇士传说中,我们使用协程的方式来加载和卸载场景,在本节使用了unity2023.3最新的特性awaitableawaitable具体是啥,我也不太清楚,见下图加载场景在上一节中,我们监听了LoadRoomEvent事件,成功调用了SceneLoadManager.OnLoadRoom......
  • cnpm i报错 cpm:无法加载文件c:wsers vdministratorpata Roaming mpmcnpm.ps1,因为在
    cpm:无法加载文件c:wsersvdministratorpataRoamingmpmcnpm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅htps:/g.microsoft.con/fvlink/?LinkID=135170中的aboutExecutionPolicies。所在位置行:1字符:1+cnpmi.+CategoryInfoSecurityError:(:)[],PsSecuri......
  • vue项目引入高德地图报错:Map container div not exist (火狐浏览器不加载地图)
    问题描述:谷歌浏览器正常显示地图,火狐浏览器不加载,并且报错:  Mapcontainerdivnotexist错误代码如下:  修改后代码如下:  参考大佬:https://blog.csdn.net/white_777/article/details/128286558  ......
  • ros2自定义msg
    ROS2中自定义消息(CustomMessages)的作用是允许开发者定义自己的消息类型,以满足特定应用程序的需求。ROS消息是ROS中用于在节点之间传递数据的基本通信单元,它们描述了节点之间传递的数据结构和类型。自定义消息的作用包括但不限于以下几点:1.**适配特定应用需求**:自定义消息允......