Build, Run, Inspection, and Troubleshooting
Quick checks when media is unfamiliar
Camera
v4l2-ctl --list-devices
ls /dev/video*
v4l2-ctl --device=/dev/video0 --list-formats-ext
ros2 topic info -v /realsense/color/image_raw
Audio input
cat /proc/asound/cards
arecord -l
arecord -L
Example:
audios:
- name: mic1
type: alsa
source: plughw:CARD=Device,DEV=0
channels: 1
Audio output
aplay -l
aplay -L
fuser -v /dev/snd/*
pactl info
pactl list short sinks
Use the sink name from pactl list short sinks as speaker[].source.
Minimal playback test
gst-launch-1.0 -q audiotestsrc num-buffers=100 ! audioconvert ! audioresample ! alsasink device="plughw:CARD=PCH,DEV=0"
gst-launch-1.0 -q audiotestsrc num-buffers=100 ! audioconvert ! audioresample ! pulsesink
Build
cd /home/ubuntu/cobiz/cobiz
source /opt/ros/$ROS_DISTRO/setup.bash
colcon build --symlink-install
source install/setup.bash
Run
It is recommended to run cobiz_bridge_node and manager_node in separate terminals.
Terminal A: cobiz_bridge_node
cd /home/ubuntu/cobiz/cobiz
source /opt/ros/$ROS_DISTRO/setup.bash
source install/setup.bash
ros2 run cobiz_bridge cobiz_bridge_node
Terminal B: manager_node
cd /home/ubuntu/cobiz/cobiz
source /opt/ros/$ROS_DISTRO/setup.bash
source install/setup.bash
ros2 run manager_node manager_node
Recommended startup order
cobiz_bridge_nodemanager_node- plugin nodes
Because manager_node automatically starts child nodes after receiving /device_info, always start cobiz_bridge_node first and only then run manager_node.
Basic behavior checks
Confirm /device_info publication after starting cobiz_bridge_node:
ros2 topic echo /device_info --once
Check the node list after starting manager_node:
ros2 node list
Inspect the Task-state flow:
ros2 node list
ros2 topic info -v /task_state
ros2 topic echo /task_state
Troubleshooting
-
/task_stateis published but the server does not reflect it- check whether
request_manageris running - verify
COBIZ_API_ADDRESSandCOBIZ_API_TOKEN - confirm that
task_idandtask_typeare present
- check whether
-
speaker_node:Failed to set pipeline to PLAYING- check whether the ALSA device is busy:
fuser -v /dev/snd/* - if PulseAudio or PipeWire holds the device, consider
speaker.type: pulse
- check whether the ALSA device is busy:
-
topic_node:visible publishers=1butrx=0- inspect QoS, ROS domain, and environment-variable mismatches