This workspace is the minimal version of the project needed to run:
ros2 launch receive_theta receive_theta_sensorpod.launchand publish:
/camera/image/camera/image/compressed
Only the receive_theta ROS 2 package and the third-party camera dependencies needed by that package are kept.
src/
receive_theta/
CMakeLists.txt
package.xml
launch/receive_theta_sensorpod.launch
src/receiveTheta.cpp
dependency/
libuvc-theta/
gstthetauvc/
Install the GStreamer runtime and development packages:
sudo apt update
sudo apt install \
libgstreamer1.0-0 \
libgstreamer-plugins-base1.0-dev \
gstreamer1.0-plugins-base \
gstreamer1.0-plugins-good \
gstreamer1.0-plugins-bad \
gstreamer1.0-plugins-ugly \
gstreamer1.0-libav \
gstreamer1.0-tools \
gstreamer1.0-x \
gstreamer1.0-alsa \
gstreamer1.0-gl \
gstreamer1.0-gtk3 \
gstreamer1.0-qt5 \
gstreamer1.0-pulseaudioInstall the ROS and OpenCV dependencies used by receive_theta:
sudo apt install \
ros-jazzy-cv-bridge \
ros-jazzy-rclcpp \
ros-jazzy-sensor-msgs \
ros-jazzy-std-msgs \
libopencv-devBuild and install libuvc-theta:
cd src/receive_theta/dependency/libuvc-theta
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j
sudo cmake --install build
sudo ldconfigBuild and install the thetauvcsrc GStreamer plugin:
cd src/receive_theta/dependency/gstthetauvc/thetauvc
make
sudo make installVerify the plugin is visible:
gst-inspect-1.0 thetauvcsrcFrom the workspace root:
source /opt/ros/jazzy/setup.bash
colcon build --packages-select receive_theta --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
source install/setup.bash- Plug the RICOH THETA camera into USB.
- Power it on.
- Switch it into live video mode.
- Launch the node:
ros2 launch receive_theta receive_theta_sensorpod.launchros2 topic list | grep /camera/image
ros2 topic hz /camera/image
ros2 topic echo /camera/image/compressed --onceshowImage:=trueopens a preview window:
ros2 launch receive_theta receive_theta_sensorpod.launch showImage:=true- The node subscribes to
/imu/datafor timestamp alignment. If there is no IMU input, image publishing still works and only timestamp compensation becomes less accurate.