ros加载yaml文件
ROS官方提供了自动加载yaml文件的功能,并且集成到了launch文件里面,只需要使用rosparam标签就能把yaml配置文件加载到ros的参数服务器里面,然后使用nodehandle.getParam()函数就可以方便的使用了。
下面给出关键的使用步骤:
- 编写yaml文件。注: 避免使用-分割数组,否则容易产生bug,数组使用[],逗号分隔元素。
- 编写launch文件,加载yaml。核心命令
<rosparam command="load" file="filepath" />
- 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>
直接使用
代码中访问
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