我正在尝试制作一个带有两个节点的ros包,一个在python上开发,另一个在c++中开发,我想用launchfile读取一些参数。
当我尝试在launchfile
中定义一个类似于下面的参数时,问题就出现了:
<?xml version="1.0" encoding="UTF-8"?>
<launch>
<!--#### MODIFY THESE VALUES ####-->
<arg name="print_detect" default="true"/>
<!--#############################-->
<!-- Nodos Python -->
<!-- Nodos C++ -->
<node name="yolo_result_processor" pkg="yolov8_inference" type="yolo_result_processor" output="screen">
<param name="print_detect" value="$(arg print_detect)"/>
<!-- Configurar aquí los parámetros específicos para el nodo C++ -->
</node>
</launch>
字符串
我尝试按如下方式阅读参数:
#INCLUDES#
#include <ros/ros.h>
bool printDetect = false;
int main(int argc, char** argv)
{
ros::init(argc, argv, "yolo_result_processor");
ros::NodeHandle nh;
// Obtener el valor del parámetro "print_detect"
if (nh.getParam("print_detect", printDetect)){
std::cout << "printDetect = " << printDetect << std::endl;
}else{
ROS_ERROR("No se pudo obtener el valor del parametro 'print_detect'. Usando valor predeterminado.");
}
std::cout << "Running" << std::endl;
// Suscribirse al mensaje YoloResult
ros::Subscriber sub = nh.subscribe("yolo_result", 1, yoloResultCallback);
ros::spin();
return 0;
}
型
一切都正确编译,但当我使用以下命令启动节点时:
roslaunch <pkg_name> <launch_file>
型
它进入else语句并打印错误消息,就好像它无法获取参数一样。
1条答案
按热度按时间oug3syen1#
通过删除与我试图在
launchfile
中读取的参数对应的所有行,并在初始化节点之前添加这一行来修复它:字符串
所以文件看起来像这样:
型