No version for distro humble showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

tobas_image_processing package from tobas repo

tobas tobas_camera tobas_camera_msgs tobas_camera_ros_interface tobas_image_processing tobas_command_msgs tobas_command_msgs_adapter tobas_algorithm tobas_common tobas_control tobas_dsp tobas_eigen_conversions tobas_eigen_msgs tobas_eigen_msgs_adapter tobas_eigen_tools tobas_geographic tobas_ic_drivers tobas_ic_drivers_ros tobas_kdl tobas_kdl_conversions tobas_kdl_msgs tobas_kdl_msgs_adapter tobas_kdl_parser tobas_linux tobas_math tobas_nlp tobas_path_tools tobas_quadprog tobas_ros2_tools tobas_std_msgs tobas_std_msgs_adapter tobas_std_tools tobas_string_tools tobas_time_tools tobas_trajectory_generation tobas_urdf tobas_xml_tools tobas_yaml_tools tobas_components_rt tobas_config_servers tobas_connection_monitor tobas_constants tobas_controllers tobas_fixed_wing_controller tobas_nonplanar_multi_controller tobas_planar_multi_controller tobas_random_axis_tilt_multi_controller tobas_y_axis_tilt_multi_controller tobas_core tobas_cui tobas_keyboard tobas_keyboard_teleop tobas_debug_msgs tobas_debug_msgs_adapter tobas_debug_tools tobas_description tobas_disturbance_observer tobas_dparam tobas_dparam_client tobas_dparam_common tobas_dparam_msgs tobas_dparam_server tobas_drone tobas_drone_core tobas_drone_msgs tobas_drone_msgs_adapter tobas_drone_server tobas_drone_tools tobas_dummy_pkg tobas_eskf tobas_failsafe tobas_fake_publishers tobas_fc1xx tobas_fc1xx_core tobas_fc1xx_ros tobas_fc1xx_test tobas_fc2xx tobas_fc2xx_core tobas_fc2xx_ros tobas_fc2xx_test tobas_hardware tobas_hardware_common tobas_joint_states_bridge tobas_landing_detection tobas_manipulation tobas_mission tobas_mission_execution_mc tobas_mission_items tobas_mission_msgs tobas_mission_msgs_adapter tobas_msgs tobas_msgs_adapter tobas_node tobas_object_avoidance tobas_pose_pid tobas_property tobas_property_client tobas_property_common tobas_property_msgs tobas_property_server tobas_property_tree tobas_rc_teleop tobas_dynamixel tobas_dynamixel_handler tobas_dynamixel_msgs tobas_dynamixel_ros_interface tobas_real tobas_real_common tobas_real_msgs tobas_real_ros tobas_sbus_driver tobas_ros_interface tobas_rosbag_recorder tobas_rotor_anomaly_detection tobas_rotor_controller tobas_tools tobas_topic_throttle tobas_tree_server tobas_version tobas_vibration_filter tobas_wind_model tobas_code_style tobas_cpp_code_style_example tobas_examples tobas_examples_cpp tobas_examples_py tobas_external tobas_inja_vendor tobas_rapidcsv_vendor tobas_actuator_test tobas_bootmedia_config tobas_colcon_cpp tobas_control_system tobas_crypt tobas_cyclonedds_config tobas_flight_log_gui tobas_gamepad tobas_gamepad_core tobas_gamepad_ros tobas_gazebo tobas_gazebo_common tobas_gazebo_conversions tobas_gazebo_gui_plugins tobas_gazebo_msgs tobas_gazebo_ros tobas_gazebo_sim tobas_gazebo_system_plugins tobas_gazebo_tools tobas_gcs tobas_git tobas_gui tobas_gui_common tobas_parameter_tuning tobas_qt_tools tobas_qwt_wrapper tobas_rqt_bridge tobas_rviz_plugin tobas_rviz_wrapper tobas_sensor_calibration tobas_setup_assistant tobas_simulation_gui tobas_ssh tobas_ssh_authkey tobas_ssh_client tobas_ssh_msgs tobas_ssh_server tobas_tile_proxy tobas_uadf tobas_udev tobas_urdf_builder tobas_urdf_builder_plugin tobas_visualization_msgs tobas_wpa_supplicant

ROS Distro
jazzy

Package Summary

Version 2.16.0
License GPL-3.0-or-later
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/TobasFlightControl/tobas.git
VCS Type git
VCS Version jazzy
Last Updated 2026-08-11
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS 2 nodes for video capture, image compression, decompression, conversion, and display.

Maintainers

  • Masayoshi Dohi

Authors

No additional authors.

tobas_image_processing

nodes

  • compressed_image_viewer
    • Displays MJPG video received from a ROS topic.
    • parameters
      • compressed_image_topic : Name of the ROS topic to receive and display.
  • cx_gb400_publisher
    • Operates the cx_gb400.
    • Subscribes to the aircraft attitude and sends it to the camera.
    • Subscribes to the target attitude for the camera gimbal and sends it to the camera.
    • Publishes captured video to a ROS topic when disable_video_streaming = false.
    • parameters
      • device_name : Device name used by the OS to recognize the cx_gb400.
      • disable_video_streaming : Whether this node retrieves video from the camera. Set this to true, for example, when using ffmpeg to send video through a non-ROS transport.
      • image_topic : Name of the ROS topic where this node publishes video.
      • FPS : Frames per second. Specifies the operating frequency of this node, which effectively corresponds to the camera FPS.
  • ffmpeg_to_ros_msg_converter
    • Receives video sent by ffmpeg or another non-ROS transport and republishes it as a ROS topic.
    • parameters
      • ros_image_topic : Topic name used when republishing.
      • protocol : Video transport protocol to receive.
      • port_uri : Port used to receive video.
      • output_msg_encoding : Encoding of the video when republishing.
      • frame_id : frame_id of the ROS video topic when republishing.
      • FPS : Frames per second of the incoming video.
  • h264_decompressor
    • Subscribes to H.264-compressed video as ffmpeg_image_transport_msgs/msg/FFMPEGPacket, decompresses it, and publishes it.
    • parameters
      • h264_topic : Topic name for H.264-compressed video data.
      • decoded_topic : Topic name for decompressed video data.
  • mjpg_decompressor
    • Subscribes to images of type sensor_msgs::msg::CompressedImage (equivalent to MJPG), decompresses them, and publishes them as sensor_msgs::msg::Image.
    • parameters
      • mjpg_topic : Topic name for MJPG-compressed video data.
      • decoded_topic : Topic name for decompressed video data.
  • mjpg_compressor
    • Subscribes to images of type sensor_msgs::msg::CompressedImage (equivalent to MJPG), compresses them, and publishes them as MJPG or H.264 video.
    • parameters
      • mjpg_topic : Topic name for the MJPG input to be compressed.
      • resized_topic : Topic name after compression.
      • encoding : Encoding of the compressed video: MJPG or H.264.
      • resize_rate : Ratio used to reduce image width and height before compression when further compression is desired.
  • video_dev_publisher
    • Retrieves video data from the camera and publishes it as a ROS topic.
    • parameters
      • use_compressed_image : Whether the video data retrieved from the camera is MJPG or an uncompressed format such as YUYV.
      • device_name : Device name used by the OS to recognize the camera device.
      • image_topic : Name of the ROS topic to publish.

Displaying Video

Use rviz2 to display video. Start rviz2, then add an Image panel from the Add button at the lower left. Select the video topic name, then adjust QoS by setting Reliability to Best Effort.

However, the video topic type must be sensor_msgs/msg/Image. In other words, the image must be uncompressed. To display the contents of an MJPG or H.264 video topic, decompress it with another node and display the decompressed video topic in rviz2. MJPG can be decompressed with mjpg_decompressor, and H.264 can be decompressed with h264_decompressor.

launch files

  • cx_gb400_ffmpeg.launch.py
    • Retrieves video from the cx_gb400 and sends it over SRT with ffmpeg while also controlling the gimbal. Video is not distributed as a ROS topic.
    • Example execution:
    $ ros2 launch tobas_image_processing cx_gb400_ffmpeg.launch.py server_and_port:=127.0.0.1:8888 # Send video.
    $ ffplay -fflags nobuffer -autoexit "srt://127.0.0.1:8888?mode=listener" # Receive video.
    
  • To republish it as a ROS topic and display it in rviz2, run:
    $ ros2 launch tobas_image_processing cx_gb400_ffmpeg.launch.py server_and_port:=127.0.0.1:8888 # Send video.
    $ ros2 run tobas_image_processing ffmpeg_to_ros_msg_converter
    $ rviz2 # Display the image topic as an image.
    
  • parameters
    • server_and_port : Destination server IP address and port number. Specify it as <ip_address>:<port>.
    • image_scale : Factor by which to reduce the width and height of the transmitted video. Setting this to 2 sends the video at half size.
  • mjpg_compressor_example.launch.py
    • Example that retrieves MJPG video from /dev/video0, publishes it as a ROS topic, compresses it to H.264, and then decompresses it. The decompressed video can be viewed in rviz2.
CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged tobas_image_processing at Robotics Stack Exchange

Package symbol

tobas_image_processing package from tobas repo

tobas tobas_camera tobas_camera_msgs tobas_camera_ros_interface tobas_image_processing tobas_command_msgs tobas_command_msgs_adapter tobas_algorithm tobas_common tobas_control tobas_dsp tobas_eigen_conversions tobas_eigen_msgs tobas_eigen_msgs_adapter tobas_eigen_tools tobas_geographic tobas_ic_drivers tobas_ic_drivers_ros tobas_kdl tobas_kdl_conversions tobas_kdl_msgs tobas_kdl_msgs_adapter tobas_kdl_parser tobas_linux tobas_math tobas_nlp tobas_path_tools tobas_quadprog tobas_ros2_tools tobas_std_msgs tobas_std_msgs_adapter tobas_std_tools tobas_string_tools tobas_time_tools tobas_trajectory_generation tobas_urdf tobas_xml_tools tobas_yaml_tools tobas_components_rt tobas_config_servers tobas_connection_monitor tobas_constants tobas_controllers tobas_fixed_wing_controller tobas_nonplanar_multi_controller tobas_planar_multi_controller tobas_random_axis_tilt_multi_controller tobas_y_axis_tilt_multi_controller tobas_core tobas_cui tobas_keyboard tobas_keyboard_teleop tobas_debug_msgs tobas_debug_msgs_adapter tobas_debug_tools tobas_description tobas_disturbance_observer tobas_dparam tobas_dparam_client tobas_dparam_common tobas_dparam_msgs tobas_dparam_server tobas_drone tobas_drone_core tobas_drone_msgs tobas_drone_msgs_adapter tobas_drone_server tobas_drone_tools tobas_dummy_pkg tobas_eskf tobas_failsafe tobas_fake_publishers tobas_fc1xx tobas_fc1xx_core tobas_fc1xx_ros tobas_fc1xx_test tobas_fc2xx tobas_fc2xx_core tobas_fc2xx_ros tobas_fc2xx_test tobas_hardware tobas_hardware_common tobas_joint_states_bridge tobas_landing_detection tobas_manipulation tobas_mission tobas_mission_execution_mc tobas_mission_items tobas_mission_msgs tobas_mission_msgs_adapter tobas_msgs tobas_msgs_adapter tobas_node tobas_object_avoidance tobas_pose_pid tobas_property tobas_property_client tobas_property_common tobas_property_msgs tobas_property_server tobas_property_tree tobas_rc_teleop tobas_dynamixel tobas_dynamixel_handler tobas_dynamixel_msgs tobas_dynamixel_ros_interface tobas_real tobas_real_common tobas_real_msgs tobas_real_ros tobas_sbus_driver tobas_ros_interface tobas_rosbag_recorder tobas_rotor_anomaly_detection tobas_rotor_controller tobas_tools tobas_topic_throttle tobas_tree_server tobas_version tobas_vibration_filter tobas_wind_model tobas_code_style tobas_cpp_code_style_example tobas_examples tobas_examples_cpp tobas_examples_py tobas_external tobas_inja_vendor tobas_rapidcsv_vendor tobas_actuator_test tobas_bootmedia_config tobas_colcon_cpp tobas_control_system tobas_crypt tobas_cyclonedds_config tobas_flight_log_gui tobas_gamepad tobas_gamepad_core tobas_gamepad_ros tobas_gazebo tobas_gazebo_common tobas_gazebo_conversions tobas_gazebo_gui_plugins tobas_gazebo_msgs tobas_gazebo_ros tobas_gazebo_sim tobas_gazebo_system_plugins tobas_gazebo_tools tobas_gcs tobas_git tobas_gui tobas_gui_common tobas_parameter_tuning tobas_qt_tools tobas_qwt_wrapper tobas_rqt_bridge tobas_rviz_plugin tobas_rviz_wrapper tobas_sensor_calibration tobas_setup_assistant tobas_simulation_gui tobas_ssh tobas_ssh_authkey tobas_ssh_client tobas_ssh_msgs tobas_ssh_server tobas_tile_proxy tobas_uadf tobas_udev tobas_urdf_builder tobas_urdf_builder_plugin tobas_visualization_msgs tobas_wpa_supplicant

ROS Distro
jazzy

Package Summary

Version 2.16.0
License GPL-3.0-or-later
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/TobasFlightControl/tobas.git
VCS Type git
VCS Version jazzy
Last Updated 2026-08-11
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS 2 nodes for video capture, image compression, decompression, conversion, and display.

Maintainers

  • Masayoshi Dohi

Authors

No additional authors.

tobas_image_processing

nodes

  • compressed_image_viewer
    • Displays MJPG video received from a ROS topic.
    • parameters
      • compressed_image_topic : Name of the ROS topic to receive and display.
  • cx_gb400_publisher
    • Operates the cx_gb400.
    • Subscribes to the aircraft attitude and sends it to the camera.
    • Subscribes to the target attitude for the camera gimbal and sends it to the camera.
    • Publishes captured video to a ROS topic when disable_video_streaming = false.
    • parameters
      • device_name : Device name used by the OS to recognize the cx_gb400.
      • disable_video_streaming : Whether this node retrieves video from the camera. Set this to true, for example, when using ffmpeg to send video through a non-ROS transport.
      • image_topic : Name of the ROS topic where this node publishes video.
      • FPS : Frames per second. Specifies the operating frequency of this node, which effectively corresponds to the camera FPS.
  • ffmpeg_to_ros_msg_converter
    • Receives video sent by ffmpeg or another non-ROS transport and republishes it as a ROS topic.
    • parameters
      • ros_image_topic : Topic name used when republishing.
      • protocol : Video transport protocol to receive.
      • port_uri : Port used to receive video.
      • output_msg_encoding : Encoding of the video when republishing.
      • frame_id : frame_id of the ROS video topic when republishing.
      • FPS : Frames per second of the incoming video.
  • h264_decompressor
    • Subscribes to H.264-compressed video as ffmpeg_image_transport_msgs/msg/FFMPEGPacket, decompresses it, and publishes it.
    • parameters
      • h264_topic : Topic name for H.264-compressed video data.
      • decoded_topic : Topic name for decompressed video data.
  • mjpg_decompressor
    • Subscribes to images of type sensor_msgs::msg::CompressedImage (equivalent to MJPG), decompresses them, and publishes them as sensor_msgs::msg::Image.
    • parameters
      • mjpg_topic : Topic name for MJPG-compressed video data.
      • decoded_topic : Topic name for decompressed video data.
  • mjpg_compressor
    • Subscribes to images of type sensor_msgs::msg::CompressedImage (equivalent to MJPG), compresses them, and publishes them as MJPG or H.264 video.
    • parameters
      • mjpg_topic : Topic name for the MJPG input to be compressed.
      • resized_topic : Topic name after compression.
      • encoding : Encoding of the compressed video: MJPG or H.264.
      • resize_rate : Ratio used to reduce image width and height before compression when further compression is desired.
  • video_dev_publisher
    • Retrieves video data from the camera and publishes it as a ROS topic.
    • parameters
      • use_compressed_image : Whether the video data retrieved from the camera is MJPG or an uncompressed format such as YUYV.
      • device_name : Device name used by the OS to recognize the camera device.
      • image_topic : Name of the ROS topic to publish.

Displaying Video

Use rviz2 to display video. Start rviz2, then add an Image panel from the Add button at the lower left. Select the video topic name, then adjust QoS by setting Reliability to Best Effort.

However, the video topic type must be sensor_msgs/msg/Image. In other words, the image must be uncompressed. To display the contents of an MJPG or H.264 video topic, decompress it with another node and display the decompressed video topic in rviz2. MJPG can be decompressed with mjpg_decompressor, and H.264 can be decompressed with h264_decompressor.

launch files

  • cx_gb400_ffmpeg.launch.py
    • Retrieves video from the cx_gb400 and sends it over SRT with ffmpeg while also controlling the gimbal. Video is not distributed as a ROS topic.
    • Example execution:
    $ ros2 launch tobas_image_processing cx_gb400_ffmpeg.launch.py server_and_port:=127.0.0.1:8888 # Send video.
    $ ffplay -fflags nobuffer -autoexit "srt://127.0.0.1:8888?mode=listener" # Receive video.
    
  • To republish it as a ROS topic and display it in rviz2, run:
    $ ros2 launch tobas_image_processing cx_gb400_ffmpeg.launch.py server_and_port:=127.0.0.1:8888 # Send video.
    $ ros2 run tobas_image_processing ffmpeg_to_ros_msg_converter
    $ rviz2 # Display the image topic as an image.
    
  • parameters
    • server_and_port : Destination server IP address and port number. Specify it as <ip_address>:<port>.
    • image_scale : Factor by which to reduce the width and height of the transmitted video. Setting this to 2 sends the video at half size.
  • mjpg_compressor_example.launch.py
    • Example that retrieves MJPG video from /dev/video0, publishes it as a ROS topic, compresses it to H.264, and then decompresses it. The decompressed video can be viewed in rviz2.
CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged tobas_image_processing at Robotics Stack Exchange

No version for distro kilted showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

tobas_image_processing package from tobas repo

tobas tobas_camera tobas_camera_msgs tobas_camera_ros_interface tobas_image_processing tobas_command_msgs tobas_command_msgs_adapter tobas_algorithm tobas_common tobas_control tobas_dsp tobas_eigen_conversions tobas_eigen_msgs tobas_eigen_msgs_adapter tobas_eigen_tools tobas_geographic tobas_ic_drivers tobas_ic_drivers_ros tobas_kdl tobas_kdl_conversions tobas_kdl_msgs tobas_kdl_msgs_adapter tobas_kdl_parser tobas_linux tobas_math tobas_nlp tobas_path_tools tobas_quadprog tobas_ros2_tools tobas_std_msgs tobas_std_msgs_adapter tobas_std_tools tobas_string_tools tobas_time_tools tobas_trajectory_generation tobas_urdf tobas_xml_tools tobas_yaml_tools tobas_components_rt tobas_config_servers tobas_connection_monitor tobas_constants tobas_controllers tobas_fixed_wing_controller tobas_nonplanar_multi_controller tobas_planar_multi_controller tobas_random_axis_tilt_multi_controller tobas_y_axis_tilt_multi_controller tobas_core tobas_cui tobas_keyboard tobas_keyboard_teleop tobas_debug_msgs tobas_debug_msgs_adapter tobas_debug_tools tobas_description tobas_disturbance_observer tobas_dparam tobas_dparam_client tobas_dparam_common tobas_dparam_msgs tobas_dparam_server tobas_drone tobas_drone_core tobas_drone_msgs tobas_drone_msgs_adapter tobas_drone_server tobas_drone_tools tobas_dummy_pkg tobas_eskf tobas_failsafe tobas_fake_publishers tobas_fc1xx tobas_fc1xx_core tobas_fc1xx_ros tobas_fc1xx_test tobas_fc2xx tobas_fc2xx_core tobas_fc2xx_ros tobas_fc2xx_test tobas_hardware tobas_hardware_common tobas_joint_states_bridge tobas_landing_detection tobas_manipulation tobas_mission tobas_mission_execution_mc tobas_mission_items tobas_mission_msgs tobas_mission_msgs_adapter tobas_msgs tobas_msgs_adapter tobas_node tobas_object_avoidance tobas_pose_pid tobas_property tobas_property_client tobas_property_common tobas_property_msgs tobas_property_server tobas_property_tree tobas_rc_teleop tobas_dynamixel tobas_dynamixel_handler tobas_dynamixel_msgs tobas_dynamixel_ros_interface tobas_real tobas_real_common tobas_real_msgs tobas_real_ros tobas_sbus_driver tobas_ros_interface tobas_rosbag_recorder tobas_rotor_anomaly_detection tobas_rotor_controller tobas_tools tobas_topic_throttle tobas_tree_server tobas_version tobas_vibration_filter tobas_wind_model tobas_code_style tobas_cpp_code_style_example tobas_examples tobas_examples_cpp tobas_examples_py tobas_external tobas_inja_vendor tobas_rapidcsv_vendor tobas_actuator_test tobas_bootmedia_config tobas_colcon_cpp tobas_control_system tobas_crypt tobas_cyclonedds_config tobas_flight_log_gui tobas_gamepad tobas_gamepad_core tobas_gamepad_ros tobas_gazebo tobas_gazebo_common tobas_gazebo_conversions tobas_gazebo_gui_plugins tobas_gazebo_msgs tobas_gazebo_ros tobas_gazebo_sim tobas_gazebo_system_plugins tobas_gazebo_tools tobas_gcs tobas_git tobas_gui tobas_gui_common tobas_parameter_tuning tobas_qt_tools tobas_qwt_wrapper tobas_rqt_bridge tobas_rviz_plugin tobas_rviz_wrapper tobas_sensor_calibration tobas_setup_assistant tobas_simulation_gui tobas_ssh tobas_ssh_authkey tobas_ssh_client tobas_ssh_msgs tobas_ssh_server tobas_tile_proxy tobas_uadf tobas_udev tobas_urdf_builder tobas_urdf_builder_plugin tobas_visualization_msgs tobas_wpa_supplicant

ROS Distro
jazzy

Package Summary

Version 2.16.0
License GPL-3.0-or-later
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/TobasFlightControl/tobas.git
VCS Type git
VCS Version jazzy
Last Updated 2026-08-11
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS 2 nodes for video capture, image compression, decompression, conversion, and display.

Maintainers

  • Masayoshi Dohi

Authors

No additional authors.

tobas_image_processing

nodes

  • compressed_image_viewer
    • Displays MJPG video received from a ROS topic.
    • parameters
      • compressed_image_topic : Name of the ROS topic to receive and display.
  • cx_gb400_publisher
    • Operates the cx_gb400.
    • Subscribes to the aircraft attitude and sends it to the camera.
    • Subscribes to the target attitude for the camera gimbal and sends it to the camera.
    • Publishes captured video to a ROS topic when disable_video_streaming = false.
    • parameters
      • device_name : Device name used by the OS to recognize the cx_gb400.
      • disable_video_streaming : Whether this node retrieves video from the camera. Set this to true, for example, when using ffmpeg to send video through a non-ROS transport.
      • image_topic : Name of the ROS topic where this node publishes video.
      • FPS : Frames per second. Specifies the operating frequency of this node, which effectively corresponds to the camera FPS.
  • ffmpeg_to_ros_msg_converter
    • Receives video sent by ffmpeg or another non-ROS transport and republishes it as a ROS topic.
    • parameters
      • ros_image_topic : Topic name used when republishing.
      • protocol : Video transport protocol to receive.
      • port_uri : Port used to receive video.
      • output_msg_encoding : Encoding of the video when republishing.
      • frame_id : frame_id of the ROS video topic when republishing.
      • FPS : Frames per second of the incoming video.
  • h264_decompressor
    • Subscribes to H.264-compressed video as ffmpeg_image_transport_msgs/msg/FFMPEGPacket, decompresses it, and publishes it.
    • parameters
      • h264_topic : Topic name for H.264-compressed video data.
      • decoded_topic : Topic name for decompressed video data.
  • mjpg_decompressor
    • Subscribes to images of type sensor_msgs::msg::CompressedImage (equivalent to MJPG), decompresses them, and publishes them as sensor_msgs::msg::Image.
    • parameters
      • mjpg_topic : Topic name for MJPG-compressed video data.
      • decoded_topic : Topic name for decompressed video data.
  • mjpg_compressor
    • Subscribes to images of type sensor_msgs::msg::CompressedImage (equivalent to MJPG), compresses them, and publishes them as MJPG or H.264 video.
    • parameters
      • mjpg_topic : Topic name for the MJPG input to be compressed.
      • resized_topic : Topic name after compression.
      • encoding : Encoding of the compressed video: MJPG or H.264.
      • resize_rate : Ratio used to reduce image width and height before compression when further compression is desired.
  • video_dev_publisher
    • Retrieves video data from the camera and publishes it as a ROS topic.
    • parameters
      • use_compressed_image : Whether the video data retrieved from the camera is MJPG or an uncompressed format such as YUYV.
      • device_name : Device name used by the OS to recognize the camera device.
      • image_topic : Name of the ROS topic to publish.

Displaying Video

Use rviz2 to display video. Start rviz2, then add an Image panel from the Add button at the lower left. Select the video topic name, then adjust QoS by setting Reliability to Best Effort.

However, the video topic type must be sensor_msgs/msg/Image. In other words, the image must be uncompressed. To display the contents of an MJPG or H.264 video topic, decompress it with another node and display the decompressed video topic in rviz2. MJPG can be decompressed with mjpg_decompressor, and H.264 can be decompressed with h264_decompressor.

launch files

  • cx_gb400_ffmpeg.launch.py
    • Retrieves video from the cx_gb400 and sends it over SRT with ffmpeg while also controlling the gimbal. Video is not distributed as a ROS topic.
    • Example execution:
    $ ros2 launch tobas_image_processing cx_gb400_ffmpeg.launch.py server_and_port:=127.0.0.1:8888 # Send video.
    $ ffplay -fflags nobuffer -autoexit "srt://127.0.0.1:8888?mode=listener" # Receive video.
    
  • To republish it as a ROS topic and display it in rviz2, run:
    $ ros2 launch tobas_image_processing cx_gb400_ffmpeg.launch.py server_and_port:=127.0.0.1:8888 # Send video.
    $ ros2 run tobas_image_processing ffmpeg_to_ros_msg_converter
    $ rviz2 # Display the image topic as an image.
    
  • parameters
    • server_and_port : Destination server IP address and port number. Specify it as <ip_address>:<port>.
    • image_scale : Factor by which to reduce the width and height of the transmitted video. Setting this to 2 sends the video at half size.
  • mjpg_compressor_example.launch.py
    • Example that retrieves MJPG video from /dev/video0, publishes it as a ROS topic, compresses it to H.264, and then decompresses it. The decompressed video can be viewed in rviz2.
CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged tobas_image_processing at Robotics Stack Exchange

No version for distro lyrical showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

tobas_image_processing package from tobas repo

tobas tobas_camera tobas_camera_msgs tobas_camera_ros_interface tobas_image_processing tobas_command_msgs tobas_command_msgs_adapter tobas_algorithm tobas_common tobas_control tobas_dsp tobas_eigen_conversions tobas_eigen_msgs tobas_eigen_msgs_adapter tobas_eigen_tools tobas_geographic tobas_ic_drivers tobas_ic_drivers_ros tobas_kdl tobas_kdl_conversions tobas_kdl_msgs tobas_kdl_msgs_adapter tobas_kdl_parser tobas_linux tobas_math tobas_nlp tobas_path_tools tobas_quadprog tobas_ros2_tools tobas_std_msgs tobas_std_msgs_adapter tobas_std_tools tobas_string_tools tobas_time_tools tobas_trajectory_generation tobas_urdf tobas_xml_tools tobas_yaml_tools tobas_components_rt tobas_config_servers tobas_connection_monitor tobas_constants tobas_controllers tobas_fixed_wing_controller tobas_nonplanar_multi_controller tobas_planar_multi_controller tobas_random_axis_tilt_multi_controller tobas_y_axis_tilt_multi_controller tobas_core tobas_cui tobas_keyboard tobas_keyboard_teleop tobas_debug_msgs tobas_debug_msgs_adapter tobas_debug_tools tobas_description tobas_disturbance_observer tobas_dparam tobas_dparam_client tobas_dparam_common tobas_dparam_msgs tobas_dparam_server tobas_drone tobas_drone_core tobas_drone_msgs tobas_drone_msgs_adapter tobas_drone_server tobas_drone_tools tobas_dummy_pkg tobas_eskf tobas_failsafe tobas_fake_publishers tobas_fc1xx tobas_fc1xx_core tobas_fc1xx_ros tobas_fc1xx_test tobas_fc2xx tobas_fc2xx_core tobas_fc2xx_ros tobas_fc2xx_test tobas_hardware tobas_hardware_common tobas_joint_states_bridge tobas_landing_detection tobas_manipulation tobas_mission tobas_mission_execution_mc tobas_mission_items tobas_mission_msgs tobas_mission_msgs_adapter tobas_msgs tobas_msgs_adapter tobas_node tobas_object_avoidance tobas_pose_pid tobas_property tobas_property_client tobas_property_common tobas_property_msgs tobas_property_server tobas_property_tree tobas_rc_teleop tobas_dynamixel tobas_dynamixel_handler tobas_dynamixel_msgs tobas_dynamixel_ros_interface tobas_real tobas_real_common tobas_real_msgs tobas_real_ros tobas_sbus_driver tobas_ros_interface tobas_rosbag_recorder tobas_rotor_anomaly_detection tobas_rotor_controller tobas_tools tobas_topic_throttle tobas_tree_server tobas_version tobas_vibration_filter tobas_wind_model tobas_code_style tobas_cpp_code_style_example tobas_examples tobas_examples_cpp tobas_examples_py tobas_external tobas_inja_vendor tobas_rapidcsv_vendor tobas_actuator_test tobas_bootmedia_config tobas_colcon_cpp tobas_control_system tobas_crypt tobas_cyclonedds_config tobas_flight_log_gui tobas_gamepad tobas_gamepad_core tobas_gamepad_ros tobas_gazebo tobas_gazebo_common tobas_gazebo_conversions tobas_gazebo_gui_plugins tobas_gazebo_msgs tobas_gazebo_ros tobas_gazebo_sim tobas_gazebo_system_plugins tobas_gazebo_tools tobas_gcs tobas_git tobas_gui tobas_gui_common tobas_parameter_tuning tobas_qt_tools tobas_qwt_wrapper tobas_rqt_bridge tobas_rviz_plugin tobas_rviz_wrapper tobas_sensor_calibration tobas_setup_assistant tobas_simulation_gui tobas_ssh tobas_ssh_authkey tobas_ssh_client tobas_ssh_msgs tobas_ssh_server tobas_tile_proxy tobas_uadf tobas_udev tobas_urdf_builder tobas_urdf_builder_plugin tobas_visualization_msgs tobas_wpa_supplicant

ROS Distro
jazzy

Package Summary

Version 2.16.0
License GPL-3.0-or-later
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/TobasFlightControl/tobas.git
VCS Type git
VCS Version jazzy
Last Updated 2026-08-11
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS 2 nodes for video capture, image compression, decompression, conversion, and display.

Maintainers

  • Masayoshi Dohi

Authors

No additional authors.

tobas_image_processing

nodes

  • compressed_image_viewer
    • Displays MJPG video received from a ROS topic.
    • parameters
      • compressed_image_topic : Name of the ROS topic to receive and display.
  • cx_gb400_publisher
    • Operates the cx_gb400.
    • Subscribes to the aircraft attitude and sends it to the camera.
    • Subscribes to the target attitude for the camera gimbal and sends it to the camera.
    • Publishes captured video to a ROS topic when disable_video_streaming = false.
    • parameters
      • device_name : Device name used by the OS to recognize the cx_gb400.
      • disable_video_streaming : Whether this node retrieves video from the camera. Set this to true, for example, when using ffmpeg to send video through a non-ROS transport.
      • image_topic : Name of the ROS topic where this node publishes video.
      • FPS : Frames per second. Specifies the operating frequency of this node, which effectively corresponds to the camera FPS.
  • ffmpeg_to_ros_msg_converter
    • Receives video sent by ffmpeg or another non-ROS transport and republishes it as a ROS topic.
    • parameters
      • ros_image_topic : Topic name used when republishing.
      • protocol : Video transport protocol to receive.
      • port_uri : Port used to receive video.
      • output_msg_encoding : Encoding of the video when republishing.
      • frame_id : frame_id of the ROS video topic when republishing.
      • FPS : Frames per second of the incoming video.
  • h264_decompressor
    • Subscribes to H.264-compressed video as ffmpeg_image_transport_msgs/msg/FFMPEGPacket, decompresses it, and publishes it.
    • parameters
      • h264_topic : Topic name for H.264-compressed video data.
      • decoded_topic : Topic name for decompressed video data.
  • mjpg_decompressor
    • Subscribes to images of type sensor_msgs::msg::CompressedImage (equivalent to MJPG), decompresses them, and publishes them as sensor_msgs::msg::Image.
    • parameters
      • mjpg_topic : Topic name for MJPG-compressed video data.
      • decoded_topic : Topic name for decompressed video data.
  • mjpg_compressor
    • Subscribes to images of type sensor_msgs::msg::CompressedImage (equivalent to MJPG), compresses them, and publishes them as MJPG or H.264 video.
    • parameters
      • mjpg_topic : Topic name for the MJPG input to be compressed.
      • resized_topic : Topic name after compression.
      • encoding : Encoding of the compressed video: MJPG or H.264.
      • resize_rate : Ratio used to reduce image width and height before compression when further compression is desired.
  • video_dev_publisher
    • Retrieves video data from the camera and publishes it as a ROS topic.
    • parameters
      • use_compressed_image : Whether the video data retrieved from the camera is MJPG or an uncompressed format such as YUYV.
      • device_name : Device name used by the OS to recognize the camera device.
      • image_topic : Name of the ROS topic to publish.

Displaying Video

Use rviz2 to display video. Start rviz2, then add an Image panel from the Add button at the lower left. Select the video topic name, then adjust QoS by setting Reliability to Best Effort.

However, the video topic type must be sensor_msgs/msg/Image. In other words, the image must be uncompressed. To display the contents of an MJPG or H.264 video topic, decompress it with another node and display the decompressed video topic in rviz2. MJPG can be decompressed with mjpg_decompressor, and H.264 can be decompressed with h264_decompressor.

launch files

  • cx_gb400_ffmpeg.launch.py
    • Retrieves video from the cx_gb400 and sends it over SRT with ffmpeg while also controlling the gimbal. Video is not distributed as a ROS topic.
    • Example execution:
    $ ros2 launch tobas_image_processing cx_gb400_ffmpeg.launch.py server_and_port:=127.0.0.1:8888 # Send video.
    $ ffplay -fflags nobuffer -autoexit "srt://127.0.0.1:8888?mode=listener" # Receive video.
    
  • To republish it as a ROS topic and display it in rviz2, run:
    $ ros2 launch tobas_image_processing cx_gb400_ffmpeg.launch.py server_and_port:=127.0.0.1:8888 # Send video.
    $ ros2 run tobas_image_processing ffmpeg_to_ros_msg_converter
    $ rviz2 # Display the image topic as an image.
    
  • parameters
    • server_and_port : Destination server IP address and port number. Specify it as <ip_address>:<port>.
    • image_scale : Factor by which to reduce the width and height of the transmitted video. Setting this to 2 sends the video at half size.
  • mjpg_compressor_example.launch.py
    • Example that retrieves MJPG video from /dev/video0, publishes it as a ROS topic, compresses it to H.264, and then decompresses it. The decompressed video can be viewed in rviz2.
CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged tobas_image_processing at Robotics Stack Exchange

No version for distro rolling showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

tobas_image_processing package from tobas repo

tobas tobas_camera tobas_camera_msgs tobas_camera_ros_interface tobas_image_processing tobas_command_msgs tobas_command_msgs_adapter tobas_algorithm tobas_common tobas_control tobas_dsp tobas_eigen_conversions tobas_eigen_msgs tobas_eigen_msgs_adapter tobas_eigen_tools tobas_geographic tobas_ic_drivers tobas_ic_drivers_ros tobas_kdl tobas_kdl_conversions tobas_kdl_msgs tobas_kdl_msgs_adapter tobas_kdl_parser tobas_linux tobas_math tobas_nlp tobas_path_tools tobas_quadprog tobas_ros2_tools tobas_std_msgs tobas_std_msgs_adapter tobas_std_tools tobas_string_tools tobas_time_tools tobas_trajectory_generation tobas_urdf tobas_xml_tools tobas_yaml_tools tobas_components_rt tobas_config_servers tobas_connection_monitor tobas_constants tobas_controllers tobas_fixed_wing_controller tobas_nonplanar_multi_controller tobas_planar_multi_controller tobas_random_axis_tilt_multi_controller tobas_y_axis_tilt_multi_controller tobas_core tobas_cui tobas_keyboard tobas_keyboard_teleop tobas_debug_msgs tobas_debug_msgs_adapter tobas_debug_tools tobas_description tobas_disturbance_observer tobas_dparam tobas_dparam_client tobas_dparam_common tobas_dparam_msgs tobas_dparam_server tobas_drone tobas_drone_core tobas_drone_msgs tobas_drone_msgs_adapter tobas_drone_server tobas_drone_tools tobas_dummy_pkg tobas_eskf tobas_failsafe tobas_fake_publishers tobas_fc1xx tobas_fc1xx_core tobas_fc1xx_ros tobas_fc1xx_test tobas_fc2xx tobas_fc2xx_core tobas_fc2xx_ros tobas_fc2xx_test tobas_hardware tobas_hardware_common tobas_joint_states_bridge tobas_landing_detection tobas_manipulation tobas_mission tobas_mission_execution_mc tobas_mission_items tobas_mission_msgs tobas_mission_msgs_adapter tobas_msgs tobas_msgs_adapter tobas_node tobas_object_avoidance tobas_pose_pid tobas_property tobas_property_client tobas_property_common tobas_property_msgs tobas_property_server tobas_property_tree tobas_rc_teleop tobas_dynamixel tobas_dynamixel_handler tobas_dynamixel_msgs tobas_dynamixel_ros_interface tobas_real tobas_real_common tobas_real_msgs tobas_real_ros tobas_sbus_driver tobas_ros_interface tobas_rosbag_recorder tobas_rotor_anomaly_detection tobas_rotor_controller tobas_tools tobas_topic_throttle tobas_tree_server tobas_version tobas_vibration_filter tobas_wind_model tobas_code_style tobas_cpp_code_style_example tobas_examples tobas_examples_cpp tobas_examples_py tobas_external tobas_inja_vendor tobas_rapidcsv_vendor tobas_actuator_test tobas_bootmedia_config tobas_colcon_cpp tobas_control_system tobas_crypt tobas_cyclonedds_config tobas_flight_log_gui tobas_gamepad tobas_gamepad_core tobas_gamepad_ros tobas_gazebo tobas_gazebo_common tobas_gazebo_conversions tobas_gazebo_gui_plugins tobas_gazebo_msgs tobas_gazebo_ros tobas_gazebo_sim tobas_gazebo_system_plugins tobas_gazebo_tools tobas_gcs tobas_git tobas_gui tobas_gui_common tobas_parameter_tuning tobas_qt_tools tobas_qwt_wrapper tobas_rqt_bridge tobas_rviz_plugin tobas_rviz_wrapper tobas_sensor_calibration tobas_setup_assistant tobas_simulation_gui tobas_ssh tobas_ssh_authkey tobas_ssh_client tobas_ssh_msgs tobas_ssh_server tobas_tile_proxy tobas_uadf tobas_udev tobas_urdf_builder tobas_urdf_builder_plugin tobas_visualization_msgs tobas_wpa_supplicant

ROS Distro
jazzy

Package Summary

Version 2.16.0
License GPL-3.0-or-later
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/TobasFlightControl/tobas.git
VCS Type git
VCS Version jazzy
Last Updated 2026-08-11
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS 2 nodes for video capture, image compression, decompression, conversion, and display.

Maintainers

  • Masayoshi Dohi

Authors

No additional authors.

tobas_image_processing

nodes

  • compressed_image_viewer
    • Displays MJPG video received from a ROS topic.
    • parameters
      • compressed_image_topic : Name of the ROS topic to receive and display.
  • cx_gb400_publisher
    • Operates the cx_gb400.
    • Subscribes to the aircraft attitude and sends it to the camera.
    • Subscribes to the target attitude for the camera gimbal and sends it to the camera.
    • Publishes captured video to a ROS topic when disable_video_streaming = false.
    • parameters
      • device_name : Device name used by the OS to recognize the cx_gb400.
      • disable_video_streaming : Whether this node retrieves video from the camera. Set this to true, for example, when using ffmpeg to send video through a non-ROS transport.
      • image_topic : Name of the ROS topic where this node publishes video.
      • FPS : Frames per second. Specifies the operating frequency of this node, which effectively corresponds to the camera FPS.
  • ffmpeg_to_ros_msg_converter
    • Receives video sent by ffmpeg or another non-ROS transport and republishes it as a ROS topic.
    • parameters
      • ros_image_topic : Topic name used when republishing.
      • protocol : Video transport protocol to receive.
      • port_uri : Port used to receive video.
      • output_msg_encoding : Encoding of the video when republishing.
      • frame_id : frame_id of the ROS video topic when republishing.
      • FPS : Frames per second of the incoming video.
  • h264_decompressor
    • Subscribes to H.264-compressed video as ffmpeg_image_transport_msgs/msg/FFMPEGPacket, decompresses it, and publishes it.
    • parameters
      • h264_topic : Topic name for H.264-compressed video data.
      • decoded_topic : Topic name for decompressed video data.
  • mjpg_decompressor
    • Subscribes to images of type sensor_msgs::msg::CompressedImage (equivalent to MJPG), decompresses them, and publishes them as sensor_msgs::msg::Image.
    • parameters
      • mjpg_topic : Topic name for MJPG-compressed video data.
      • decoded_topic : Topic name for decompressed video data.
  • mjpg_compressor
    • Subscribes to images of type sensor_msgs::msg::CompressedImage (equivalent to MJPG), compresses them, and publishes them as MJPG or H.264 video.
    • parameters
      • mjpg_topic : Topic name for the MJPG input to be compressed.
      • resized_topic : Topic name after compression.
      • encoding : Encoding of the compressed video: MJPG or H.264.
      • resize_rate : Ratio used to reduce image width and height before compression when further compression is desired.
  • video_dev_publisher
    • Retrieves video data from the camera and publishes it as a ROS topic.
    • parameters
      • use_compressed_image : Whether the video data retrieved from the camera is MJPG or an uncompressed format such as YUYV.
      • device_name : Device name used by the OS to recognize the camera device.
      • image_topic : Name of the ROS topic to publish.

Displaying Video

Use rviz2 to display video. Start rviz2, then add an Image panel from the Add button at the lower left. Select the video topic name, then adjust QoS by setting Reliability to Best Effort.

However, the video topic type must be sensor_msgs/msg/Image. In other words, the image must be uncompressed. To display the contents of an MJPG or H.264 video topic, decompress it with another node and display the decompressed video topic in rviz2. MJPG can be decompressed with mjpg_decompressor, and H.264 can be decompressed with h264_decompressor.

launch files

  • cx_gb400_ffmpeg.launch.py
    • Retrieves video from the cx_gb400 and sends it over SRT with ffmpeg while also controlling the gimbal. Video is not distributed as a ROS topic.
    • Example execution:
    $ ros2 launch tobas_image_processing cx_gb400_ffmpeg.launch.py server_and_port:=127.0.0.1:8888 # Send video.
    $ ffplay -fflags nobuffer -autoexit "srt://127.0.0.1:8888?mode=listener" # Receive video.
    
  • To republish it as a ROS topic and display it in rviz2, run:
    $ ros2 launch tobas_image_processing cx_gb400_ffmpeg.launch.py server_and_port:=127.0.0.1:8888 # Send video.
    $ ros2 run tobas_image_processing ffmpeg_to_ros_msg_converter
    $ rviz2 # Display the image topic as an image.
    
  • parameters
    • server_and_port : Destination server IP address and port number. Specify it as <ip_address>:<port>.
    • image_scale : Factor by which to reduce the width and height of the transmitted video. Setting this to 2 sends the video at half size.
  • mjpg_compressor_example.launch.py
    • Example that retrieves MJPG video from /dev/video0, publishes it as a ROS topic, compresses it to H.264, and then decompresses it. The decompressed video can be viewed in rviz2.
CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged tobas_image_processing at Robotics Stack Exchange

No version for distro ardent showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

tobas_image_processing package from tobas repo

tobas tobas_camera tobas_camera_msgs tobas_camera_ros_interface tobas_image_processing tobas_command_msgs tobas_command_msgs_adapter tobas_algorithm tobas_common tobas_control tobas_dsp tobas_eigen_conversions tobas_eigen_msgs tobas_eigen_msgs_adapter tobas_eigen_tools tobas_geographic tobas_ic_drivers tobas_ic_drivers_ros tobas_kdl tobas_kdl_conversions tobas_kdl_msgs tobas_kdl_msgs_adapter tobas_kdl_parser tobas_linux tobas_math tobas_nlp tobas_path_tools tobas_quadprog tobas_ros2_tools tobas_std_msgs tobas_std_msgs_adapter tobas_std_tools tobas_string_tools tobas_time_tools tobas_trajectory_generation tobas_urdf tobas_xml_tools tobas_yaml_tools tobas_components_rt tobas_config_servers tobas_connection_monitor tobas_constants tobas_controllers tobas_fixed_wing_controller tobas_nonplanar_multi_controller tobas_planar_multi_controller tobas_random_axis_tilt_multi_controller tobas_y_axis_tilt_multi_controller tobas_core tobas_cui tobas_keyboard tobas_keyboard_teleop tobas_debug_msgs tobas_debug_msgs_adapter tobas_debug_tools tobas_description tobas_disturbance_observer tobas_dparam tobas_dparam_client tobas_dparam_common tobas_dparam_msgs tobas_dparam_server tobas_drone tobas_drone_core tobas_drone_msgs tobas_drone_msgs_adapter tobas_drone_server tobas_drone_tools tobas_dummy_pkg tobas_eskf tobas_failsafe tobas_fake_publishers tobas_fc1xx tobas_fc1xx_core tobas_fc1xx_ros tobas_fc1xx_test tobas_fc2xx tobas_fc2xx_core tobas_fc2xx_ros tobas_fc2xx_test tobas_hardware tobas_hardware_common tobas_joint_states_bridge tobas_landing_detection tobas_manipulation tobas_mission tobas_mission_execution_mc tobas_mission_items tobas_mission_msgs tobas_mission_msgs_adapter tobas_msgs tobas_msgs_adapter tobas_node tobas_object_avoidance tobas_pose_pid tobas_property tobas_property_client tobas_property_common tobas_property_msgs tobas_property_server tobas_property_tree tobas_rc_teleop tobas_dynamixel tobas_dynamixel_handler tobas_dynamixel_msgs tobas_dynamixel_ros_interface tobas_real tobas_real_common tobas_real_msgs tobas_real_ros tobas_sbus_driver tobas_ros_interface tobas_rosbag_recorder tobas_rotor_anomaly_detection tobas_rotor_controller tobas_tools tobas_topic_throttle tobas_tree_server tobas_version tobas_vibration_filter tobas_wind_model tobas_code_style tobas_cpp_code_style_example tobas_examples tobas_examples_cpp tobas_examples_py tobas_external tobas_inja_vendor tobas_rapidcsv_vendor tobas_actuator_test tobas_bootmedia_config tobas_colcon_cpp tobas_control_system tobas_crypt tobas_cyclonedds_config tobas_flight_log_gui tobas_gamepad tobas_gamepad_core tobas_gamepad_ros tobas_gazebo tobas_gazebo_common tobas_gazebo_conversions tobas_gazebo_gui_plugins tobas_gazebo_msgs tobas_gazebo_ros tobas_gazebo_sim tobas_gazebo_system_plugins tobas_gazebo_tools tobas_gcs tobas_git tobas_gui tobas_gui_common tobas_parameter_tuning tobas_qt_tools tobas_qwt_wrapper tobas_rqt_bridge tobas_rviz_plugin tobas_rviz_wrapper tobas_sensor_calibration tobas_setup_assistant tobas_simulation_gui tobas_ssh tobas_ssh_authkey tobas_ssh_client tobas_ssh_msgs tobas_ssh_server tobas_tile_proxy tobas_uadf tobas_udev tobas_urdf_builder tobas_urdf_builder_plugin tobas_visualization_msgs tobas_wpa_supplicant

ROS Distro
jazzy

Package Summary

Version 2.16.0
License GPL-3.0-or-later
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/TobasFlightControl/tobas.git
VCS Type git
VCS Version jazzy
Last Updated 2026-08-11
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS 2 nodes for video capture, image compression, decompression, conversion, and display.

Maintainers

  • Masayoshi Dohi

Authors

No additional authors.

tobas_image_processing

nodes

  • compressed_image_viewer
    • Displays MJPG video received from a ROS topic.
    • parameters
      • compressed_image_topic : Name of the ROS topic to receive and display.
  • cx_gb400_publisher
    • Operates the cx_gb400.
    • Subscribes to the aircraft attitude and sends it to the camera.
    • Subscribes to the target attitude for the camera gimbal and sends it to the camera.
    • Publishes captured video to a ROS topic when disable_video_streaming = false.
    • parameters
      • device_name : Device name used by the OS to recognize the cx_gb400.
      • disable_video_streaming : Whether this node retrieves video from the camera. Set this to true, for example, when using ffmpeg to send video through a non-ROS transport.
      • image_topic : Name of the ROS topic where this node publishes video.
      • FPS : Frames per second. Specifies the operating frequency of this node, which effectively corresponds to the camera FPS.
  • ffmpeg_to_ros_msg_converter
    • Receives video sent by ffmpeg or another non-ROS transport and republishes it as a ROS topic.
    • parameters
      • ros_image_topic : Topic name used when republishing.
      • protocol : Video transport protocol to receive.
      • port_uri : Port used to receive video.
      • output_msg_encoding : Encoding of the video when republishing.
      • frame_id : frame_id of the ROS video topic when republishing.
      • FPS : Frames per second of the incoming video.
  • h264_decompressor
    • Subscribes to H.264-compressed video as ffmpeg_image_transport_msgs/msg/FFMPEGPacket, decompresses it, and publishes it.
    • parameters
      • h264_topic : Topic name for H.264-compressed video data.
      • decoded_topic : Topic name for decompressed video data.
  • mjpg_decompressor
    • Subscribes to images of type sensor_msgs::msg::CompressedImage (equivalent to MJPG), decompresses them, and publishes them as sensor_msgs::msg::Image.
    • parameters
      • mjpg_topic : Topic name for MJPG-compressed video data.
      • decoded_topic : Topic name for decompressed video data.
  • mjpg_compressor
    • Subscribes to images of type sensor_msgs::msg::CompressedImage (equivalent to MJPG), compresses them, and publishes them as MJPG or H.264 video.
    • parameters
      • mjpg_topic : Topic name for the MJPG input to be compressed.
      • resized_topic : Topic name after compression.
      • encoding : Encoding of the compressed video: MJPG or H.264.
      • resize_rate : Ratio used to reduce image width and height before compression when further compression is desired.
  • video_dev_publisher
    • Retrieves video data from the camera and publishes it as a ROS topic.
    • parameters
      • use_compressed_image : Whether the video data retrieved from the camera is MJPG or an uncompressed format such as YUYV.
      • device_name : Device name used by the OS to recognize the camera device.
      • image_topic : Name of the ROS topic to publish.

Displaying Video

Use rviz2 to display video. Start rviz2, then add an Image panel from the Add button at the lower left. Select the video topic name, then adjust QoS by setting Reliability to Best Effort.

However, the video topic type must be sensor_msgs/msg/Image. In other words, the image must be uncompressed. To display the contents of an MJPG or H.264 video topic, decompress it with another node and display the decompressed video topic in rviz2. MJPG can be decompressed with mjpg_decompressor, and H.264 can be decompressed with h264_decompressor.

launch files

  • cx_gb400_ffmpeg.launch.py
    • Retrieves video from the cx_gb400 and sends it over SRT with ffmpeg while also controlling the gimbal. Video is not distributed as a ROS topic.
    • Example execution:
    $ ros2 launch tobas_image_processing cx_gb400_ffmpeg.launch.py server_and_port:=127.0.0.1:8888 # Send video.
    $ ffplay -fflags nobuffer -autoexit "srt://127.0.0.1:8888?mode=listener" # Receive video.
    
  • To republish it as a ROS topic and display it in rviz2, run:
    $ ros2 launch tobas_image_processing cx_gb400_ffmpeg.launch.py server_and_port:=127.0.0.1:8888 # Send video.
    $ ros2 run tobas_image_processing ffmpeg_to_ros_msg_converter
    $ rviz2 # Display the image topic as an image.
    
  • parameters
    • server_and_port : Destination server IP address and port number. Specify it as <ip_address>:<port>.
    • image_scale : Factor by which to reduce the width and height of the transmitted video. Setting this to 2 sends the video at half size.
  • mjpg_compressor_example.launch.py
    • Example that retrieves MJPG video from /dev/video0, publishes it as a ROS topic, compresses it to H.264, and then decompresses it. The decompressed video can be viewed in rviz2.
CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged tobas_image_processing at Robotics Stack Exchange

No version for distro bouncy showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

tobas_image_processing package from tobas repo

tobas tobas_camera tobas_camera_msgs tobas_camera_ros_interface tobas_image_processing tobas_command_msgs tobas_command_msgs_adapter tobas_algorithm tobas_common tobas_control tobas_dsp tobas_eigen_conversions tobas_eigen_msgs tobas_eigen_msgs_adapter tobas_eigen_tools tobas_geographic tobas_ic_drivers tobas_ic_drivers_ros tobas_kdl tobas_kdl_conversions tobas_kdl_msgs tobas_kdl_msgs_adapter tobas_kdl_parser tobas_linux tobas_math tobas_nlp tobas_path_tools tobas_quadprog tobas_ros2_tools tobas_std_msgs tobas_std_msgs_adapter tobas_std_tools tobas_string_tools tobas_time_tools tobas_trajectory_generation tobas_urdf tobas_xml_tools tobas_yaml_tools tobas_components_rt tobas_config_servers tobas_connection_monitor tobas_constants tobas_controllers tobas_fixed_wing_controller tobas_nonplanar_multi_controller tobas_planar_multi_controller tobas_random_axis_tilt_multi_controller tobas_y_axis_tilt_multi_controller tobas_core tobas_cui tobas_keyboard tobas_keyboard_teleop tobas_debug_msgs tobas_debug_msgs_adapter tobas_debug_tools tobas_description tobas_disturbance_observer tobas_dparam tobas_dparam_client tobas_dparam_common tobas_dparam_msgs tobas_dparam_server tobas_drone tobas_drone_core tobas_drone_msgs tobas_drone_msgs_adapter tobas_drone_server tobas_drone_tools tobas_dummy_pkg tobas_eskf tobas_failsafe tobas_fake_publishers tobas_fc1xx tobas_fc1xx_core tobas_fc1xx_ros tobas_fc1xx_test tobas_fc2xx tobas_fc2xx_core tobas_fc2xx_ros tobas_fc2xx_test tobas_hardware tobas_hardware_common tobas_joint_states_bridge tobas_landing_detection tobas_manipulation tobas_mission tobas_mission_execution_mc tobas_mission_items tobas_mission_msgs tobas_mission_msgs_adapter tobas_msgs tobas_msgs_adapter tobas_node tobas_object_avoidance tobas_pose_pid tobas_property tobas_property_client tobas_property_common tobas_property_msgs tobas_property_server tobas_property_tree tobas_rc_teleop tobas_dynamixel tobas_dynamixel_handler tobas_dynamixel_msgs tobas_dynamixel_ros_interface tobas_real tobas_real_common tobas_real_msgs tobas_real_ros tobas_sbus_driver tobas_ros_interface tobas_rosbag_recorder tobas_rotor_anomaly_detection tobas_rotor_controller tobas_tools tobas_topic_throttle tobas_tree_server tobas_version tobas_vibration_filter tobas_wind_model tobas_code_style tobas_cpp_code_style_example tobas_examples tobas_examples_cpp tobas_examples_py tobas_external tobas_inja_vendor tobas_rapidcsv_vendor tobas_actuator_test tobas_bootmedia_config tobas_colcon_cpp tobas_control_system tobas_crypt tobas_cyclonedds_config tobas_flight_log_gui tobas_gamepad tobas_gamepad_core tobas_gamepad_ros tobas_gazebo tobas_gazebo_common tobas_gazebo_conversions tobas_gazebo_gui_plugins tobas_gazebo_msgs tobas_gazebo_ros tobas_gazebo_sim tobas_gazebo_system_plugins tobas_gazebo_tools tobas_gcs tobas_git tobas_gui tobas_gui_common tobas_parameter_tuning tobas_qt_tools tobas_qwt_wrapper tobas_rqt_bridge tobas_rviz_plugin tobas_rviz_wrapper tobas_sensor_calibration tobas_setup_assistant tobas_simulation_gui tobas_ssh tobas_ssh_authkey tobas_ssh_client tobas_ssh_msgs tobas_ssh_server tobas_tile_proxy tobas_uadf tobas_udev tobas_urdf_builder tobas_urdf_builder_plugin tobas_visualization_msgs tobas_wpa_supplicant

ROS Distro
jazzy

Package Summary

Version 2.16.0
License GPL-3.0-or-later
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/TobasFlightControl/tobas.git
VCS Type git
VCS Version jazzy
Last Updated 2026-08-11
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS 2 nodes for video capture, image compression, decompression, conversion, and display.

Maintainers

  • Masayoshi Dohi

Authors

No additional authors.

tobas_image_processing

nodes

  • compressed_image_viewer
    • Displays MJPG video received from a ROS topic.
    • parameters
      • compressed_image_topic : Name of the ROS topic to receive and display.
  • cx_gb400_publisher
    • Operates the cx_gb400.
    • Subscribes to the aircraft attitude and sends it to the camera.
    • Subscribes to the target attitude for the camera gimbal and sends it to the camera.
    • Publishes captured video to a ROS topic when disable_video_streaming = false.
    • parameters
      • device_name : Device name used by the OS to recognize the cx_gb400.
      • disable_video_streaming : Whether this node retrieves video from the camera. Set this to true, for example, when using ffmpeg to send video through a non-ROS transport.
      • image_topic : Name of the ROS topic where this node publishes video.
      • FPS : Frames per second. Specifies the operating frequency of this node, which effectively corresponds to the camera FPS.
  • ffmpeg_to_ros_msg_converter
    • Receives video sent by ffmpeg or another non-ROS transport and republishes it as a ROS topic.
    • parameters
      • ros_image_topic : Topic name used when republishing.
      • protocol : Video transport protocol to receive.
      • port_uri : Port used to receive video.
      • output_msg_encoding : Encoding of the video when republishing.
      • frame_id : frame_id of the ROS video topic when republishing.
      • FPS : Frames per second of the incoming video.
  • h264_decompressor
    • Subscribes to H.264-compressed video as ffmpeg_image_transport_msgs/msg/FFMPEGPacket, decompresses it, and publishes it.
    • parameters
      • h264_topic : Topic name for H.264-compressed video data.
      • decoded_topic : Topic name for decompressed video data.
  • mjpg_decompressor
    • Subscribes to images of type sensor_msgs::msg::CompressedImage (equivalent to MJPG), decompresses them, and publishes them as sensor_msgs::msg::Image.
    • parameters
      • mjpg_topic : Topic name for MJPG-compressed video data.
      • decoded_topic : Topic name for decompressed video data.
  • mjpg_compressor
    • Subscribes to images of type sensor_msgs::msg::CompressedImage (equivalent to MJPG), compresses them, and publishes them as MJPG or H.264 video.
    • parameters
      • mjpg_topic : Topic name for the MJPG input to be compressed.
      • resized_topic : Topic name after compression.
      • encoding : Encoding of the compressed video: MJPG or H.264.
      • resize_rate : Ratio used to reduce image width and height before compression when further compression is desired.
  • video_dev_publisher
    • Retrieves video data from the camera and publishes it as a ROS topic.
    • parameters
      • use_compressed_image : Whether the video data retrieved from the camera is MJPG or an uncompressed format such as YUYV.
      • device_name : Device name used by the OS to recognize the camera device.
      • image_topic : Name of the ROS topic to publish.

Displaying Video

Use rviz2 to display video. Start rviz2, then add an Image panel from the Add button at the lower left. Select the video topic name, then adjust QoS by setting Reliability to Best Effort.

However, the video topic type must be sensor_msgs/msg/Image. In other words, the image must be uncompressed. To display the contents of an MJPG or H.264 video topic, decompress it with another node and display the decompressed video topic in rviz2. MJPG can be decompressed with mjpg_decompressor, and H.264 can be decompressed with h264_decompressor.

launch files

  • cx_gb400_ffmpeg.launch.py
    • Retrieves video from the cx_gb400 and sends it over SRT with ffmpeg while also controlling the gimbal. Video is not distributed as a ROS topic.
    • Example execution:
    $ ros2 launch tobas_image_processing cx_gb400_ffmpeg.launch.py server_and_port:=127.0.0.1:8888 # Send video.
    $ ffplay -fflags nobuffer -autoexit "srt://127.0.0.1:8888?mode=listener" # Receive video.
    
  • To republish it as a ROS topic and display it in rviz2, run:
    $ ros2 launch tobas_image_processing cx_gb400_ffmpeg.launch.py server_and_port:=127.0.0.1:8888 # Send video.
    $ ros2 run tobas_image_processing ffmpeg_to_ros_msg_converter
    $ rviz2 # Display the image topic as an image.
    
  • parameters
    • server_and_port : Destination server IP address and port number. Specify it as <ip_address>:<port>.
    • image_scale : Factor by which to reduce the width and height of the transmitted video. Setting this to 2 sends the video at half size.
  • mjpg_compressor_example.launch.py
    • Example that retrieves MJPG video from /dev/video0, publishes it as a ROS topic, compresses it to H.264, and then decompresses it. The decompressed video can be viewed in rviz2.
CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged tobas_image_processing at Robotics Stack Exchange

No version for distro crystal showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

tobas_image_processing package from tobas repo

tobas tobas_camera tobas_camera_msgs tobas_camera_ros_interface tobas_image_processing tobas_command_msgs tobas_command_msgs_adapter tobas_algorithm tobas_common tobas_control tobas_dsp tobas_eigen_conversions tobas_eigen_msgs tobas_eigen_msgs_adapter tobas_eigen_tools tobas_geographic tobas_ic_drivers tobas_ic_drivers_ros tobas_kdl tobas_kdl_conversions tobas_kdl_msgs tobas_kdl_msgs_adapter tobas_kdl_parser tobas_linux tobas_math tobas_nlp tobas_path_tools tobas_quadprog tobas_ros2_tools tobas_std_msgs tobas_std_msgs_adapter tobas_std_tools tobas_string_tools tobas_time_tools tobas_trajectory_generation tobas_urdf tobas_xml_tools tobas_yaml_tools tobas_components_rt tobas_config_servers tobas_connection_monitor tobas_constants tobas_controllers tobas_fixed_wing_controller tobas_nonplanar_multi_controller tobas_planar_multi_controller tobas_random_axis_tilt_multi_controller tobas_y_axis_tilt_multi_controller tobas_core tobas_cui tobas_keyboard tobas_keyboard_teleop tobas_debug_msgs tobas_debug_msgs_adapter tobas_debug_tools tobas_description tobas_disturbance_observer tobas_dparam tobas_dparam_client tobas_dparam_common tobas_dparam_msgs tobas_dparam_server tobas_drone tobas_drone_core tobas_drone_msgs tobas_drone_msgs_adapter tobas_drone_server tobas_drone_tools tobas_dummy_pkg tobas_eskf tobas_failsafe tobas_fake_publishers tobas_fc1xx tobas_fc1xx_core tobas_fc1xx_ros tobas_fc1xx_test tobas_fc2xx tobas_fc2xx_core tobas_fc2xx_ros tobas_fc2xx_test tobas_hardware tobas_hardware_common tobas_joint_states_bridge tobas_landing_detection tobas_manipulation tobas_mission tobas_mission_execution_mc tobas_mission_items tobas_mission_msgs tobas_mission_msgs_adapter tobas_msgs tobas_msgs_adapter tobas_node tobas_object_avoidance tobas_pose_pid tobas_property tobas_property_client tobas_property_common tobas_property_msgs tobas_property_server tobas_property_tree tobas_rc_teleop tobas_dynamixel tobas_dynamixel_handler tobas_dynamixel_msgs tobas_dynamixel_ros_interface tobas_real tobas_real_common tobas_real_msgs tobas_real_ros tobas_sbus_driver tobas_ros_interface tobas_rosbag_recorder tobas_rotor_anomaly_detection tobas_rotor_controller tobas_tools tobas_topic_throttle tobas_tree_server tobas_version tobas_vibration_filter tobas_wind_model tobas_code_style tobas_cpp_code_style_example tobas_examples tobas_examples_cpp tobas_examples_py tobas_external tobas_inja_vendor tobas_rapidcsv_vendor tobas_actuator_test tobas_bootmedia_config tobas_colcon_cpp tobas_control_system tobas_crypt tobas_cyclonedds_config tobas_flight_log_gui tobas_gamepad tobas_gamepad_core tobas_gamepad_ros tobas_gazebo tobas_gazebo_common tobas_gazebo_conversions tobas_gazebo_gui_plugins tobas_gazebo_msgs tobas_gazebo_ros tobas_gazebo_sim tobas_gazebo_system_plugins tobas_gazebo_tools tobas_gcs tobas_git tobas_gui tobas_gui_common tobas_parameter_tuning tobas_qt_tools tobas_qwt_wrapper tobas_rqt_bridge tobas_rviz_plugin tobas_rviz_wrapper tobas_sensor_calibration tobas_setup_assistant tobas_simulation_gui tobas_ssh tobas_ssh_authkey tobas_ssh_client tobas_ssh_msgs tobas_ssh_server tobas_tile_proxy tobas_uadf tobas_udev tobas_urdf_builder tobas_urdf_builder_plugin tobas_visualization_msgs tobas_wpa_supplicant

ROS Distro
jazzy

Package Summary

Version 2.16.0
License GPL-3.0-or-later
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/TobasFlightControl/tobas.git
VCS Type git
VCS Version jazzy
Last Updated 2026-08-11
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS 2 nodes for video capture, image compression, decompression, conversion, and display.

Maintainers

  • Masayoshi Dohi

Authors

No additional authors.

tobas_image_processing

nodes

  • compressed_image_viewer
    • Displays MJPG video received from a ROS topic.
    • parameters
      • compressed_image_topic : Name of the ROS topic to receive and display.
  • cx_gb400_publisher
    • Operates the cx_gb400.
    • Subscribes to the aircraft attitude and sends it to the camera.
    • Subscribes to the target attitude for the camera gimbal and sends it to the camera.
    • Publishes captured video to a ROS topic when disable_video_streaming = false.
    • parameters
      • device_name : Device name used by the OS to recognize the cx_gb400.
      • disable_video_streaming : Whether this node retrieves video from the camera. Set this to true, for example, when using ffmpeg to send video through a non-ROS transport.
      • image_topic : Name of the ROS topic where this node publishes video.
      • FPS : Frames per second. Specifies the operating frequency of this node, which effectively corresponds to the camera FPS.
  • ffmpeg_to_ros_msg_converter
    • Receives video sent by ffmpeg or another non-ROS transport and republishes it as a ROS topic.
    • parameters
      • ros_image_topic : Topic name used when republishing.
      • protocol : Video transport protocol to receive.
      • port_uri : Port used to receive video.
      • output_msg_encoding : Encoding of the video when republishing.
      • frame_id : frame_id of the ROS video topic when republishing.
      • FPS : Frames per second of the incoming video.
  • h264_decompressor
    • Subscribes to H.264-compressed video as ffmpeg_image_transport_msgs/msg/FFMPEGPacket, decompresses it, and publishes it.
    • parameters
      • h264_topic : Topic name for H.264-compressed video data.
      • decoded_topic : Topic name for decompressed video data.
  • mjpg_decompressor
    • Subscribes to images of type sensor_msgs::msg::CompressedImage (equivalent to MJPG), decompresses them, and publishes them as sensor_msgs::msg::Image.
    • parameters
      • mjpg_topic : Topic name for MJPG-compressed video data.
      • decoded_topic : Topic name for decompressed video data.
  • mjpg_compressor
    • Subscribes to images of type sensor_msgs::msg::CompressedImage (equivalent to MJPG), compresses them, and publishes them as MJPG or H.264 video.
    • parameters
      • mjpg_topic : Topic name for the MJPG input to be compressed.
      • resized_topic : Topic name after compression.
      • encoding : Encoding of the compressed video: MJPG or H.264.
      • resize_rate : Ratio used to reduce image width and height before compression when further compression is desired.
  • video_dev_publisher
    • Retrieves video data from the camera and publishes it as a ROS topic.
    • parameters
      • use_compressed_image : Whether the video data retrieved from the camera is MJPG or an uncompressed format such as YUYV.
      • device_name : Device name used by the OS to recognize the camera device.
      • image_topic : Name of the ROS topic to publish.

Displaying Video

Use rviz2 to display video. Start rviz2, then add an Image panel from the Add button at the lower left. Select the video topic name, then adjust QoS by setting Reliability to Best Effort.

However, the video topic type must be sensor_msgs/msg/Image. In other words, the image must be uncompressed. To display the contents of an MJPG or H.264 video topic, decompress it with another node and display the decompressed video topic in rviz2. MJPG can be decompressed with mjpg_decompressor, and H.264 can be decompressed with h264_decompressor.

launch files

  • cx_gb400_ffmpeg.launch.py
    • Retrieves video from the cx_gb400 and sends it over SRT with ffmpeg while also controlling the gimbal. Video is not distributed as a ROS topic.
    • Example execution:
    $ ros2 launch tobas_image_processing cx_gb400_ffmpeg.launch.py server_and_port:=127.0.0.1:8888 # Send video.
    $ ffplay -fflags nobuffer -autoexit "srt://127.0.0.1:8888?mode=listener" # Receive video.
    
  • To republish it as a ROS topic and display it in rviz2, run:
    $ ros2 launch tobas_image_processing cx_gb400_ffmpeg.launch.py server_and_port:=127.0.0.1:8888 # Send video.
    $ ros2 run tobas_image_processing ffmpeg_to_ros_msg_converter
    $ rviz2 # Display the image topic as an image.
    
  • parameters
    • server_and_port : Destination server IP address and port number. Specify it as <ip_address>:<port>.
    • image_scale : Factor by which to reduce the width and height of the transmitted video. Setting this to 2 sends the video at half size.
  • mjpg_compressor_example.launch.py
    • Example that retrieves MJPG video from /dev/video0, publishes it as a ROS topic, compresses it to H.264, and then decompresses it. The decompressed video can be viewed in rviz2.
CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged tobas_image_processing at Robotics Stack Exchange

No version for distro eloquent showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

tobas_image_processing package from tobas repo

tobas tobas_camera tobas_camera_msgs tobas_camera_ros_interface tobas_image_processing tobas_command_msgs tobas_command_msgs_adapter tobas_algorithm tobas_common tobas_control tobas_dsp tobas_eigen_conversions tobas_eigen_msgs tobas_eigen_msgs_adapter tobas_eigen_tools tobas_geographic tobas_ic_drivers tobas_ic_drivers_ros tobas_kdl tobas_kdl_conversions tobas_kdl_msgs tobas_kdl_msgs_adapter tobas_kdl_parser tobas_linux tobas_math tobas_nlp tobas_path_tools tobas_quadprog tobas_ros2_tools tobas_std_msgs tobas_std_msgs_adapter tobas_std_tools tobas_string_tools tobas_time_tools tobas_trajectory_generation tobas_urdf tobas_xml_tools tobas_yaml_tools tobas_components_rt tobas_config_servers tobas_connection_monitor tobas_constants tobas_controllers tobas_fixed_wing_controller tobas_nonplanar_multi_controller tobas_planar_multi_controller tobas_random_axis_tilt_multi_controller tobas_y_axis_tilt_multi_controller tobas_core tobas_cui tobas_keyboard tobas_keyboard_teleop tobas_debug_msgs tobas_debug_msgs_adapter tobas_debug_tools tobas_description tobas_disturbance_observer tobas_dparam tobas_dparam_client tobas_dparam_common tobas_dparam_msgs tobas_dparam_server tobas_drone tobas_drone_core tobas_drone_msgs tobas_drone_msgs_adapter tobas_drone_server tobas_drone_tools tobas_dummy_pkg tobas_eskf tobas_failsafe tobas_fake_publishers tobas_fc1xx tobas_fc1xx_core tobas_fc1xx_ros tobas_fc1xx_test tobas_fc2xx tobas_fc2xx_core tobas_fc2xx_ros tobas_fc2xx_test tobas_hardware tobas_hardware_common tobas_joint_states_bridge tobas_landing_detection tobas_manipulation tobas_mission tobas_mission_execution_mc tobas_mission_items tobas_mission_msgs tobas_mission_msgs_adapter tobas_msgs tobas_msgs_adapter tobas_node tobas_object_avoidance tobas_pose_pid tobas_property tobas_property_client tobas_property_common tobas_property_msgs tobas_property_server tobas_property_tree tobas_rc_teleop tobas_dynamixel tobas_dynamixel_handler tobas_dynamixel_msgs tobas_dynamixel_ros_interface tobas_real tobas_real_common tobas_real_msgs tobas_real_ros tobas_sbus_driver tobas_ros_interface tobas_rosbag_recorder tobas_rotor_anomaly_detection tobas_rotor_controller tobas_tools tobas_topic_throttle tobas_tree_server tobas_version tobas_vibration_filter tobas_wind_model tobas_code_style tobas_cpp_code_style_example tobas_examples tobas_examples_cpp tobas_examples_py tobas_external tobas_inja_vendor tobas_rapidcsv_vendor tobas_actuator_test tobas_bootmedia_config tobas_colcon_cpp tobas_control_system tobas_crypt tobas_cyclonedds_config tobas_flight_log_gui tobas_gamepad tobas_gamepad_core tobas_gamepad_ros tobas_gazebo tobas_gazebo_common tobas_gazebo_conversions tobas_gazebo_gui_plugins tobas_gazebo_msgs tobas_gazebo_ros tobas_gazebo_sim tobas_gazebo_system_plugins tobas_gazebo_tools tobas_gcs tobas_git tobas_gui tobas_gui_common tobas_parameter_tuning tobas_qt_tools tobas_qwt_wrapper tobas_rqt_bridge tobas_rviz_plugin tobas_rviz_wrapper tobas_sensor_calibration tobas_setup_assistant tobas_simulation_gui tobas_ssh tobas_ssh_authkey tobas_ssh_client tobas_ssh_msgs tobas_ssh_server tobas_tile_proxy tobas_uadf tobas_udev tobas_urdf_builder tobas_urdf_builder_plugin tobas_visualization_msgs tobas_wpa_supplicant

ROS Distro
jazzy

Package Summary

Version 2.16.0
License GPL-3.0-or-later
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/TobasFlightControl/tobas.git
VCS Type git
VCS Version jazzy
Last Updated 2026-08-11
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS 2 nodes for video capture, image compression, decompression, conversion, and display.

Maintainers

  • Masayoshi Dohi

Authors

No additional authors.

tobas_image_processing

nodes

  • compressed_image_viewer
    • Displays MJPG video received from a ROS topic.
    • parameters
      • compressed_image_topic : Name of the ROS topic to receive and display.
  • cx_gb400_publisher
    • Operates the cx_gb400.
    • Subscribes to the aircraft attitude and sends it to the camera.
    • Subscribes to the target attitude for the camera gimbal and sends it to the camera.
    • Publishes captured video to a ROS topic when disable_video_streaming = false.
    • parameters
      • device_name : Device name used by the OS to recognize the cx_gb400.
      • disable_video_streaming : Whether this node retrieves video from the camera. Set this to true, for example, when using ffmpeg to send video through a non-ROS transport.
      • image_topic : Name of the ROS topic where this node publishes video.
      • FPS : Frames per second. Specifies the operating frequency of this node, which effectively corresponds to the camera FPS.
  • ffmpeg_to_ros_msg_converter
    • Receives video sent by ffmpeg or another non-ROS transport and republishes it as a ROS topic.
    • parameters
      • ros_image_topic : Topic name used when republishing.
      • protocol : Video transport protocol to receive.
      • port_uri : Port used to receive video.
      • output_msg_encoding : Encoding of the video when republishing.
      • frame_id : frame_id of the ROS video topic when republishing.
      • FPS : Frames per second of the incoming video.
  • h264_decompressor
    • Subscribes to H.264-compressed video as ffmpeg_image_transport_msgs/msg/FFMPEGPacket, decompresses it, and publishes it.
    • parameters
      • h264_topic : Topic name for H.264-compressed video data.
      • decoded_topic : Topic name for decompressed video data.
  • mjpg_decompressor
    • Subscribes to images of type sensor_msgs::msg::CompressedImage (equivalent to MJPG), decompresses them, and publishes them as sensor_msgs::msg::Image.
    • parameters
      • mjpg_topic : Topic name for MJPG-compressed video data.
      • decoded_topic : Topic name for decompressed video data.
  • mjpg_compressor
    • Subscribes to images of type sensor_msgs::msg::CompressedImage (equivalent to MJPG), compresses them, and publishes them as MJPG or H.264 video.
    • parameters
      • mjpg_topic : Topic name for the MJPG input to be compressed.
      • resized_topic : Topic name after compression.
      • encoding : Encoding of the compressed video: MJPG or H.264.
      • resize_rate : Ratio used to reduce image width and height before compression when further compression is desired.
  • video_dev_publisher
    • Retrieves video data from the camera and publishes it as a ROS topic.
    • parameters
      • use_compressed_image : Whether the video data retrieved from the camera is MJPG or an uncompressed format such as YUYV.
      • device_name : Device name used by the OS to recognize the camera device.
      • image_topic : Name of the ROS topic to publish.

Displaying Video

Use rviz2 to display video. Start rviz2, then add an Image panel from the Add button at the lower left. Select the video topic name, then adjust QoS by setting Reliability to Best Effort.

However, the video topic type must be sensor_msgs/msg/Image. In other words, the image must be uncompressed. To display the contents of an MJPG or H.264 video topic, decompress it with another node and display the decompressed video topic in rviz2. MJPG can be decompressed with mjpg_decompressor, and H.264 can be decompressed with h264_decompressor.

launch files

  • cx_gb400_ffmpeg.launch.py
    • Retrieves video from the cx_gb400 and sends it over SRT with ffmpeg while also controlling the gimbal. Video is not distributed as a ROS topic.
    • Example execution:
    $ ros2 launch tobas_image_processing cx_gb400_ffmpeg.launch.py server_and_port:=127.0.0.1:8888 # Send video.
    $ ffplay -fflags nobuffer -autoexit "srt://127.0.0.1:8888?mode=listener" # Receive video.
    
  • To republish it as a ROS topic and display it in rviz2, run:
    $ ros2 launch tobas_image_processing cx_gb400_ffmpeg.launch.py server_and_port:=127.0.0.1:8888 # Send video.
    $ ros2 run tobas_image_processing ffmpeg_to_ros_msg_converter
    $ rviz2 # Display the image topic as an image.
    
  • parameters
    • server_and_port : Destination server IP address and port number. Specify it as <ip_address>:<port>.
    • image_scale : Factor by which to reduce the width and height of the transmitted video. Setting this to 2 sends the video at half size.
  • mjpg_compressor_example.launch.py
    • Example that retrieves MJPG video from /dev/video0, publishes it as a ROS topic, compresses it to H.264, and then decompresses it. The decompressed video can be viewed in rviz2.
CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged tobas_image_processing at Robotics Stack Exchange

No version for distro dashing showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

tobas_image_processing package from tobas repo

tobas tobas_camera tobas_camera_msgs tobas_camera_ros_interface tobas_image_processing tobas_command_msgs tobas_command_msgs_adapter tobas_algorithm tobas_common tobas_control tobas_dsp tobas_eigen_conversions tobas_eigen_msgs tobas_eigen_msgs_adapter tobas_eigen_tools tobas_geographic tobas_ic_drivers tobas_ic_drivers_ros tobas_kdl tobas_kdl_conversions tobas_kdl_msgs tobas_kdl_msgs_adapter tobas_kdl_parser tobas_linux tobas_math tobas_nlp tobas_path_tools tobas_quadprog tobas_ros2_tools tobas_std_msgs tobas_std_msgs_adapter tobas_std_tools tobas_string_tools tobas_time_tools tobas_trajectory_generation tobas_urdf tobas_xml_tools tobas_yaml_tools tobas_components_rt tobas_config_servers tobas_connection_monitor tobas_constants tobas_controllers tobas_fixed_wing_controller tobas_nonplanar_multi_controller tobas_planar_multi_controller tobas_random_axis_tilt_multi_controller tobas_y_axis_tilt_multi_controller tobas_core tobas_cui tobas_keyboard tobas_keyboard_teleop tobas_debug_msgs tobas_debug_msgs_adapter tobas_debug_tools tobas_description tobas_disturbance_observer tobas_dparam tobas_dparam_client tobas_dparam_common tobas_dparam_msgs tobas_dparam_server tobas_drone tobas_drone_core tobas_drone_msgs tobas_drone_msgs_adapter tobas_drone_server tobas_drone_tools tobas_dummy_pkg tobas_eskf tobas_failsafe tobas_fake_publishers tobas_fc1xx tobas_fc1xx_core tobas_fc1xx_ros tobas_fc1xx_test tobas_fc2xx tobas_fc2xx_core tobas_fc2xx_ros tobas_fc2xx_test tobas_hardware tobas_hardware_common tobas_joint_states_bridge tobas_landing_detection tobas_manipulation tobas_mission tobas_mission_execution_mc tobas_mission_items tobas_mission_msgs tobas_mission_msgs_adapter tobas_msgs tobas_msgs_adapter tobas_node tobas_object_avoidance tobas_pose_pid tobas_property tobas_property_client tobas_property_common tobas_property_msgs tobas_property_server tobas_property_tree tobas_rc_teleop tobas_dynamixel tobas_dynamixel_handler tobas_dynamixel_msgs tobas_dynamixel_ros_interface tobas_real tobas_real_common tobas_real_msgs tobas_real_ros tobas_sbus_driver tobas_ros_interface tobas_rosbag_recorder tobas_rotor_anomaly_detection tobas_rotor_controller tobas_tools tobas_topic_throttle tobas_tree_server tobas_version tobas_vibration_filter tobas_wind_model tobas_code_style tobas_cpp_code_style_example tobas_examples tobas_examples_cpp tobas_examples_py tobas_external tobas_inja_vendor tobas_rapidcsv_vendor tobas_actuator_test tobas_bootmedia_config tobas_colcon_cpp tobas_control_system tobas_crypt tobas_cyclonedds_config tobas_flight_log_gui tobas_gamepad tobas_gamepad_core tobas_gamepad_ros tobas_gazebo tobas_gazebo_common tobas_gazebo_conversions tobas_gazebo_gui_plugins tobas_gazebo_msgs tobas_gazebo_ros tobas_gazebo_sim tobas_gazebo_system_plugins tobas_gazebo_tools tobas_gcs tobas_git tobas_gui tobas_gui_common tobas_parameter_tuning tobas_qt_tools tobas_qwt_wrapper tobas_rqt_bridge tobas_rviz_plugin tobas_rviz_wrapper tobas_sensor_calibration tobas_setup_assistant tobas_simulation_gui tobas_ssh tobas_ssh_authkey tobas_ssh_client tobas_ssh_msgs tobas_ssh_server tobas_tile_proxy tobas_uadf tobas_udev tobas_urdf_builder tobas_urdf_builder_plugin tobas_visualization_msgs tobas_wpa_supplicant

ROS Distro
jazzy

Package Summary

Version 2.16.0
License GPL-3.0-or-later
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/TobasFlightControl/tobas.git
VCS Type git
VCS Version jazzy
Last Updated 2026-08-11
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS 2 nodes for video capture, image compression, decompression, conversion, and display.

Maintainers

  • Masayoshi Dohi

Authors

No additional authors.

tobas_image_processing

nodes

  • compressed_image_viewer
    • Displays MJPG video received from a ROS topic.
    • parameters
      • compressed_image_topic : Name of the ROS topic to receive and display.
  • cx_gb400_publisher
    • Operates the cx_gb400.
    • Subscribes to the aircraft attitude and sends it to the camera.
    • Subscribes to the target attitude for the camera gimbal and sends it to the camera.
    • Publishes captured video to a ROS topic when disable_video_streaming = false.
    • parameters
      • device_name : Device name used by the OS to recognize the cx_gb400.
      • disable_video_streaming : Whether this node retrieves video from the camera. Set this to true, for example, when using ffmpeg to send video through a non-ROS transport.
      • image_topic : Name of the ROS topic where this node publishes video.
      • FPS : Frames per second. Specifies the operating frequency of this node, which effectively corresponds to the camera FPS.
  • ffmpeg_to_ros_msg_converter
    • Receives video sent by ffmpeg or another non-ROS transport and republishes it as a ROS topic.
    • parameters
      • ros_image_topic : Topic name used when republishing.
      • protocol : Video transport protocol to receive.
      • port_uri : Port used to receive video.
      • output_msg_encoding : Encoding of the video when republishing.
      • frame_id : frame_id of the ROS video topic when republishing.
      • FPS : Frames per second of the incoming video.
  • h264_decompressor
    • Subscribes to H.264-compressed video as ffmpeg_image_transport_msgs/msg/FFMPEGPacket, decompresses it, and publishes it.
    • parameters
      • h264_topic : Topic name for H.264-compressed video data.
      • decoded_topic : Topic name for decompressed video data.
  • mjpg_decompressor
    • Subscribes to images of type sensor_msgs::msg::CompressedImage (equivalent to MJPG), decompresses them, and publishes them as sensor_msgs::msg::Image.
    • parameters
      • mjpg_topic : Topic name for MJPG-compressed video data.
      • decoded_topic : Topic name for decompressed video data.
  • mjpg_compressor
    • Subscribes to images of type sensor_msgs::msg::CompressedImage (equivalent to MJPG), compresses them, and publishes them as MJPG or H.264 video.
    • parameters
      • mjpg_topic : Topic name for the MJPG input to be compressed.
      • resized_topic : Topic name after compression.
      • encoding : Encoding of the compressed video: MJPG or H.264.
      • resize_rate : Ratio used to reduce image width and height before compression when further compression is desired.
  • video_dev_publisher
    • Retrieves video data from the camera and publishes it as a ROS topic.
    • parameters
      • use_compressed_image : Whether the video data retrieved from the camera is MJPG or an uncompressed format such as YUYV.
      • device_name : Device name used by the OS to recognize the camera device.
      • image_topic : Name of the ROS topic to publish.

Displaying Video

Use rviz2 to display video. Start rviz2, then add an Image panel from the Add button at the lower left. Select the video topic name, then adjust QoS by setting Reliability to Best Effort.

However, the video topic type must be sensor_msgs/msg/Image. In other words, the image must be uncompressed. To display the contents of an MJPG or H.264 video topic, decompress it with another node and display the decompressed video topic in rviz2. MJPG can be decompressed with mjpg_decompressor, and H.264 can be decompressed with h264_decompressor.

launch files

  • cx_gb400_ffmpeg.launch.py
    • Retrieves video from the cx_gb400 and sends it over SRT with ffmpeg while also controlling the gimbal. Video is not distributed as a ROS topic.
    • Example execution:
    $ ros2 launch tobas_image_processing cx_gb400_ffmpeg.launch.py server_and_port:=127.0.0.1:8888 # Send video.
    $ ffplay -fflags nobuffer -autoexit "srt://127.0.0.1:8888?mode=listener" # Receive video.
    
  • To republish it as a ROS topic and display it in rviz2, run:
    $ ros2 launch tobas_image_processing cx_gb400_ffmpeg.launch.py server_and_port:=127.0.0.1:8888 # Send video.
    $ ros2 run tobas_image_processing ffmpeg_to_ros_msg_converter
    $ rviz2 # Display the image topic as an image.
    
  • parameters
    • server_and_port : Destination server IP address and port number. Specify it as <ip_address>:<port>.
    • image_scale : Factor by which to reduce the width and height of the transmitted video. Setting this to 2 sends the video at half size.
  • mjpg_compressor_example.launch.py
    • Example that retrieves MJPG video from /dev/video0, publishes it as a ROS topic, compresses it to H.264, and then decompresses it. The decompressed video can be viewed in rviz2.
CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged tobas_image_processing at Robotics Stack Exchange

No version for distro galactic showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

tobas_image_processing package from tobas repo

tobas tobas_camera tobas_camera_msgs tobas_camera_ros_interface tobas_image_processing tobas_command_msgs tobas_command_msgs_adapter tobas_algorithm tobas_common tobas_control tobas_dsp tobas_eigen_conversions tobas_eigen_msgs tobas_eigen_msgs_adapter tobas_eigen_tools tobas_geographic tobas_ic_drivers tobas_ic_drivers_ros tobas_kdl tobas_kdl_conversions tobas_kdl_msgs tobas_kdl_msgs_adapter tobas_kdl_parser tobas_linux tobas_math tobas_nlp tobas_path_tools tobas_quadprog tobas_ros2_tools tobas_std_msgs tobas_std_msgs_adapter tobas_std_tools tobas_string_tools tobas_time_tools tobas_trajectory_generation tobas_urdf tobas_xml_tools tobas_yaml_tools tobas_components_rt tobas_config_servers tobas_connection_monitor tobas_constants tobas_controllers tobas_fixed_wing_controller tobas_nonplanar_multi_controller tobas_planar_multi_controller tobas_random_axis_tilt_multi_controller tobas_y_axis_tilt_multi_controller tobas_core tobas_cui tobas_keyboard tobas_keyboard_teleop tobas_debug_msgs tobas_debug_msgs_adapter tobas_debug_tools tobas_description tobas_disturbance_observer tobas_dparam tobas_dparam_client tobas_dparam_common tobas_dparam_msgs tobas_dparam_server tobas_drone tobas_drone_core tobas_drone_msgs tobas_drone_msgs_adapter tobas_drone_server tobas_drone_tools tobas_dummy_pkg tobas_eskf tobas_failsafe tobas_fake_publishers tobas_fc1xx tobas_fc1xx_core tobas_fc1xx_ros tobas_fc1xx_test tobas_fc2xx tobas_fc2xx_core tobas_fc2xx_ros tobas_fc2xx_test tobas_hardware tobas_hardware_common tobas_joint_states_bridge tobas_landing_detection tobas_manipulation tobas_mission tobas_mission_execution_mc tobas_mission_items tobas_mission_msgs tobas_mission_msgs_adapter tobas_msgs tobas_msgs_adapter tobas_node tobas_object_avoidance tobas_pose_pid tobas_property tobas_property_client tobas_property_common tobas_property_msgs tobas_property_server tobas_property_tree tobas_rc_teleop tobas_dynamixel tobas_dynamixel_handler tobas_dynamixel_msgs tobas_dynamixel_ros_interface tobas_real tobas_real_common tobas_real_msgs tobas_real_ros tobas_sbus_driver tobas_ros_interface tobas_rosbag_recorder tobas_rotor_anomaly_detection tobas_rotor_controller tobas_tools tobas_topic_throttle tobas_tree_server tobas_version tobas_vibration_filter tobas_wind_model tobas_code_style tobas_cpp_code_style_example tobas_examples tobas_examples_cpp tobas_examples_py tobas_external tobas_inja_vendor tobas_rapidcsv_vendor tobas_actuator_test tobas_bootmedia_config tobas_colcon_cpp tobas_control_system tobas_crypt tobas_cyclonedds_config tobas_flight_log_gui tobas_gamepad tobas_gamepad_core tobas_gamepad_ros tobas_gazebo tobas_gazebo_common tobas_gazebo_conversions tobas_gazebo_gui_plugins tobas_gazebo_msgs tobas_gazebo_ros tobas_gazebo_sim tobas_gazebo_system_plugins tobas_gazebo_tools tobas_gcs tobas_git tobas_gui tobas_gui_common tobas_parameter_tuning tobas_qt_tools tobas_qwt_wrapper tobas_rqt_bridge tobas_rviz_plugin tobas_rviz_wrapper tobas_sensor_calibration tobas_setup_assistant tobas_simulation_gui tobas_ssh tobas_ssh_authkey tobas_ssh_client tobas_ssh_msgs tobas_ssh_server tobas_tile_proxy tobas_uadf tobas_udev tobas_urdf_builder tobas_urdf_builder_plugin tobas_visualization_msgs tobas_wpa_supplicant

ROS Distro
jazzy

Package Summary

Version 2.16.0
License GPL-3.0-or-later
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/TobasFlightControl/tobas.git
VCS Type git
VCS Version jazzy
Last Updated 2026-08-11
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS 2 nodes for video capture, image compression, decompression, conversion, and display.

Maintainers

  • Masayoshi Dohi

Authors

No additional authors.

tobas_image_processing

nodes

  • compressed_image_viewer
    • Displays MJPG video received from a ROS topic.
    • parameters
      • compressed_image_topic : Name of the ROS topic to receive and display.
  • cx_gb400_publisher
    • Operates the cx_gb400.
    • Subscribes to the aircraft attitude and sends it to the camera.
    • Subscribes to the target attitude for the camera gimbal and sends it to the camera.
    • Publishes captured video to a ROS topic when disable_video_streaming = false.
    • parameters
      • device_name : Device name used by the OS to recognize the cx_gb400.
      • disable_video_streaming : Whether this node retrieves video from the camera. Set this to true, for example, when using ffmpeg to send video through a non-ROS transport.
      • image_topic : Name of the ROS topic where this node publishes video.
      • FPS : Frames per second. Specifies the operating frequency of this node, which effectively corresponds to the camera FPS.
  • ffmpeg_to_ros_msg_converter
    • Receives video sent by ffmpeg or another non-ROS transport and republishes it as a ROS topic.
    • parameters
      • ros_image_topic : Topic name used when republishing.
      • protocol : Video transport protocol to receive.
      • port_uri : Port used to receive video.
      • output_msg_encoding : Encoding of the video when republishing.
      • frame_id : frame_id of the ROS video topic when republishing.
      • FPS : Frames per second of the incoming video.
  • h264_decompressor
    • Subscribes to H.264-compressed video as ffmpeg_image_transport_msgs/msg/FFMPEGPacket, decompresses it, and publishes it.
    • parameters
      • h264_topic : Topic name for H.264-compressed video data.
      • decoded_topic : Topic name for decompressed video data.
  • mjpg_decompressor
    • Subscribes to images of type sensor_msgs::msg::CompressedImage (equivalent to MJPG), decompresses them, and publishes them as sensor_msgs::msg::Image.
    • parameters
      • mjpg_topic : Topic name for MJPG-compressed video data.
      • decoded_topic : Topic name for decompressed video data.
  • mjpg_compressor
    • Subscribes to images of type sensor_msgs::msg::CompressedImage (equivalent to MJPG), compresses them, and publishes them as MJPG or H.264 video.
    • parameters
      • mjpg_topic : Topic name for the MJPG input to be compressed.
      • resized_topic : Topic name after compression.
      • encoding : Encoding of the compressed video: MJPG or H.264.
      • resize_rate : Ratio used to reduce image width and height before compression when further compression is desired.
  • video_dev_publisher
    • Retrieves video data from the camera and publishes it as a ROS topic.
    • parameters
      • use_compressed_image : Whether the video data retrieved from the camera is MJPG or an uncompressed format such as YUYV.
      • device_name : Device name used by the OS to recognize the camera device.
      • image_topic : Name of the ROS topic to publish.

Displaying Video

Use rviz2 to display video. Start rviz2, then add an Image panel from the Add button at the lower left. Select the video topic name, then adjust QoS by setting Reliability to Best Effort.

However, the video topic type must be sensor_msgs/msg/Image. In other words, the image must be uncompressed. To display the contents of an MJPG or H.264 video topic, decompress it with another node and display the decompressed video topic in rviz2. MJPG can be decompressed with mjpg_decompressor, and H.264 can be decompressed with h264_decompressor.

launch files

  • cx_gb400_ffmpeg.launch.py
    • Retrieves video from the cx_gb400 and sends it over SRT with ffmpeg while also controlling the gimbal. Video is not distributed as a ROS topic.
    • Example execution:
    $ ros2 launch tobas_image_processing cx_gb400_ffmpeg.launch.py server_and_port:=127.0.0.1:8888 # Send video.
    $ ffplay -fflags nobuffer -autoexit "srt://127.0.0.1:8888?mode=listener" # Receive video.
    
  • To republish it as a ROS topic and display it in rviz2, run:
    $ ros2 launch tobas_image_processing cx_gb400_ffmpeg.launch.py server_and_port:=127.0.0.1:8888 # Send video.
    $ ros2 run tobas_image_processing ffmpeg_to_ros_msg_converter
    $ rviz2 # Display the image topic as an image.
    
  • parameters
    • server_and_port : Destination server IP address and port number. Specify it as <ip_address>:<port>.
    • image_scale : Factor by which to reduce the width and height of the transmitted video. Setting this to 2 sends the video at half size.
  • mjpg_compressor_example.launch.py
    • Example that retrieves MJPG video from /dev/video0, publishes it as a ROS topic, compresses it to H.264, and then decompresses it. The decompressed video can be viewed in rviz2.
CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged tobas_image_processing at Robotics Stack Exchange

No version for distro foxy showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

tobas_image_processing package from tobas repo

tobas tobas_camera tobas_camera_msgs tobas_camera_ros_interface tobas_image_processing tobas_command_msgs tobas_command_msgs_adapter tobas_algorithm tobas_common tobas_control tobas_dsp tobas_eigen_conversions tobas_eigen_msgs tobas_eigen_msgs_adapter tobas_eigen_tools tobas_geographic tobas_ic_drivers tobas_ic_drivers_ros tobas_kdl tobas_kdl_conversions tobas_kdl_msgs tobas_kdl_msgs_adapter tobas_kdl_parser tobas_linux tobas_math tobas_nlp tobas_path_tools tobas_quadprog tobas_ros2_tools tobas_std_msgs tobas_std_msgs_adapter tobas_std_tools tobas_string_tools tobas_time_tools tobas_trajectory_generation tobas_urdf tobas_xml_tools tobas_yaml_tools tobas_components_rt tobas_config_servers tobas_connection_monitor tobas_constants tobas_controllers tobas_fixed_wing_controller tobas_nonplanar_multi_controller tobas_planar_multi_controller tobas_random_axis_tilt_multi_controller tobas_y_axis_tilt_multi_controller tobas_core tobas_cui tobas_keyboard tobas_keyboard_teleop tobas_debug_msgs tobas_debug_msgs_adapter tobas_debug_tools tobas_description tobas_disturbance_observer tobas_dparam tobas_dparam_client tobas_dparam_common tobas_dparam_msgs tobas_dparam_server tobas_drone tobas_drone_core tobas_drone_msgs tobas_drone_msgs_adapter tobas_drone_server tobas_drone_tools tobas_dummy_pkg tobas_eskf tobas_failsafe tobas_fake_publishers tobas_fc1xx tobas_fc1xx_core tobas_fc1xx_ros tobas_fc1xx_test tobas_fc2xx tobas_fc2xx_core tobas_fc2xx_ros tobas_fc2xx_test tobas_hardware tobas_hardware_common tobas_joint_states_bridge tobas_landing_detection tobas_manipulation tobas_mission tobas_mission_execution_mc tobas_mission_items tobas_mission_msgs tobas_mission_msgs_adapter tobas_msgs tobas_msgs_adapter tobas_node tobas_object_avoidance tobas_pose_pid tobas_property tobas_property_client tobas_property_common tobas_property_msgs tobas_property_server tobas_property_tree tobas_rc_teleop tobas_dynamixel tobas_dynamixel_handler tobas_dynamixel_msgs tobas_dynamixel_ros_interface tobas_real tobas_real_common tobas_real_msgs tobas_real_ros tobas_sbus_driver tobas_ros_interface tobas_rosbag_recorder tobas_rotor_anomaly_detection tobas_rotor_controller tobas_tools tobas_topic_throttle tobas_tree_server tobas_version tobas_vibration_filter tobas_wind_model tobas_code_style tobas_cpp_code_style_example tobas_examples tobas_examples_cpp tobas_examples_py tobas_external tobas_inja_vendor tobas_rapidcsv_vendor tobas_actuator_test tobas_bootmedia_config tobas_colcon_cpp tobas_control_system tobas_crypt tobas_cyclonedds_config tobas_flight_log_gui tobas_gamepad tobas_gamepad_core tobas_gamepad_ros tobas_gazebo tobas_gazebo_common tobas_gazebo_conversions tobas_gazebo_gui_plugins tobas_gazebo_msgs tobas_gazebo_ros tobas_gazebo_sim tobas_gazebo_system_plugins tobas_gazebo_tools tobas_gcs tobas_git tobas_gui tobas_gui_common tobas_parameter_tuning tobas_qt_tools tobas_qwt_wrapper tobas_rqt_bridge tobas_rviz_plugin tobas_rviz_wrapper tobas_sensor_calibration tobas_setup_assistant tobas_simulation_gui tobas_ssh tobas_ssh_authkey tobas_ssh_client tobas_ssh_msgs tobas_ssh_server tobas_tile_proxy tobas_uadf tobas_udev tobas_urdf_builder tobas_urdf_builder_plugin tobas_visualization_msgs tobas_wpa_supplicant

ROS Distro
jazzy

Package Summary

Version 2.16.0
License GPL-3.0-or-later
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/TobasFlightControl/tobas.git
VCS Type git
VCS Version jazzy
Last Updated 2026-08-11
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS 2 nodes for video capture, image compression, decompression, conversion, and display.

Maintainers

  • Masayoshi Dohi

Authors

No additional authors.

tobas_image_processing

nodes

  • compressed_image_viewer
    • Displays MJPG video received from a ROS topic.
    • parameters
      • compressed_image_topic : Name of the ROS topic to receive and display.
  • cx_gb400_publisher
    • Operates the cx_gb400.
    • Subscribes to the aircraft attitude and sends it to the camera.
    • Subscribes to the target attitude for the camera gimbal and sends it to the camera.
    • Publishes captured video to a ROS topic when disable_video_streaming = false.
    • parameters
      • device_name : Device name used by the OS to recognize the cx_gb400.
      • disable_video_streaming : Whether this node retrieves video from the camera. Set this to true, for example, when using ffmpeg to send video through a non-ROS transport.
      • image_topic : Name of the ROS topic where this node publishes video.
      • FPS : Frames per second. Specifies the operating frequency of this node, which effectively corresponds to the camera FPS.
  • ffmpeg_to_ros_msg_converter
    • Receives video sent by ffmpeg or another non-ROS transport and republishes it as a ROS topic.
    • parameters
      • ros_image_topic : Topic name used when republishing.
      • protocol : Video transport protocol to receive.
      • port_uri : Port used to receive video.
      • output_msg_encoding : Encoding of the video when republishing.
      • frame_id : frame_id of the ROS video topic when republishing.
      • FPS : Frames per second of the incoming video.
  • h264_decompressor
    • Subscribes to H.264-compressed video as ffmpeg_image_transport_msgs/msg/FFMPEGPacket, decompresses it, and publishes it.
    • parameters
      • h264_topic : Topic name for H.264-compressed video data.
      • decoded_topic : Topic name for decompressed video data.
  • mjpg_decompressor
    • Subscribes to images of type sensor_msgs::msg::CompressedImage (equivalent to MJPG), decompresses them, and publishes them as sensor_msgs::msg::Image.
    • parameters
      • mjpg_topic : Topic name for MJPG-compressed video data.
      • decoded_topic : Topic name for decompressed video data.
  • mjpg_compressor
    • Subscribes to images of type sensor_msgs::msg::CompressedImage (equivalent to MJPG), compresses them, and publishes them as MJPG or H.264 video.
    • parameters
      • mjpg_topic : Topic name for the MJPG input to be compressed.
      • resized_topic : Topic name after compression.
      • encoding : Encoding of the compressed video: MJPG or H.264.
      • resize_rate : Ratio used to reduce image width and height before compression when further compression is desired.
  • video_dev_publisher
    • Retrieves video data from the camera and publishes it as a ROS topic.
    • parameters
      • use_compressed_image : Whether the video data retrieved from the camera is MJPG or an uncompressed format such as YUYV.
      • device_name : Device name used by the OS to recognize the camera device.
      • image_topic : Name of the ROS topic to publish.

Displaying Video

Use rviz2 to display video. Start rviz2, then add an Image panel from the Add button at the lower left. Select the video topic name, then adjust QoS by setting Reliability to Best Effort.

However, the video topic type must be sensor_msgs/msg/Image. In other words, the image must be uncompressed. To display the contents of an MJPG or H.264 video topic, decompress it with another node and display the decompressed video topic in rviz2. MJPG can be decompressed with mjpg_decompressor, and H.264 can be decompressed with h264_decompressor.

launch files

  • cx_gb400_ffmpeg.launch.py
    • Retrieves video from the cx_gb400 and sends it over SRT with ffmpeg while also controlling the gimbal. Video is not distributed as a ROS topic.
    • Example execution:
    $ ros2 launch tobas_image_processing cx_gb400_ffmpeg.launch.py server_and_port:=127.0.0.1:8888 # Send video.
    $ ffplay -fflags nobuffer -autoexit "srt://127.0.0.1:8888?mode=listener" # Receive video.
    
  • To republish it as a ROS topic and display it in rviz2, run:
    $ ros2 launch tobas_image_processing cx_gb400_ffmpeg.launch.py server_and_port:=127.0.0.1:8888 # Send video.
    $ ros2 run tobas_image_processing ffmpeg_to_ros_msg_converter
    $ rviz2 # Display the image topic as an image.
    
  • parameters
    • server_and_port : Destination server IP address and port number. Specify it as <ip_address>:<port>.
    • image_scale : Factor by which to reduce the width and height of the transmitted video. Setting this to 2 sends the video at half size.
  • mjpg_compressor_example.launch.py
    • Example that retrieves MJPG video from /dev/video0, publishes it as a ROS topic, compresses it to H.264, and then decompresses it. The decompressed video can be viewed in rviz2.
CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged tobas_image_processing at Robotics Stack Exchange

No version for distro iron showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

tobas_image_processing package from tobas repo

tobas tobas_camera tobas_camera_msgs tobas_camera_ros_interface tobas_image_processing tobas_command_msgs tobas_command_msgs_adapter tobas_algorithm tobas_common tobas_control tobas_dsp tobas_eigen_conversions tobas_eigen_msgs tobas_eigen_msgs_adapter tobas_eigen_tools tobas_geographic tobas_ic_drivers tobas_ic_drivers_ros tobas_kdl tobas_kdl_conversions tobas_kdl_msgs tobas_kdl_msgs_adapter tobas_kdl_parser tobas_linux tobas_math tobas_nlp tobas_path_tools tobas_quadprog tobas_ros2_tools tobas_std_msgs tobas_std_msgs_adapter tobas_std_tools tobas_string_tools tobas_time_tools tobas_trajectory_generation tobas_urdf tobas_xml_tools tobas_yaml_tools tobas_components_rt tobas_config_servers tobas_connection_monitor tobas_constants tobas_controllers tobas_fixed_wing_controller tobas_nonplanar_multi_controller tobas_planar_multi_controller tobas_random_axis_tilt_multi_controller tobas_y_axis_tilt_multi_controller tobas_core tobas_cui tobas_keyboard tobas_keyboard_teleop tobas_debug_msgs tobas_debug_msgs_adapter tobas_debug_tools tobas_description tobas_disturbance_observer tobas_dparam tobas_dparam_client tobas_dparam_common tobas_dparam_msgs tobas_dparam_server tobas_drone tobas_drone_core tobas_drone_msgs tobas_drone_msgs_adapter tobas_drone_server tobas_drone_tools tobas_dummy_pkg tobas_eskf tobas_failsafe tobas_fake_publishers tobas_fc1xx tobas_fc1xx_core tobas_fc1xx_ros tobas_fc1xx_test tobas_fc2xx tobas_fc2xx_core tobas_fc2xx_ros tobas_fc2xx_test tobas_hardware tobas_hardware_common tobas_joint_states_bridge tobas_landing_detection tobas_manipulation tobas_mission tobas_mission_execution_mc tobas_mission_items tobas_mission_msgs tobas_mission_msgs_adapter tobas_msgs tobas_msgs_adapter tobas_node tobas_object_avoidance tobas_pose_pid tobas_property tobas_property_client tobas_property_common tobas_property_msgs tobas_property_server tobas_property_tree tobas_rc_teleop tobas_dynamixel tobas_dynamixel_handler tobas_dynamixel_msgs tobas_dynamixel_ros_interface tobas_real tobas_real_common tobas_real_msgs tobas_real_ros tobas_sbus_driver tobas_ros_interface tobas_rosbag_recorder tobas_rotor_anomaly_detection tobas_rotor_controller tobas_tools tobas_topic_throttle tobas_tree_server tobas_version tobas_vibration_filter tobas_wind_model tobas_code_style tobas_cpp_code_style_example tobas_examples tobas_examples_cpp tobas_examples_py tobas_external tobas_inja_vendor tobas_rapidcsv_vendor tobas_actuator_test tobas_bootmedia_config tobas_colcon_cpp tobas_control_system tobas_crypt tobas_cyclonedds_config tobas_flight_log_gui tobas_gamepad tobas_gamepad_core tobas_gamepad_ros tobas_gazebo tobas_gazebo_common tobas_gazebo_conversions tobas_gazebo_gui_plugins tobas_gazebo_msgs tobas_gazebo_ros tobas_gazebo_sim tobas_gazebo_system_plugins tobas_gazebo_tools tobas_gcs tobas_git tobas_gui tobas_gui_common tobas_parameter_tuning tobas_qt_tools tobas_qwt_wrapper tobas_rqt_bridge tobas_rviz_plugin tobas_rviz_wrapper tobas_sensor_calibration tobas_setup_assistant tobas_simulation_gui tobas_ssh tobas_ssh_authkey tobas_ssh_client tobas_ssh_msgs tobas_ssh_server tobas_tile_proxy tobas_uadf tobas_udev tobas_urdf_builder tobas_urdf_builder_plugin tobas_visualization_msgs tobas_wpa_supplicant

ROS Distro
jazzy

Package Summary

Version 2.16.0
License GPL-3.0-or-later
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/TobasFlightControl/tobas.git
VCS Type git
VCS Version jazzy
Last Updated 2026-08-11
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS 2 nodes for video capture, image compression, decompression, conversion, and display.

Maintainers

  • Masayoshi Dohi

Authors

No additional authors.

tobas_image_processing

nodes

  • compressed_image_viewer
    • Displays MJPG video received from a ROS topic.
    • parameters
      • compressed_image_topic : Name of the ROS topic to receive and display.
  • cx_gb400_publisher
    • Operates the cx_gb400.
    • Subscribes to the aircraft attitude and sends it to the camera.
    • Subscribes to the target attitude for the camera gimbal and sends it to the camera.
    • Publishes captured video to a ROS topic when disable_video_streaming = false.
    • parameters
      • device_name : Device name used by the OS to recognize the cx_gb400.
      • disable_video_streaming : Whether this node retrieves video from the camera. Set this to true, for example, when using ffmpeg to send video through a non-ROS transport.
      • image_topic : Name of the ROS topic where this node publishes video.
      • FPS : Frames per second. Specifies the operating frequency of this node, which effectively corresponds to the camera FPS.
  • ffmpeg_to_ros_msg_converter
    • Receives video sent by ffmpeg or another non-ROS transport and republishes it as a ROS topic.
    • parameters
      • ros_image_topic : Topic name used when republishing.
      • protocol : Video transport protocol to receive.
      • port_uri : Port used to receive video.
      • output_msg_encoding : Encoding of the video when republishing.
      • frame_id : frame_id of the ROS video topic when republishing.
      • FPS : Frames per second of the incoming video.
  • h264_decompressor
    • Subscribes to H.264-compressed video as ffmpeg_image_transport_msgs/msg/FFMPEGPacket, decompresses it, and publishes it.
    • parameters
      • h264_topic : Topic name for H.264-compressed video data.
      • decoded_topic : Topic name for decompressed video data.
  • mjpg_decompressor
    • Subscribes to images of type sensor_msgs::msg::CompressedImage (equivalent to MJPG), decompresses them, and publishes them as sensor_msgs::msg::Image.
    • parameters
      • mjpg_topic : Topic name for MJPG-compressed video data.
      • decoded_topic : Topic name for decompressed video data.
  • mjpg_compressor
    • Subscribes to images of type sensor_msgs::msg::CompressedImage (equivalent to MJPG), compresses them, and publishes them as MJPG or H.264 video.
    • parameters
      • mjpg_topic : Topic name for the MJPG input to be compressed.
      • resized_topic : Topic name after compression.
      • encoding : Encoding of the compressed video: MJPG or H.264.
      • resize_rate : Ratio used to reduce image width and height before compression when further compression is desired.
  • video_dev_publisher
    • Retrieves video data from the camera and publishes it as a ROS topic.
    • parameters
      • use_compressed_image : Whether the video data retrieved from the camera is MJPG or an uncompressed format such as YUYV.
      • device_name : Device name used by the OS to recognize the camera device.
      • image_topic : Name of the ROS topic to publish.

Displaying Video

Use rviz2 to display video. Start rviz2, then add an Image panel from the Add button at the lower left. Select the video topic name, then adjust QoS by setting Reliability to Best Effort.

However, the video topic type must be sensor_msgs/msg/Image. In other words, the image must be uncompressed. To display the contents of an MJPG or H.264 video topic, decompress it with another node and display the decompressed video topic in rviz2. MJPG can be decompressed with mjpg_decompressor, and H.264 can be decompressed with h264_decompressor.

launch files

  • cx_gb400_ffmpeg.launch.py
    • Retrieves video from the cx_gb400 and sends it over SRT with ffmpeg while also controlling the gimbal. Video is not distributed as a ROS topic.
    • Example execution:
    $ ros2 launch tobas_image_processing cx_gb400_ffmpeg.launch.py server_and_port:=127.0.0.1:8888 # Send video.
    $ ffplay -fflags nobuffer -autoexit "srt://127.0.0.1:8888?mode=listener" # Receive video.
    
  • To republish it as a ROS topic and display it in rviz2, run:
    $ ros2 launch tobas_image_processing cx_gb400_ffmpeg.launch.py server_and_port:=127.0.0.1:8888 # Send video.
    $ ros2 run tobas_image_processing ffmpeg_to_ros_msg_converter
    $ rviz2 # Display the image topic as an image.
    
  • parameters
    • server_and_port : Destination server IP address and port number. Specify it as <ip_address>:<port>.
    • image_scale : Factor by which to reduce the width and height of the transmitted video. Setting this to 2 sends the video at half size.
  • mjpg_compressor_example.launch.py
    • Example that retrieves MJPG video from /dev/video0, publishes it as a ROS topic, compresses it to H.264, and then decompresses it. The decompressed video can be viewed in rviz2.
CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged tobas_image_processing at Robotics Stack Exchange

No version for distro lunar showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

tobas_image_processing package from tobas repo

tobas tobas_camera tobas_camera_msgs tobas_camera_ros_interface tobas_image_processing tobas_command_msgs tobas_command_msgs_adapter tobas_algorithm tobas_common tobas_control tobas_dsp tobas_eigen_conversions tobas_eigen_msgs tobas_eigen_msgs_adapter tobas_eigen_tools tobas_geographic tobas_ic_drivers tobas_ic_drivers_ros tobas_kdl tobas_kdl_conversions tobas_kdl_msgs tobas_kdl_msgs_adapter tobas_kdl_parser tobas_linux tobas_math tobas_nlp tobas_path_tools tobas_quadprog tobas_ros2_tools tobas_std_msgs tobas_std_msgs_adapter tobas_std_tools tobas_string_tools tobas_time_tools tobas_trajectory_generation tobas_urdf tobas_xml_tools tobas_yaml_tools tobas_components_rt tobas_config_servers tobas_connection_monitor tobas_constants tobas_controllers tobas_fixed_wing_controller tobas_nonplanar_multi_controller tobas_planar_multi_controller tobas_random_axis_tilt_multi_controller tobas_y_axis_tilt_multi_controller tobas_core tobas_cui tobas_keyboard tobas_keyboard_teleop tobas_debug_msgs tobas_debug_msgs_adapter tobas_debug_tools tobas_description tobas_disturbance_observer tobas_dparam tobas_dparam_client tobas_dparam_common tobas_dparam_msgs tobas_dparam_server tobas_drone tobas_drone_core tobas_drone_msgs tobas_drone_msgs_adapter tobas_drone_server tobas_drone_tools tobas_dummy_pkg tobas_eskf tobas_failsafe tobas_fake_publishers tobas_fc1xx tobas_fc1xx_core tobas_fc1xx_ros tobas_fc1xx_test tobas_fc2xx tobas_fc2xx_core tobas_fc2xx_ros tobas_fc2xx_test tobas_hardware tobas_hardware_common tobas_joint_states_bridge tobas_landing_detection tobas_manipulation tobas_mission tobas_mission_execution_mc tobas_mission_items tobas_mission_msgs tobas_mission_msgs_adapter tobas_msgs tobas_msgs_adapter tobas_node tobas_object_avoidance tobas_pose_pid tobas_property tobas_property_client tobas_property_common tobas_property_msgs tobas_property_server tobas_property_tree tobas_rc_teleop tobas_dynamixel tobas_dynamixel_handler tobas_dynamixel_msgs tobas_dynamixel_ros_interface tobas_real tobas_real_common tobas_real_msgs tobas_real_ros tobas_sbus_driver tobas_ros_interface tobas_rosbag_recorder tobas_rotor_anomaly_detection tobas_rotor_controller tobas_tools tobas_topic_throttle tobas_tree_server tobas_version tobas_vibration_filter tobas_wind_model tobas_code_style tobas_cpp_code_style_example tobas_examples tobas_examples_cpp tobas_examples_py tobas_external tobas_inja_vendor tobas_rapidcsv_vendor tobas_actuator_test tobas_bootmedia_config tobas_colcon_cpp tobas_control_system tobas_crypt tobas_cyclonedds_config tobas_flight_log_gui tobas_gamepad tobas_gamepad_core tobas_gamepad_ros tobas_gazebo tobas_gazebo_common tobas_gazebo_conversions tobas_gazebo_gui_plugins tobas_gazebo_msgs tobas_gazebo_ros tobas_gazebo_sim tobas_gazebo_system_plugins tobas_gazebo_tools tobas_gcs tobas_git tobas_gui tobas_gui_common tobas_parameter_tuning tobas_qt_tools tobas_qwt_wrapper tobas_rqt_bridge tobas_rviz_plugin tobas_rviz_wrapper tobas_sensor_calibration tobas_setup_assistant tobas_simulation_gui tobas_ssh tobas_ssh_authkey tobas_ssh_client tobas_ssh_msgs tobas_ssh_server tobas_tile_proxy tobas_uadf tobas_udev tobas_urdf_builder tobas_urdf_builder_plugin tobas_visualization_msgs tobas_wpa_supplicant

ROS Distro
jazzy

Package Summary

Version 2.16.0
License GPL-3.0-or-later
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/TobasFlightControl/tobas.git
VCS Type git
VCS Version jazzy
Last Updated 2026-08-11
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS 2 nodes for video capture, image compression, decompression, conversion, and display.

Maintainers

  • Masayoshi Dohi

Authors

No additional authors.

tobas_image_processing

nodes

  • compressed_image_viewer
    • Displays MJPG video received from a ROS topic.
    • parameters
      • compressed_image_topic : Name of the ROS topic to receive and display.
  • cx_gb400_publisher
    • Operates the cx_gb400.
    • Subscribes to the aircraft attitude and sends it to the camera.
    • Subscribes to the target attitude for the camera gimbal and sends it to the camera.
    • Publishes captured video to a ROS topic when disable_video_streaming = false.
    • parameters
      • device_name : Device name used by the OS to recognize the cx_gb400.
      • disable_video_streaming : Whether this node retrieves video from the camera. Set this to true, for example, when using ffmpeg to send video through a non-ROS transport.
      • image_topic : Name of the ROS topic where this node publishes video.
      • FPS : Frames per second. Specifies the operating frequency of this node, which effectively corresponds to the camera FPS.
  • ffmpeg_to_ros_msg_converter
    • Receives video sent by ffmpeg or another non-ROS transport and republishes it as a ROS topic.
    • parameters
      • ros_image_topic : Topic name used when republishing.
      • protocol : Video transport protocol to receive.
      • port_uri : Port used to receive video.
      • output_msg_encoding : Encoding of the video when republishing.
      • frame_id : frame_id of the ROS video topic when republishing.
      • FPS : Frames per second of the incoming video.
  • h264_decompressor
    • Subscribes to H.264-compressed video as ffmpeg_image_transport_msgs/msg/FFMPEGPacket, decompresses it, and publishes it.
    • parameters
      • h264_topic : Topic name for H.264-compressed video data.
      • decoded_topic : Topic name for decompressed video data.
  • mjpg_decompressor
    • Subscribes to images of type sensor_msgs::msg::CompressedImage (equivalent to MJPG), decompresses them, and publishes them as sensor_msgs::msg::Image.
    • parameters
      • mjpg_topic : Topic name for MJPG-compressed video data.
      • decoded_topic : Topic name for decompressed video data.
  • mjpg_compressor
    • Subscribes to images of type sensor_msgs::msg::CompressedImage (equivalent to MJPG), compresses them, and publishes them as MJPG or H.264 video.
    • parameters
      • mjpg_topic : Topic name for the MJPG input to be compressed.
      • resized_topic : Topic name after compression.
      • encoding : Encoding of the compressed video: MJPG or H.264.
      • resize_rate : Ratio used to reduce image width and height before compression when further compression is desired.
  • video_dev_publisher
    • Retrieves video data from the camera and publishes it as a ROS topic.
    • parameters
      • use_compressed_image : Whether the video data retrieved from the camera is MJPG or an uncompressed format such as YUYV.
      • device_name : Device name used by the OS to recognize the camera device.
      • image_topic : Name of the ROS topic to publish.

Displaying Video

Use rviz2 to display video. Start rviz2, then add an Image panel from the Add button at the lower left. Select the video topic name, then adjust QoS by setting Reliability to Best Effort.

However, the video topic type must be sensor_msgs/msg/Image. In other words, the image must be uncompressed. To display the contents of an MJPG or H.264 video topic, decompress it with another node and display the decompressed video topic in rviz2. MJPG can be decompressed with mjpg_decompressor, and H.264 can be decompressed with h264_decompressor.

launch files

  • cx_gb400_ffmpeg.launch.py
    • Retrieves video from the cx_gb400 and sends it over SRT with ffmpeg while also controlling the gimbal. Video is not distributed as a ROS topic.
    • Example execution:
    $ ros2 launch tobas_image_processing cx_gb400_ffmpeg.launch.py server_and_port:=127.0.0.1:8888 # Send video.
    $ ffplay -fflags nobuffer -autoexit "srt://127.0.0.1:8888?mode=listener" # Receive video.
    
  • To republish it as a ROS topic and display it in rviz2, run:
    $ ros2 launch tobas_image_processing cx_gb400_ffmpeg.launch.py server_and_port:=127.0.0.1:8888 # Send video.
    $ ros2 run tobas_image_processing ffmpeg_to_ros_msg_converter
    $ rviz2 # Display the image topic as an image.
    
  • parameters
    • server_and_port : Destination server IP address and port number. Specify it as <ip_address>:<port>.
    • image_scale : Factor by which to reduce the width and height of the transmitted video. Setting this to 2 sends the video at half size.
  • mjpg_compressor_example.launch.py
    • Example that retrieves MJPG video from /dev/video0, publishes it as a ROS topic, compresses it to H.264, and then decompresses it. The decompressed video can be viewed in rviz2.
CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged tobas_image_processing at Robotics Stack Exchange

No version for distro jade showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

tobas_image_processing package from tobas repo

tobas tobas_camera tobas_camera_msgs tobas_camera_ros_interface tobas_image_processing tobas_command_msgs tobas_command_msgs_adapter tobas_algorithm tobas_common tobas_control tobas_dsp tobas_eigen_conversions tobas_eigen_msgs tobas_eigen_msgs_adapter tobas_eigen_tools tobas_geographic tobas_ic_drivers tobas_ic_drivers_ros tobas_kdl tobas_kdl_conversions tobas_kdl_msgs tobas_kdl_msgs_adapter tobas_kdl_parser tobas_linux tobas_math tobas_nlp tobas_path_tools tobas_quadprog tobas_ros2_tools tobas_std_msgs tobas_std_msgs_adapter tobas_std_tools tobas_string_tools tobas_time_tools tobas_trajectory_generation tobas_urdf tobas_xml_tools tobas_yaml_tools tobas_components_rt tobas_config_servers tobas_connection_monitor tobas_constants tobas_controllers tobas_fixed_wing_controller tobas_nonplanar_multi_controller tobas_planar_multi_controller tobas_random_axis_tilt_multi_controller tobas_y_axis_tilt_multi_controller tobas_core tobas_cui tobas_keyboard tobas_keyboard_teleop tobas_debug_msgs tobas_debug_msgs_adapter tobas_debug_tools tobas_description tobas_disturbance_observer tobas_dparam tobas_dparam_client tobas_dparam_common tobas_dparam_msgs tobas_dparam_server tobas_drone tobas_drone_core tobas_drone_msgs tobas_drone_msgs_adapter tobas_drone_server tobas_drone_tools tobas_dummy_pkg tobas_eskf tobas_failsafe tobas_fake_publishers tobas_fc1xx tobas_fc1xx_core tobas_fc1xx_ros tobas_fc1xx_test tobas_fc2xx tobas_fc2xx_core tobas_fc2xx_ros tobas_fc2xx_test tobas_hardware tobas_hardware_common tobas_joint_states_bridge tobas_landing_detection tobas_manipulation tobas_mission tobas_mission_execution_mc tobas_mission_items tobas_mission_msgs tobas_mission_msgs_adapter tobas_msgs tobas_msgs_adapter tobas_node tobas_object_avoidance tobas_pose_pid tobas_property tobas_property_client tobas_property_common tobas_property_msgs tobas_property_server tobas_property_tree tobas_rc_teleop tobas_dynamixel tobas_dynamixel_handler tobas_dynamixel_msgs tobas_dynamixel_ros_interface tobas_real tobas_real_common tobas_real_msgs tobas_real_ros tobas_sbus_driver tobas_ros_interface tobas_rosbag_recorder tobas_rotor_anomaly_detection tobas_rotor_controller tobas_tools tobas_topic_throttle tobas_tree_server tobas_version tobas_vibration_filter tobas_wind_model tobas_code_style tobas_cpp_code_style_example tobas_examples tobas_examples_cpp tobas_examples_py tobas_external tobas_inja_vendor tobas_rapidcsv_vendor tobas_actuator_test tobas_bootmedia_config tobas_colcon_cpp tobas_control_system tobas_crypt tobas_cyclonedds_config tobas_flight_log_gui tobas_gamepad tobas_gamepad_core tobas_gamepad_ros tobas_gazebo tobas_gazebo_common tobas_gazebo_conversions tobas_gazebo_gui_plugins tobas_gazebo_msgs tobas_gazebo_ros tobas_gazebo_sim tobas_gazebo_system_plugins tobas_gazebo_tools tobas_gcs tobas_git tobas_gui tobas_gui_common tobas_parameter_tuning tobas_qt_tools tobas_qwt_wrapper tobas_rqt_bridge tobas_rviz_plugin tobas_rviz_wrapper tobas_sensor_calibration tobas_setup_assistant tobas_simulation_gui tobas_ssh tobas_ssh_authkey tobas_ssh_client tobas_ssh_msgs tobas_ssh_server tobas_tile_proxy tobas_uadf tobas_udev tobas_urdf_builder tobas_urdf_builder_plugin tobas_visualization_msgs tobas_wpa_supplicant

ROS Distro
jazzy

Package Summary

Version 2.16.0
License GPL-3.0-or-later
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/TobasFlightControl/tobas.git
VCS Type git
VCS Version jazzy
Last Updated 2026-08-11
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS 2 nodes for video capture, image compression, decompression, conversion, and display.

Maintainers

  • Masayoshi Dohi

Authors

No additional authors.

tobas_image_processing

nodes

  • compressed_image_viewer
    • Displays MJPG video received from a ROS topic.
    • parameters
      • compressed_image_topic : Name of the ROS topic to receive and display.
  • cx_gb400_publisher
    • Operates the cx_gb400.
    • Subscribes to the aircraft attitude and sends it to the camera.
    • Subscribes to the target attitude for the camera gimbal and sends it to the camera.
    • Publishes captured video to a ROS topic when disable_video_streaming = false.
    • parameters
      • device_name : Device name used by the OS to recognize the cx_gb400.
      • disable_video_streaming : Whether this node retrieves video from the camera. Set this to true, for example, when using ffmpeg to send video through a non-ROS transport.
      • image_topic : Name of the ROS topic where this node publishes video.
      • FPS : Frames per second. Specifies the operating frequency of this node, which effectively corresponds to the camera FPS.
  • ffmpeg_to_ros_msg_converter
    • Receives video sent by ffmpeg or another non-ROS transport and republishes it as a ROS topic.
    • parameters
      • ros_image_topic : Topic name used when republishing.
      • protocol : Video transport protocol to receive.
      • port_uri : Port used to receive video.
      • output_msg_encoding : Encoding of the video when republishing.
      • frame_id : frame_id of the ROS video topic when republishing.
      • FPS : Frames per second of the incoming video.
  • h264_decompressor
    • Subscribes to H.264-compressed video as ffmpeg_image_transport_msgs/msg/FFMPEGPacket, decompresses it, and publishes it.
    • parameters
      • h264_topic : Topic name for H.264-compressed video data.
      • decoded_topic : Topic name for decompressed video data.
  • mjpg_decompressor
    • Subscribes to images of type sensor_msgs::msg::CompressedImage (equivalent to MJPG), decompresses them, and publishes them as sensor_msgs::msg::Image.
    • parameters
      • mjpg_topic : Topic name for MJPG-compressed video data.
      • decoded_topic : Topic name for decompressed video data.
  • mjpg_compressor
    • Subscribes to images of type sensor_msgs::msg::CompressedImage (equivalent to MJPG), compresses them, and publishes them as MJPG or H.264 video.
    • parameters
      • mjpg_topic : Topic name for the MJPG input to be compressed.
      • resized_topic : Topic name after compression.
      • encoding : Encoding of the compressed video: MJPG or H.264.
      • resize_rate : Ratio used to reduce image width and height before compression when further compression is desired.
  • video_dev_publisher
    • Retrieves video data from the camera and publishes it as a ROS topic.
    • parameters
      • use_compressed_image : Whether the video data retrieved from the camera is MJPG or an uncompressed format such as YUYV.
      • device_name : Device name used by the OS to recognize the camera device.
      • image_topic : Name of the ROS topic to publish.

Displaying Video

Use rviz2 to display video. Start rviz2, then add an Image panel from the Add button at the lower left. Select the video topic name, then adjust QoS by setting Reliability to Best Effort.

However, the video topic type must be sensor_msgs/msg/Image. In other words, the image must be uncompressed. To display the contents of an MJPG or H.264 video topic, decompress it with another node and display the decompressed video topic in rviz2. MJPG can be decompressed with mjpg_decompressor, and H.264 can be decompressed with h264_decompressor.

launch files

  • cx_gb400_ffmpeg.launch.py
    • Retrieves video from the cx_gb400 and sends it over SRT with ffmpeg while also controlling the gimbal. Video is not distributed as a ROS topic.
    • Example execution:
    $ ros2 launch tobas_image_processing cx_gb400_ffmpeg.launch.py server_and_port:=127.0.0.1:8888 # Send video.
    $ ffplay -fflags nobuffer -autoexit "srt://127.0.0.1:8888?mode=listener" # Receive video.
    
  • To republish it as a ROS topic and display it in rviz2, run:
    $ ros2 launch tobas_image_processing cx_gb400_ffmpeg.launch.py server_and_port:=127.0.0.1:8888 # Send video.
    $ ros2 run tobas_image_processing ffmpeg_to_ros_msg_converter
    $ rviz2 # Display the image topic as an image.
    
  • parameters
    • server_and_port : Destination server IP address and port number. Specify it as <ip_address>:<port>.
    • image_scale : Factor by which to reduce the width and height of the transmitted video. Setting this to 2 sends the video at half size.
  • mjpg_compressor_example.launch.py
    • Example that retrieves MJPG video from /dev/video0, publishes it as a ROS topic, compresses it to H.264, and then decompresses it. The decompressed video can be viewed in rviz2.
CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged tobas_image_processing at Robotics Stack Exchange

No version for distro indigo showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

tobas_image_processing package from tobas repo

tobas tobas_camera tobas_camera_msgs tobas_camera_ros_interface tobas_image_processing tobas_command_msgs tobas_command_msgs_adapter tobas_algorithm tobas_common tobas_control tobas_dsp tobas_eigen_conversions tobas_eigen_msgs tobas_eigen_msgs_adapter tobas_eigen_tools tobas_geographic tobas_ic_drivers tobas_ic_drivers_ros tobas_kdl tobas_kdl_conversions tobas_kdl_msgs tobas_kdl_msgs_adapter tobas_kdl_parser tobas_linux tobas_math tobas_nlp tobas_path_tools tobas_quadprog tobas_ros2_tools tobas_std_msgs tobas_std_msgs_adapter tobas_std_tools tobas_string_tools tobas_time_tools tobas_trajectory_generation tobas_urdf tobas_xml_tools tobas_yaml_tools tobas_components_rt tobas_config_servers tobas_connection_monitor tobas_constants tobas_controllers tobas_fixed_wing_controller tobas_nonplanar_multi_controller tobas_planar_multi_controller tobas_random_axis_tilt_multi_controller tobas_y_axis_tilt_multi_controller tobas_core tobas_cui tobas_keyboard tobas_keyboard_teleop tobas_debug_msgs tobas_debug_msgs_adapter tobas_debug_tools tobas_description tobas_disturbance_observer tobas_dparam tobas_dparam_client tobas_dparam_common tobas_dparam_msgs tobas_dparam_server tobas_drone tobas_drone_core tobas_drone_msgs tobas_drone_msgs_adapter tobas_drone_server tobas_drone_tools tobas_dummy_pkg tobas_eskf tobas_failsafe tobas_fake_publishers tobas_fc1xx tobas_fc1xx_core tobas_fc1xx_ros tobas_fc1xx_test tobas_fc2xx tobas_fc2xx_core tobas_fc2xx_ros tobas_fc2xx_test tobas_hardware tobas_hardware_common tobas_joint_states_bridge tobas_landing_detection tobas_manipulation tobas_mission tobas_mission_execution_mc tobas_mission_items tobas_mission_msgs tobas_mission_msgs_adapter tobas_msgs tobas_msgs_adapter tobas_node tobas_object_avoidance tobas_pose_pid tobas_property tobas_property_client tobas_property_common tobas_property_msgs tobas_property_server tobas_property_tree tobas_rc_teleop tobas_dynamixel tobas_dynamixel_handler tobas_dynamixel_msgs tobas_dynamixel_ros_interface tobas_real tobas_real_common tobas_real_msgs tobas_real_ros tobas_sbus_driver tobas_ros_interface tobas_rosbag_recorder tobas_rotor_anomaly_detection tobas_rotor_controller tobas_tools tobas_topic_throttle tobas_tree_server tobas_version tobas_vibration_filter tobas_wind_model tobas_code_style tobas_cpp_code_style_example tobas_examples tobas_examples_cpp tobas_examples_py tobas_external tobas_inja_vendor tobas_rapidcsv_vendor tobas_actuator_test tobas_bootmedia_config tobas_colcon_cpp tobas_control_system tobas_crypt tobas_cyclonedds_config tobas_flight_log_gui tobas_gamepad tobas_gamepad_core tobas_gamepad_ros tobas_gazebo tobas_gazebo_common tobas_gazebo_conversions tobas_gazebo_gui_plugins tobas_gazebo_msgs tobas_gazebo_ros tobas_gazebo_sim tobas_gazebo_system_plugins tobas_gazebo_tools tobas_gcs tobas_git tobas_gui tobas_gui_common tobas_parameter_tuning tobas_qt_tools tobas_qwt_wrapper tobas_rqt_bridge tobas_rviz_plugin tobas_rviz_wrapper tobas_sensor_calibration tobas_setup_assistant tobas_simulation_gui tobas_ssh tobas_ssh_authkey tobas_ssh_client tobas_ssh_msgs tobas_ssh_server tobas_tile_proxy tobas_uadf tobas_udev tobas_urdf_builder tobas_urdf_builder_plugin tobas_visualization_msgs tobas_wpa_supplicant

ROS Distro
jazzy

Package Summary

Version 2.16.0
License GPL-3.0-or-later
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/TobasFlightControl/tobas.git
VCS Type git
VCS Version jazzy
Last Updated 2026-08-11
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS 2 nodes for video capture, image compression, decompression, conversion, and display.

Maintainers

  • Masayoshi Dohi

Authors

No additional authors.

tobas_image_processing

nodes

  • compressed_image_viewer
    • Displays MJPG video received from a ROS topic.
    • parameters
      • compressed_image_topic : Name of the ROS topic to receive and display.
  • cx_gb400_publisher
    • Operates the cx_gb400.
    • Subscribes to the aircraft attitude and sends it to the camera.
    • Subscribes to the target attitude for the camera gimbal and sends it to the camera.
    • Publishes captured video to a ROS topic when disable_video_streaming = false.
    • parameters
      • device_name : Device name used by the OS to recognize the cx_gb400.
      • disable_video_streaming : Whether this node retrieves video from the camera. Set this to true, for example, when using ffmpeg to send video through a non-ROS transport.
      • image_topic : Name of the ROS topic where this node publishes video.
      • FPS : Frames per second. Specifies the operating frequency of this node, which effectively corresponds to the camera FPS.
  • ffmpeg_to_ros_msg_converter
    • Receives video sent by ffmpeg or another non-ROS transport and republishes it as a ROS topic.
    • parameters
      • ros_image_topic : Topic name used when republishing.
      • protocol : Video transport protocol to receive.
      • port_uri : Port used to receive video.
      • output_msg_encoding : Encoding of the video when republishing.
      • frame_id : frame_id of the ROS video topic when republishing.
      • FPS : Frames per second of the incoming video.
  • h264_decompressor
    • Subscribes to H.264-compressed video as ffmpeg_image_transport_msgs/msg/FFMPEGPacket, decompresses it, and publishes it.
    • parameters
      • h264_topic : Topic name for H.264-compressed video data.
      • decoded_topic : Topic name for decompressed video data.
  • mjpg_decompressor
    • Subscribes to images of type sensor_msgs::msg::CompressedImage (equivalent to MJPG), decompresses them, and publishes them as sensor_msgs::msg::Image.
    • parameters
      • mjpg_topic : Topic name for MJPG-compressed video data.
      • decoded_topic : Topic name for decompressed video data.
  • mjpg_compressor
    • Subscribes to images of type sensor_msgs::msg::CompressedImage (equivalent to MJPG), compresses them, and publishes them as MJPG or H.264 video.
    • parameters
      • mjpg_topic : Topic name for the MJPG input to be compressed.
      • resized_topic : Topic name after compression.
      • encoding : Encoding of the compressed video: MJPG or H.264.
      • resize_rate : Ratio used to reduce image width and height before compression when further compression is desired.
  • video_dev_publisher
    • Retrieves video data from the camera and publishes it as a ROS topic.
    • parameters
      • use_compressed_image : Whether the video data retrieved from the camera is MJPG or an uncompressed format such as YUYV.
      • device_name : Device name used by the OS to recognize the camera device.
      • image_topic : Name of the ROS topic to publish.

Displaying Video

Use rviz2 to display video. Start rviz2, then add an Image panel from the Add button at the lower left. Select the video topic name, then adjust QoS by setting Reliability to Best Effort.

However, the video topic type must be sensor_msgs/msg/Image. In other words, the image must be uncompressed. To display the contents of an MJPG or H.264 video topic, decompress it with another node and display the decompressed video topic in rviz2. MJPG can be decompressed with mjpg_decompressor, and H.264 can be decompressed with h264_decompressor.

launch files

  • cx_gb400_ffmpeg.launch.py
    • Retrieves video from the cx_gb400 and sends it over SRT with ffmpeg while also controlling the gimbal. Video is not distributed as a ROS topic.
    • Example execution:
    $ ros2 launch tobas_image_processing cx_gb400_ffmpeg.launch.py server_and_port:=127.0.0.1:8888 # Send video.
    $ ffplay -fflags nobuffer -autoexit "srt://127.0.0.1:8888?mode=listener" # Receive video.
    
  • To republish it as a ROS topic and display it in rviz2, run:
    $ ros2 launch tobas_image_processing cx_gb400_ffmpeg.launch.py server_and_port:=127.0.0.1:8888 # Send video.
    $ ros2 run tobas_image_processing ffmpeg_to_ros_msg_converter
    $ rviz2 # Display the image topic as an image.
    
  • parameters
    • server_and_port : Destination server IP address and port number. Specify it as <ip_address>:<port>.
    • image_scale : Factor by which to reduce the width and height of the transmitted video. Setting this to 2 sends the video at half size.
  • mjpg_compressor_example.launch.py
    • Example that retrieves MJPG video from /dev/video0, publishes it as a ROS topic, compresses it to H.264, and then decompresses it. The decompressed video can be viewed in rviz2.
CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged tobas_image_processing at Robotics Stack Exchange

No version for distro hydro showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

tobas_image_processing package from tobas repo

tobas tobas_camera tobas_camera_msgs tobas_camera_ros_interface tobas_image_processing tobas_command_msgs tobas_command_msgs_adapter tobas_algorithm tobas_common tobas_control tobas_dsp tobas_eigen_conversions tobas_eigen_msgs tobas_eigen_msgs_adapter tobas_eigen_tools tobas_geographic tobas_ic_drivers tobas_ic_drivers_ros tobas_kdl tobas_kdl_conversions tobas_kdl_msgs tobas_kdl_msgs_adapter tobas_kdl_parser tobas_linux tobas_math tobas_nlp tobas_path_tools tobas_quadprog tobas_ros2_tools tobas_std_msgs tobas_std_msgs_adapter tobas_std_tools tobas_string_tools tobas_time_tools tobas_trajectory_generation tobas_urdf tobas_xml_tools tobas_yaml_tools tobas_components_rt tobas_config_servers tobas_connection_monitor tobas_constants tobas_controllers tobas_fixed_wing_controller tobas_nonplanar_multi_controller tobas_planar_multi_controller tobas_random_axis_tilt_multi_controller tobas_y_axis_tilt_multi_controller tobas_core tobas_cui tobas_keyboard tobas_keyboard_teleop tobas_debug_msgs tobas_debug_msgs_adapter tobas_debug_tools tobas_description tobas_disturbance_observer tobas_dparam tobas_dparam_client tobas_dparam_common tobas_dparam_msgs tobas_dparam_server tobas_drone tobas_drone_core tobas_drone_msgs tobas_drone_msgs_adapter tobas_drone_server tobas_drone_tools tobas_dummy_pkg tobas_eskf tobas_failsafe tobas_fake_publishers tobas_fc1xx tobas_fc1xx_core tobas_fc1xx_ros tobas_fc1xx_test tobas_fc2xx tobas_fc2xx_core tobas_fc2xx_ros tobas_fc2xx_test tobas_hardware tobas_hardware_common tobas_joint_states_bridge tobas_landing_detection tobas_manipulation tobas_mission tobas_mission_execution_mc tobas_mission_items tobas_mission_msgs tobas_mission_msgs_adapter tobas_msgs tobas_msgs_adapter tobas_node tobas_object_avoidance tobas_pose_pid tobas_property tobas_property_client tobas_property_common tobas_property_msgs tobas_property_server tobas_property_tree tobas_rc_teleop tobas_dynamixel tobas_dynamixel_handler tobas_dynamixel_msgs tobas_dynamixel_ros_interface tobas_real tobas_real_common tobas_real_msgs tobas_real_ros tobas_sbus_driver tobas_ros_interface tobas_rosbag_recorder tobas_rotor_anomaly_detection tobas_rotor_controller tobas_tools tobas_topic_throttle tobas_tree_server tobas_version tobas_vibration_filter tobas_wind_model tobas_code_style tobas_cpp_code_style_example tobas_examples tobas_examples_cpp tobas_examples_py tobas_external tobas_inja_vendor tobas_rapidcsv_vendor tobas_actuator_test tobas_bootmedia_config tobas_colcon_cpp tobas_control_system tobas_crypt tobas_cyclonedds_config tobas_flight_log_gui tobas_gamepad tobas_gamepad_core tobas_gamepad_ros tobas_gazebo tobas_gazebo_common tobas_gazebo_conversions tobas_gazebo_gui_plugins tobas_gazebo_msgs tobas_gazebo_ros tobas_gazebo_sim tobas_gazebo_system_plugins tobas_gazebo_tools tobas_gcs tobas_git tobas_gui tobas_gui_common tobas_parameter_tuning tobas_qt_tools tobas_qwt_wrapper tobas_rqt_bridge tobas_rviz_plugin tobas_rviz_wrapper tobas_sensor_calibration tobas_setup_assistant tobas_simulation_gui tobas_ssh tobas_ssh_authkey tobas_ssh_client tobas_ssh_msgs tobas_ssh_server tobas_tile_proxy tobas_uadf tobas_udev tobas_urdf_builder tobas_urdf_builder_plugin tobas_visualization_msgs tobas_wpa_supplicant

ROS Distro
jazzy

Package Summary

Version 2.16.0
License GPL-3.0-or-later
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/TobasFlightControl/tobas.git
VCS Type git
VCS Version jazzy
Last Updated 2026-08-11
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS 2 nodes for video capture, image compression, decompression, conversion, and display.

Maintainers

  • Masayoshi Dohi

Authors

No additional authors.

tobas_image_processing

nodes

  • compressed_image_viewer
    • Displays MJPG video received from a ROS topic.
    • parameters
      • compressed_image_topic : Name of the ROS topic to receive and display.
  • cx_gb400_publisher
    • Operates the cx_gb400.
    • Subscribes to the aircraft attitude and sends it to the camera.
    • Subscribes to the target attitude for the camera gimbal and sends it to the camera.
    • Publishes captured video to a ROS topic when disable_video_streaming = false.
    • parameters
      • device_name : Device name used by the OS to recognize the cx_gb400.
      • disable_video_streaming : Whether this node retrieves video from the camera. Set this to true, for example, when using ffmpeg to send video through a non-ROS transport.
      • image_topic : Name of the ROS topic where this node publishes video.
      • FPS : Frames per second. Specifies the operating frequency of this node, which effectively corresponds to the camera FPS.
  • ffmpeg_to_ros_msg_converter
    • Receives video sent by ffmpeg or another non-ROS transport and republishes it as a ROS topic.
    • parameters
      • ros_image_topic : Topic name used when republishing.
      • protocol : Video transport protocol to receive.
      • port_uri : Port used to receive video.
      • output_msg_encoding : Encoding of the video when republishing.
      • frame_id : frame_id of the ROS video topic when republishing.
      • FPS : Frames per second of the incoming video.
  • h264_decompressor
    • Subscribes to H.264-compressed video as ffmpeg_image_transport_msgs/msg/FFMPEGPacket, decompresses it, and publishes it.
    • parameters
      • h264_topic : Topic name for H.264-compressed video data.
      • decoded_topic : Topic name for decompressed video data.
  • mjpg_decompressor
    • Subscribes to images of type sensor_msgs::msg::CompressedImage (equivalent to MJPG), decompresses them, and publishes them as sensor_msgs::msg::Image.
    • parameters
      • mjpg_topic : Topic name for MJPG-compressed video data.
      • decoded_topic : Topic name for decompressed video data.
  • mjpg_compressor
    • Subscribes to images of type sensor_msgs::msg::CompressedImage (equivalent to MJPG), compresses them, and publishes them as MJPG or H.264 video.
    • parameters
      • mjpg_topic : Topic name for the MJPG input to be compressed.
      • resized_topic : Topic name after compression.
      • encoding : Encoding of the compressed video: MJPG or H.264.
      • resize_rate : Ratio used to reduce image width and height before compression when further compression is desired.
  • video_dev_publisher
    • Retrieves video data from the camera and publishes it as a ROS topic.
    • parameters
      • use_compressed_image : Whether the video data retrieved from the camera is MJPG or an uncompressed format such as YUYV.
      • device_name : Device name used by the OS to recognize the camera device.
      • image_topic : Name of the ROS topic to publish.

Displaying Video

Use rviz2 to display video. Start rviz2, then add an Image panel from the Add button at the lower left. Select the video topic name, then adjust QoS by setting Reliability to Best Effort.

However, the video topic type must be sensor_msgs/msg/Image. In other words, the image must be uncompressed. To display the contents of an MJPG or H.264 video topic, decompress it with another node and display the decompressed video topic in rviz2. MJPG can be decompressed with mjpg_decompressor, and H.264 can be decompressed with h264_decompressor.

launch files

  • cx_gb400_ffmpeg.launch.py
    • Retrieves video from the cx_gb400 and sends it over SRT with ffmpeg while also controlling the gimbal. Video is not distributed as a ROS topic.
    • Example execution:
    $ ros2 launch tobas_image_processing cx_gb400_ffmpeg.launch.py server_and_port:=127.0.0.1:8888 # Send video.
    $ ffplay -fflags nobuffer -autoexit "srt://127.0.0.1:8888?mode=listener" # Receive video.
    
  • To republish it as a ROS topic and display it in rviz2, run:
    $ ros2 launch tobas_image_processing cx_gb400_ffmpeg.launch.py server_and_port:=127.0.0.1:8888 # Send video.
    $ ros2 run tobas_image_processing ffmpeg_to_ros_msg_converter
    $ rviz2 # Display the image topic as an image.
    
  • parameters
    • server_and_port : Destination server IP address and port number. Specify it as <ip_address>:<port>.
    • image_scale : Factor by which to reduce the width and height of the transmitted video. Setting this to 2 sends the video at half size.
  • mjpg_compressor_example.launch.py
    • Example that retrieves MJPG video from /dev/video0, publishes it as a ROS topic, compresses it to H.264, and then decompresses it. The decompressed video can be viewed in rviz2.
CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged tobas_image_processing at Robotics Stack Exchange

No version for distro kinetic showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

tobas_image_processing package from tobas repo

tobas tobas_camera tobas_camera_msgs tobas_camera_ros_interface tobas_image_processing tobas_command_msgs tobas_command_msgs_adapter tobas_algorithm tobas_common tobas_control tobas_dsp tobas_eigen_conversions tobas_eigen_msgs tobas_eigen_msgs_adapter tobas_eigen_tools tobas_geographic tobas_ic_drivers tobas_ic_drivers_ros tobas_kdl tobas_kdl_conversions tobas_kdl_msgs tobas_kdl_msgs_adapter tobas_kdl_parser tobas_linux tobas_math tobas_nlp tobas_path_tools tobas_quadprog tobas_ros2_tools tobas_std_msgs tobas_std_msgs_adapter tobas_std_tools tobas_string_tools tobas_time_tools tobas_trajectory_generation tobas_urdf tobas_xml_tools tobas_yaml_tools tobas_components_rt tobas_config_servers tobas_connection_monitor tobas_constants tobas_controllers tobas_fixed_wing_controller tobas_nonplanar_multi_controller tobas_planar_multi_controller tobas_random_axis_tilt_multi_controller tobas_y_axis_tilt_multi_controller tobas_core tobas_cui tobas_keyboard tobas_keyboard_teleop tobas_debug_msgs tobas_debug_msgs_adapter tobas_debug_tools tobas_description tobas_disturbance_observer tobas_dparam tobas_dparam_client tobas_dparam_common tobas_dparam_msgs tobas_dparam_server tobas_drone tobas_drone_core tobas_drone_msgs tobas_drone_msgs_adapter tobas_drone_server tobas_drone_tools tobas_dummy_pkg tobas_eskf tobas_failsafe tobas_fake_publishers tobas_fc1xx tobas_fc1xx_core tobas_fc1xx_ros tobas_fc1xx_test tobas_fc2xx tobas_fc2xx_core tobas_fc2xx_ros tobas_fc2xx_test tobas_hardware tobas_hardware_common tobas_joint_states_bridge tobas_landing_detection tobas_manipulation tobas_mission tobas_mission_execution_mc tobas_mission_items tobas_mission_msgs tobas_mission_msgs_adapter tobas_msgs tobas_msgs_adapter tobas_node tobas_object_avoidance tobas_pose_pid tobas_property tobas_property_client tobas_property_common tobas_property_msgs tobas_property_server tobas_property_tree tobas_rc_teleop tobas_dynamixel tobas_dynamixel_handler tobas_dynamixel_msgs tobas_dynamixel_ros_interface tobas_real tobas_real_common tobas_real_msgs tobas_real_ros tobas_sbus_driver tobas_ros_interface tobas_rosbag_recorder tobas_rotor_anomaly_detection tobas_rotor_controller tobas_tools tobas_topic_throttle tobas_tree_server tobas_version tobas_vibration_filter tobas_wind_model tobas_code_style tobas_cpp_code_style_example tobas_examples tobas_examples_cpp tobas_examples_py tobas_external tobas_inja_vendor tobas_rapidcsv_vendor tobas_actuator_test tobas_bootmedia_config tobas_colcon_cpp tobas_control_system tobas_crypt tobas_cyclonedds_config tobas_flight_log_gui tobas_gamepad tobas_gamepad_core tobas_gamepad_ros tobas_gazebo tobas_gazebo_common tobas_gazebo_conversions tobas_gazebo_gui_plugins tobas_gazebo_msgs tobas_gazebo_ros tobas_gazebo_sim tobas_gazebo_system_plugins tobas_gazebo_tools tobas_gcs tobas_git tobas_gui tobas_gui_common tobas_parameter_tuning tobas_qt_tools tobas_qwt_wrapper tobas_rqt_bridge tobas_rviz_plugin tobas_rviz_wrapper tobas_sensor_calibration tobas_setup_assistant tobas_simulation_gui tobas_ssh tobas_ssh_authkey tobas_ssh_client tobas_ssh_msgs tobas_ssh_server tobas_tile_proxy tobas_uadf tobas_udev tobas_urdf_builder tobas_urdf_builder_plugin tobas_visualization_msgs tobas_wpa_supplicant

ROS Distro
jazzy

Package Summary

Version 2.16.0
License GPL-3.0-or-later
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/TobasFlightControl/tobas.git
VCS Type git
VCS Version jazzy
Last Updated 2026-08-11
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS 2 nodes for video capture, image compression, decompression, conversion, and display.

Maintainers

  • Masayoshi Dohi

Authors

No additional authors.

tobas_image_processing

nodes

  • compressed_image_viewer
    • Displays MJPG video received from a ROS topic.
    • parameters
      • compressed_image_topic : Name of the ROS topic to receive and display.
  • cx_gb400_publisher
    • Operates the cx_gb400.
    • Subscribes to the aircraft attitude and sends it to the camera.
    • Subscribes to the target attitude for the camera gimbal and sends it to the camera.
    • Publishes captured video to a ROS topic when disable_video_streaming = false.
    • parameters
      • device_name : Device name used by the OS to recognize the cx_gb400.
      • disable_video_streaming : Whether this node retrieves video from the camera. Set this to true, for example, when using ffmpeg to send video through a non-ROS transport.
      • image_topic : Name of the ROS topic where this node publishes video.
      • FPS : Frames per second. Specifies the operating frequency of this node, which effectively corresponds to the camera FPS.
  • ffmpeg_to_ros_msg_converter
    • Receives video sent by ffmpeg or another non-ROS transport and republishes it as a ROS topic.
    • parameters
      • ros_image_topic : Topic name used when republishing.
      • protocol : Video transport protocol to receive.
      • port_uri : Port used to receive video.
      • output_msg_encoding : Encoding of the video when republishing.
      • frame_id : frame_id of the ROS video topic when republishing.
      • FPS : Frames per second of the incoming video.
  • h264_decompressor
    • Subscribes to H.264-compressed video as ffmpeg_image_transport_msgs/msg/FFMPEGPacket, decompresses it, and publishes it.
    • parameters
      • h264_topic : Topic name for H.264-compressed video data.
      • decoded_topic : Topic name for decompressed video data.
  • mjpg_decompressor
    • Subscribes to images of type sensor_msgs::msg::CompressedImage (equivalent to MJPG), decompresses them, and publishes them as sensor_msgs::msg::Image.
    • parameters
      • mjpg_topic : Topic name for MJPG-compressed video data.
      • decoded_topic : Topic name for decompressed video data.
  • mjpg_compressor
    • Subscribes to images of type sensor_msgs::msg::CompressedImage (equivalent to MJPG), compresses them, and publishes them as MJPG or H.264 video.
    • parameters
      • mjpg_topic : Topic name for the MJPG input to be compressed.
      • resized_topic : Topic name after compression.
      • encoding : Encoding of the compressed video: MJPG or H.264.
      • resize_rate : Ratio used to reduce image width and height before compression when further compression is desired.
  • video_dev_publisher
    • Retrieves video data from the camera and publishes it as a ROS topic.
    • parameters
      • use_compressed_image : Whether the video data retrieved from the camera is MJPG or an uncompressed format such as YUYV.
      • device_name : Device name used by the OS to recognize the camera device.
      • image_topic : Name of the ROS topic to publish.

Displaying Video

Use rviz2 to display video. Start rviz2, then add an Image panel from the Add button at the lower left. Select the video topic name, then adjust QoS by setting Reliability to Best Effort.

However, the video topic type must be sensor_msgs/msg/Image. In other words, the image must be uncompressed. To display the contents of an MJPG or H.264 video topic, decompress it with another node and display the decompressed video topic in rviz2. MJPG can be decompressed with mjpg_decompressor, and H.264 can be decompressed with h264_decompressor.

launch files

  • cx_gb400_ffmpeg.launch.py
    • Retrieves video from the cx_gb400 and sends it over SRT with ffmpeg while also controlling the gimbal. Video is not distributed as a ROS topic.
    • Example execution:
    $ ros2 launch tobas_image_processing cx_gb400_ffmpeg.launch.py server_and_port:=127.0.0.1:8888 # Send video.
    $ ffplay -fflags nobuffer -autoexit "srt://127.0.0.1:8888?mode=listener" # Receive video.
    
  • To republish it as a ROS topic and display it in rviz2, run:
    $ ros2 launch tobas_image_processing cx_gb400_ffmpeg.launch.py server_and_port:=127.0.0.1:8888 # Send video.
    $ ros2 run tobas_image_processing ffmpeg_to_ros_msg_converter
    $ rviz2 # Display the image topic as an image.
    
  • parameters
    • server_and_port : Destination server IP address and port number. Specify it as <ip_address>:<port>.
    • image_scale : Factor by which to reduce the width and height of the transmitted video. Setting this to 2 sends the video at half size.
  • mjpg_compressor_example.launch.py
    • Example that retrieves MJPG video from /dev/video0, publishes it as a ROS topic, compresses it to H.264, and then decompresses it. The decompressed video can be viewed in rviz2.
CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged tobas_image_processing at Robotics Stack Exchange

No version for distro melodic showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

tobas_image_processing package from tobas repo

tobas tobas_camera tobas_camera_msgs tobas_camera_ros_interface tobas_image_processing tobas_command_msgs tobas_command_msgs_adapter tobas_algorithm tobas_common tobas_control tobas_dsp tobas_eigen_conversions tobas_eigen_msgs tobas_eigen_msgs_adapter tobas_eigen_tools tobas_geographic tobas_ic_drivers tobas_ic_drivers_ros tobas_kdl tobas_kdl_conversions tobas_kdl_msgs tobas_kdl_msgs_adapter tobas_kdl_parser tobas_linux tobas_math tobas_nlp tobas_path_tools tobas_quadprog tobas_ros2_tools tobas_std_msgs tobas_std_msgs_adapter tobas_std_tools tobas_string_tools tobas_time_tools tobas_trajectory_generation tobas_urdf tobas_xml_tools tobas_yaml_tools tobas_components_rt tobas_config_servers tobas_connection_monitor tobas_constants tobas_controllers tobas_fixed_wing_controller tobas_nonplanar_multi_controller tobas_planar_multi_controller tobas_random_axis_tilt_multi_controller tobas_y_axis_tilt_multi_controller tobas_core tobas_cui tobas_keyboard tobas_keyboard_teleop tobas_debug_msgs tobas_debug_msgs_adapter tobas_debug_tools tobas_description tobas_disturbance_observer tobas_dparam tobas_dparam_client tobas_dparam_common tobas_dparam_msgs tobas_dparam_server tobas_drone tobas_drone_core tobas_drone_msgs tobas_drone_msgs_adapter tobas_drone_server tobas_drone_tools tobas_dummy_pkg tobas_eskf tobas_failsafe tobas_fake_publishers tobas_fc1xx tobas_fc1xx_core tobas_fc1xx_ros tobas_fc1xx_test tobas_fc2xx tobas_fc2xx_core tobas_fc2xx_ros tobas_fc2xx_test tobas_hardware tobas_hardware_common tobas_joint_states_bridge tobas_landing_detection tobas_manipulation tobas_mission tobas_mission_execution_mc tobas_mission_items tobas_mission_msgs tobas_mission_msgs_adapter tobas_msgs tobas_msgs_adapter tobas_node tobas_object_avoidance tobas_pose_pid tobas_property tobas_property_client tobas_property_common tobas_property_msgs tobas_property_server tobas_property_tree tobas_rc_teleop tobas_dynamixel tobas_dynamixel_handler tobas_dynamixel_msgs tobas_dynamixel_ros_interface tobas_real tobas_real_common tobas_real_msgs tobas_real_ros tobas_sbus_driver tobas_ros_interface tobas_rosbag_recorder tobas_rotor_anomaly_detection tobas_rotor_controller tobas_tools tobas_topic_throttle tobas_tree_server tobas_version tobas_vibration_filter tobas_wind_model tobas_code_style tobas_cpp_code_style_example tobas_examples tobas_examples_cpp tobas_examples_py tobas_external tobas_inja_vendor tobas_rapidcsv_vendor tobas_actuator_test tobas_bootmedia_config tobas_colcon_cpp tobas_control_system tobas_crypt tobas_cyclonedds_config tobas_flight_log_gui tobas_gamepad tobas_gamepad_core tobas_gamepad_ros tobas_gazebo tobas_gazebo_common tobas_gazebo_conversions tobas_gazebo_gui_plugins tobas_gazebo_msgs tobas_gazebo_ros tobas_gazebo_sim tobas_gazebo_system_plugins tobas_gazebo_tools tobas_gcs tobas_git tobas_gui tobas_gui_common tobas_parameter_tuning tobas_qt_tools tobas_qwt_wrapper tobas_rqt_bridge tobas_rviz_plugin tobas_rviz_wrapper tobas_sensor_calibration tobas_setup_assistant tobas_simulation_gui tobas_ssh tobas_ssh_authkey tobas_ssh_client tobas_ssh_msgs tobas_ssh_server tobas_tile_proxy tobas_uadf tobas_udev tobas_urdf_builder tobas_urdf_builder_plugin tobas_visualization_msgs tobas_wpa_supplicant

ROS Distro
jazzy

Package Summary

Version 2.16.0
License GPL-3.0-or-later
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/TobasFlightControl/tobas.git
VCS Type git
VCS Version jazzy
Last Updated 2026-08-11
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS 2 nodes for video capture, image compression, decompression, conversion, and display.

Maintainers

  • Masayoshi Dohi

Authors

No additional authors.

tobas_image_processing

nodes

  • compressed_image_viewer
    • Displays MJPG video received from a ROS topic.
    • parameters
      • compressed_image_topic : Name of the ROS topic to receive and display.
  • cx_gb400_publisher
    • Operates the cx_gb400.
    • Subscribes to the aircraft attitude and sends it to the camera.
    • Subscribes to the target attitude for the camera gimbal and sends it to the camera.
    • Publishes captured video to a ROS topic when disable_video_streaming = false.
    • parameters
      • device_name : Device name used by the OS to recognize the cx_gb400.
      • disable_video_streaming : Whether this node retrieves video from the camera. Set this to true, for example, when using ffmpeg to send video through a non-ROS transport.
      • image_topic : Name of the ROS topic where this node publishes video.
      • FPS : Frames per second. Specifies the operating frequency of this node, which effectively corresponds to the camera FPS.
  • ffmpeg_to_ros_msg_converter
    • Receives video sent by ffmpeg or another non-ROS transport and republishes it as a ROS topic.
    • parameters
      • ros_image_topic : Topic name used when republishing.
      • protocol : Video transport protocol to receive.
      • port_uri : Port used to receive video.
      • output_msg_encoding : Encoding of the video when republishing.
      • frame_id : frame_id of the ROS video topic when republishing.
      • FPS : Frames per second of the incoming video.
  • h264_decompressor
    • Subscribes to H.264-compressed video as ffmpeg_image_transport_msgs/msg/FFMPEGPacket, decompresses it, and publishes it.
    • parameters
      • h264_topic : Topic name for H.264-compressed video data.
      • decoded_topic : Topic name for decompressed video data.
  • mjpg_decompressor
    • Subscribes to images of type sensor_msgs::msg::CompressedImage (equivalent to MJPG), decompresses them, and publishes them as sensor_msgs::msg::Image.
    • parameters
      • mjpg_topic : Topic name for MJPG-compressed video data.
      • decoded_topic : Topic name for decompressed video data.
  • mjpg_compressor
    • Subscribes to images of type sensor_msgs::msg::CompressedImage (equivalent to MJPG), compresses them, and publishes them as MJPG or H.264 video.
    • parameters
      • mjpg_topic : Topic name for the MJPG input to be compressed.
      • resized_topic : Topic name after compression.
      • encoding : Encoding of the compressed video: MJPG or H.264.
      • resize_rate : Ratio used to reduce image width and height before compression when further compression is desired.
  • video_dev_publisher
    • Retrieves video data from the camera and publishes it as a ROS topic.
    • parameters
      • use_compressed_image : Whether the video data retrieved from the camera is MJPG or an uncompressed format such as YUYV.
      • device_name : Device name used by the OS to recognize the camera device.
      • image_topic : Name of the ROS topic to publish.

Displaying Video

Use rviz2 to display video. Start rviz2, then add an Image panel from the Add button at the lower left. Select the video topic name, then adjust QoS by setting Reliability to Best Effort.

However, the video topic type must be sensor_msgs/msg/Image. In other words, the image must be uncompressed. To display the contents of an MJPG or H.264 video topic, decompress it with another node and display the decompressed video topic in rviz2. MJPG can be decompressed with mjpg_decompressor, and H.264 can be decompressed with h264_decompressor.

launch files

  • cx_gb400_ffmpeg.launch.py
    • Retrieves video from the cx_gb400 and sends it over SRT with ffmpeg while also controlling the gimbal. Video is not distributed as a ROS topic.
    • Example execution:
    $ ros2 launch tobas_image_processing cx_gb400_ffmpeg.launch.py server_and_port:=127.0.0.1:8888 # Send video.
    $ ffplay -fflags nobuffer -autoexit "srt://127.0.0.1:8888?mode=listener" # Receive video.
    
  • To republish it as a ROS topic and display it in rviz2, run:
    $ ros2 launch tobas_image_processing cx_gb400_ffmpeg.launch.py server_and_port:=127.0.0.1:8888 # Send video.
    $ ros2 run tobas_image_processing ffmpeg_to_ros_msg_converter
    $ rviz2 # Display the image topic as an image.
    
  • parameters
    • server_and_port : Destination server IP address and port number. Specify it as <ip_address>:<port>.
    • image_scale : Factor by which to reduce the width and height of the transmitted video. Setting this to 2 sends the video at half size.
  • mjpg_compressor_example.launch.py
    • Example that retrieves MJPG video from /dev/video0, publishes it as a ROS topic, compresses it to H.264, and then decompresses it. The decompressed video can be viewed in rviz2.
CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged tobas_image_processing at Robotics Stack Exchange

No version for distro noetic showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

tobas_image_processing package from tobas repo

tobas tobas_camera tobas_camera_msgs tobas_camera_ros_interface tobas_image_processing tobas_command_msgs tobas_command_msgs_adapter tobas_algorithm tobas_common tobas_control tobas_dsp tobas_eigen_conversions tobas_eigen_msgs tobas_eigen_msgs_adapter tobas_eigen_tools tobas_geographic tobas_ic_drivers tobas_ic_drivers_ros tobas_kdl tobas_kdl_conversions tobas_kdl_msgs tobas_kdl_msgs_adapter tobas_kdl_parser tobas_linux tobas_math tobas_nlp tobas_path_tools tobas_quadprog tobas_ros2_tools tobas_std_msgs tobas_std_msgs_adapter tobas_std_tools tobas_string_tools tobas_time_tools tobas_trajectory_generation tobas_urdf tobas_xml_tools tobas_yaml_tools tobas_components_rt tobas_config_servers tobas_connection_monitor tobas_constants tobas_controllers tobas_fixed_wing_controller tobas_nonplanar_multi_controller tobas_planar_multi_controller tobas_random_axis_tilt_multi_controller tobas_y_axis_tilt_multi_controller tobas_core tobas_cui tobas_keyboard tobas_keyboard_teleop tobas_debug_msgs tobas_debug_msgs_adapter tobas_debug_tools tobas_description tobas_disturbance_observer tobas_dparam tobas_dparam_client tobas_dparam_common tobas_dparam_msgs tobas_dparam_server tobas_drone tobas_drone_core tobas_drone_msgs tobas_drone_msgs_adapter tobas_drone_server tobas_drone_tools tobas_dummy_pkg tobas_eskf tobas_failsafe tobas_fake_publishers tobas_fc1xx tobas_fc1xx_core tobas_fc1xx_ros tobas_fc1xx_test tobas_fc2xx tobas_fc2xx_core tobas_fc2xx_ros tobas_fc2xx_test tobas_hardware tobas_hardware_common tobas_joint_states_bridge tobas_landing_detection tobas_manipulation tobas_mission tobas_mission_execution_mc tobas_mission_items tobas_mission_msgs tobas_mission_msgs_adapter tobas_msgs tobas_msgs_adapter tobas_node tobas_object_avoidance tobas_pose_pid tobas_property tobas_property_client tobas_property_common tobas_property_msgs tobas_property_server tobas_property_tree tobas_rc_teleop tobas_dynamixel tobas_dynamixel_handler tobas_dynamixel_msgs tobas_dynamixel_ros_interface tobas_real tobas_real_common tobas_real_msgs tobas_real_ros tobas_sbus_driver tobas_ros_interface tobas_rosbag_recorder tobas_rotor_anomaly_detection tobas_rotor_controller tobas_tools tobas_topic_throttle tobas_tree_server tobas_version tobas_vibration_filter tobas_wind_model tobas_code_style tobas_cpp_code_style_example tobas_examples tobas_examples_cpp tobas_examples_py tobas_external tobas_inja_vendor tobas_rapidcsv_vendor tobas_actuator_test tobas_bootmedia_config tobas_colcon_cpp tobas_control_system tobas_crypt tobas_cyclonedds_config tobas_flight_log_gui tobas_gamepad tobas_gamepad_core tobas_gamepad_ros tobas_gazebo tobas_gazebo_common tobas_gazebo_conversions tobas_gazebo_gui_plugins tobas_gazebo_msgs tobas_gazebo_ros tobas_gazebo_sim tobas_gazebo_system_plugins tobas_gazebo_tools tobas_gcs tobas_git tobas_gui tobas_gui_common tobas_parameter_tuning tobas_qt_tools tobas_qwt_wrapper tobas_rqt_bridge tobas_rviz_plugin tobas_rviz_wrapper tobas_sensor_calibration tobas_setup_assistant tobas_simulation_gui tobas_ssh tobas_ssh_authkey tobas_ssh_client tobas_ssh_msgs tobas_ssh_server tobas_tile_proxy tobas_uadf tobas_udev tobas_urdf_builder tobas_urdf_builder_plugin tobas_visualization_msgs tobas_wpa_supplicant

ROS Distro
jazzy

Package Summary

Version 2.16.0
License GPL-3.0-or-later
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/TobasFlightControl/tobas.git
VCS Type git
VCS Version jazzy
Last Updated 2026-08-11
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS 2 nodes for video capture, image compression, decompression, conversion, and display.

Maintainers

  • Masayoshi Dohi

Authors

No additional authors.

tobas_image_processing

nodes

  • compressed_image_viewer
    • Displays MJPG video received from a ROS topic.
    • parameters
      • compressed_image_topic : Name of the ROS topic to receive and display.
  • cx_gb400_publisher
    • Operates the cx_gb400.
    • Subscribes to the aircraft attitude and sends it to the camera.
    • Subscribes to the target attitude for the camera gimbal and sends it to the camera.
    • Publishes captured video to a ROS topic when disable_video_streaming = false.
    • parameters
      • device_name : Device name used by the OS to recognize the cx_gb400.
      • disable_video_streaming : Whether this node retrieves video from the camera. Set this to true, for example, when using ffmpeg to send video through a non-ROS transport.
      • image_topic : Name of the ROS topic where this node publishes video.
      • FPS : Frames per second. Specifies the operating frequency of this node, which effectively corresponds to the camera FPS.
  • ffmpeg_to_ros_msg_converter
    • Receives video sent by ffmpeg or another non-ROS transport and republishes it as a ROS topic.
    • parameters
      • ros_image_topic : Topic name used when republishing.
      • protocol : Video transport protocol to receive.
      • port_uri : Port used to receive video.
      • output_msg_encoding : Encoding of the video when republishing.
      • frame_id : frame_id of the ROS video topic when republishing.
      • FPS : Frames per second of the incoming video.
  • h264_decompressor
    • Subscribes to H.264-compressed video as ffmpeg_image_transport_msgs/msg/FFMPEGPacket, decompresses it, and publishes it.
    • parameters
      • h264_topic : Topic name for H.264-compressed video data.
      • decoded_topic : Topic name for decompressed video data.
  • mjpg_decompressor
    • Subscribes to images of type sensor_msgs::msg::CompressedImage (equivalent to MJPG), decompresses them, and publishes them as sensor_msgs::msg::Image.
    • parameters
      • mjpg_topic : Topic name for MJPG-compressed video data.
      • decoded_topic : Topic name for decompressed video data.
  • mjpg_compressor
    • Subscribes to images of type sensor_msgs::msg::CompressedImage (equivalent to MJPG), compresses them, and publishes them as MJPG or H.264 video.
    • parameters
      • mjpg_topic : Topic name for the MJPG input to be compressed.
      • resized_topic : Topic name after compression.
      • encoding : Encoding of the compressed video: MJPG or H.264.
      • resize_rate : Ratio used to reduce image width and height before compression when further compression is desired.
  • video_dev_publisher
    • Retrieves video data from the camera and publishes it as a ROS topic.
    • parameters
      • use_compressed_image : Whether the video data retrieved from the camera is MJPG or an uncompressed format such as YUYV.
      • device_name : Device name used by the OS to recognize the camera device.
      • image_topic : Name of the ROS topic to publish.

Displaying Video

Use rviz2 to display video. Start rviz2, then add an Image panel from the Add button at the lower left. Select the video topic name, then adjust QoS by setting Reliability to Best Effort.

However, the video topic type must be sensor_msgs/msg/Image. In other words, the image must be uncompressed. To display the contents of an MJPG or H.264 video topic, decompress it with another node and display the decompressed video topic in rviz2. MJPG can be decompressed with mjpg_decompressor, and H.264 can be decompressed with h264_decompressor.

launch files

  • cx_gb400_ffmpeg.launch.py
    • Retrieves video from the cx_gb400 and sends it over SRT with ffmpeg while also controlling the gimbal. Video is not distributed as a ROS topic.
    • Example execution:
    $ ros2 launch tobas_image_processing cx_gb400_ffmpeg.launch.py server_and_port:=127.0.0.1:8888 # Send video.
    $ ffplay -fflags nobuffer -autoexit "srt://127.0.0.1:8888?mode=listener" # Receive video.
    
  • To republish it as a ROS topic and display it in rviz2, run:
    $ ros2 launch tobas_image_processing cx_gb400_ffmpeg.launch.py server_and_port:=127.0.0.1:8888 # Send video.
    $ ros2 run tobas_image_processing ffmpeg_to_ros_msg_converter
    $ rviz2 # Display the image topic as an image.
    
  • parameters
    • server_and_port : Destination server IP address and port number. Specify it as <ip_address>:<port>.
    • image_scale : Factor by which to reduce the width and height of the transmitted video. Setting this to 2 sends the video at half size.
  • mjpg_compressor_example.launch.py
    • Example that retrieves MJPG video from /dev/video0, publishes it as a ROS topic, compresses it to H.264, and then decompresses it. The decompressed video can be viewed in rviz2.
CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged tobas_image_processing at Robotics Stack Exchange