Description
- Version: ROS 2 Humble
- Platform: Raspberry Pi 5 (using Ubuntu 22.04) connected to a PC (using Windows)
Steps To Reproduce
1°) On the one hand, by using the command line ros2 launch foxglove_bridge foxglove_bridge_launch.xml in the Ubuntu terminal, the address and the port are properly set judging by the terminal's feedback :
[INFO] [foxglove_bridge-1]: process started with pid [13913]
[foxglove_bridge-1] [INFO] [1721823866.109491784] [foxglove_bridge_component_manager]: Load Library: /opt/ros/humble/lib/libfoxglove_bridge_component.so
[foxglove_bridge-1] [INFO] [1721823866.120097007] [foxglove_bridge_component_manager]: Found class: rclcpp_components::NodeFactoryTemplate<foxglove_bridge::FoxgloveBridge>
[foxglove_bridge-1] [INFO] [1721823866.120203156] [foxglove_bridge_component_manager]: Instantiate class: rclcpp_components::NodeFactoryTemplate<foxglove_bridge::FoxgloveBridge>
[foxglove_bridge-1] [INFO] [1721823866.125399664] [foxglove_bridge]: Starting foxglove_bridge (humble, 0.7.7@) with WebSocket++/0.8.2
[foxglove_bridge-1] [INFO] [1721823866.126065432] [foxglove_bridge]: [WS] Server running without TLS
[foxglove_bridge-1] [INFO] [1721823866.126504308] [foxglove_bridge]: [WS] WebSocket server listening at ws://0.0.0.0:8765
[foxglove_bridge-1] [INFO] [1721823866.126538567] [foxglove_bridge]: [WS] WebSocket server run loop started
Therefore I can visualize things as expected in Foxglove Studio in the PC.
2°) On the other hand, I created the following launch file, which include the equivalent launch and other ROS2 functions:
from launch import LaunchDescription
from launch.actions import IncludeLaunchDescription, ExecuteProcess
from launch.launch_description_sources import PythonLaunchDescriptionSource
from launch_xml.launch_description_sources import XMLLaunchDescriptionSource
from launch_ros.actions import Node
import os
def generate_launch_description():
# Include rosbridge websocket [launch file] :
rosbridge_launch_path = os.path.join(get_package_share_directory('rosbridge_server'),
'launch',
'rosbridge_websocket_launch.xml')
rosbridge_launch = IncludeLaunchDescription( XMLLaunchDescriptionSource(rosbridge_launch_path) )
# Include foxglove bridge [launch file] :
foxglove_bridge_launch_path = os.path.join(get_package_share_directory('foxglove_bridge'),
'launch',
'foxglove_bridge_launch.xml')
foxglove_bridge_launch = IncludeLaunchDescription( XMLLaunchDescriptionSource(foxglove_bridge_launch_path) )
# Include xsarm moveit [launch file] :
xsarm_moveit_launch_path = os.path.join(get_package_share_directory('amlab_xsarm_moveit'),
'launch',
'xsarm_moveit.launch.py')
xsarm_moveit_launch = IncludeLaunchDescription( PythonLaunchDescriptionSource(xsarm_moveit_launch_path),
launch_arguments={'robot_model': 'wx250s', 'hardware_type': 'actual'}.items() )
# Include ros2_service_wrapper.py [executable] :
ros2_service_wrapper = ExecuteProcess( cmd=[ 'python3',
os.path.join(get_package_share_directory('amlab_xsarm_moveit'), 'ros2_service_wrapper.py') ],
output='screen')
# Launch the whole :
return LaunchDescription( [rosbridge_launch, foxglove_bridge_launch, xsarm_moveit_launch, ros2_service_wrapper] )
# Function to get packages paths :
def get_package_share_directory(package_name):
from ament_index_python.packages import get_package_share_directory
return get_package_share_directory(package_name)
In this way, the default address and port are not met as can be seen in the terminal feedback :
[foxglove_bridge-3] [INFO] [1721824501.660898719] [foxglove_bridge]: [WS] WebSocket server listening at ws://[::1]:9090
It should be ws://0.0.0.0:8765 instead of ws://[::1]:9090), so of course Foxglove Studio cannot get the data :(
3°) I can solve this by:
a) Specifying the address and the port as launch arguments in my launch file:
foxglove_bridge_launch = IncludeLaunchDescription( XMLLaunchDescriptionSource(foxglove_bridge_launch_path),
launch_arguments={'port': '8765', 'address': '0.0.0.0'}.items() )
b) Inverting the order of rosbridge_launch and foxglove_bridge_launch in return LaunchDescription([...]).
By doing so I obtain ws://0.0.0.0:8765 as expected and Foxglove Studio works.
Expected Behavior
The result obtained at step 3°) should appear at the step 2°), since the port and the address are set by default to "8765" and "0.0.0.0" in foxglove_bridge_launch.xml, which is the file called by my launch code. What is the reason for this error?
Description
Steps To Reproduce
1°) On the one hand, by using the command line
ros2 launch foxglove_bridge foxglove_bridge_launch.xmlin the Ubuntu terminal, the address and the port are properly set judging by the terminal's feedback :Therefore I can visualize things as expected in Foxglove Studio in the PC.
2°) On the other hand, I created the following launch file, which include the equivalent launch and other ROS2 functions:
In this way, the default address and port are not met as can be seen in the terminal feedback :
[foxglove_bridge-3] [INFO] [1721824501.660898719] [foxglove_bridge]: [WS] WebSocket server listening at ws://[::1]:9090It should be
ws://0.0.0.0:8765instead ofws://[::1]:9090), so of course Foxglove Studio cannot get the data :(3°) I can solve this by:
a) Specifying the address and the port as launch arguments in my launch file:
b) Inverting the order of
rosbridge_launchandfoxglove_bridge_launchinreturn LaunchDescription([...]).By doing so I obtain
ws://0.0.0.0:8765as expected and Foxglove Studio works.Expected Behavior
The result obtained at step 3°) should appear at the step 2°), since the port and the address are set by default to "8765" and "0.0.0.0" in
foxglove_bridge_launch.xml, which is the file called by my launch code. What is the reason for this error?