ros2 node stuck in RCLCPP_INFO when using launch files
Hi,
I write the following main function for runing my node:
int main(int argc, char** argv)
{
rclcpp::init(argc, argv);
auto baseNode = std::make_shared<ElfinBaseNode>();
if (!baseNode->start())
{
std::cout << "Failed to start elfin base node!" << std::endl;
return -1;
}
RCLCPP_INFO(baseNode->get_logger(), "Elfin base node starts OK.");
//std::cout << "Elfin base node starts OK." << std::endl;
rclcpp::spin(baseNode);
rclcpp::shutdown();
return 0;
}
But what is strange is if I start the node with launch file and comment the code:std::cout << "Elfin base node starts OK." << std::endl;
, the output of the console with be like this:
but if I uncomment the std::cout
code, the output of the console with be like this:
It's obvious that the second output is correct, and it seems the node was stuck in somewhere from the first output picture.
I have also try with ros2 run
command, with and without comment the std::cout
code, the output are all correct.
I am wondering if I did something wrong in ros2, because this code is ported from ros1. Hope someone could help me out, Thanks for advance.
Here is the launch file:
import os
from ament_index_python.packages import get_package_share_directory
from launch import LaunchDescription
from launch.actions import DeclareLaunchArgument
from launch.substitutions import LaunchConfiguration
from launch_ros.actions import Node
def generate_launch_description():
param_file = LaunchConfiguration(
'param_file',
default = os.path.join(
get_package_share_directory('elfin_base'),
'params', 'base_config.yaml'
)
)
return LaunchDescription([
DeclareLaunchArgument(
'param_file',
default_value = param_file,
description="Full path to param file to load"
),
Node(
package='elfin_base',
node_executable='elfin_base_node',
node_name='elfin_base_node',
parameters=[param_file],
output='screen'
),
])
Anyone could give me some clues? I am really frustrated about this problem, thanks.