WPI-AIM / ambf

Asynchronous Multi-Body Framework
158 stars 64 forks source link

set camera to publishing image, cannot find corresponding ros topic #155

Closed mr3albert closed 2 years ago

mr3albert commented 2 years ago

As the title states, I have uncommented publishing image: True in world.yaml, but I do not see the /cameras/camera1/ImageData/* in my list of rostopics.

What I see when I run the ambf simulator.

(base)  mr3albert@CarbonPanda  ~/Documents/UCSD/SRIP_UCSD  ~/ambf_simulator --launch_file surgical_robotics_challenge/launch.yaml -l 0,1,3,4,14,15 -p 120 -t 1 --override_max_comm_freq 120
INFO ! OVERRIDING MAX COMMUNICATION FREQUENCY TO: 120

____________________________________________________________

ASYNCHRONOUS MULTI-BODY FRAMEWORK SIMULATOR (AMBF Simulator)

        (http://practicepoint.wpi.edu)
          (Copyright 2019-2021)
____________________________________________________________

STARTUP COMMAND LINE OPTIONS: 

ambf_simulator Command Line Options:
  -h [ --help ]                        Show help
  -n [ --ndevs ] arg (=0)              Number of Haptic Devices to Load
  -i [ --load_devices ] arg            Index number of devices to load which is
                                       specified in input_device.yaml
  -e [ --enableforces ] arg (=0)       Enable Force Feedback on Haptic Devices
  -p [ --phx_frequency ] arg (=1000)   Physics Update Frequency (default: 1000 
                                       Hz)
  -d [ --htx_frequency ] arg (=1000)   Haptics Update Frequency (default: 1000 
                                       Hz)
  -t [ --fixed_phx_timestep ] arg (=0) Use Fixed Time-Step for Physics 
                                       (default: False)
  -f [ --fixed_htx_timestep ] arg (=0) Use Fixed Time-Step for Haptics 
                                       (default: False)
  --override_max_comm_freq arg         Override the maximum publishing 
                                       frequency for all afObjects (default: 
                                       1000 Hz)
  --override_min_comm_freq arg         Override the minimum publishing 
                                       frequency for all afObjects (default: 50
                                       Hz)
  -g [ --show_gui ] arg (=1)           Show GUI
  --ns arg                             Override the default (or specified in 
                                       ADF) world namespace
  -s [ --sim_speed_factor ] arg (=1)   Override the speed of "NON REAL-TIME" 
                                       simulation by a specified factor 
                                       (Default 1.0)
  --plugins arg                        Simulator plugins to load, .e.g. 
                                       --plugins <plugin1_filepath>, 
                                       <plugin2_filepath> loads plugin1 and 
                                       plugin2 simualtor plugin
  --launch_file arg                    Launch file path to load (default: 
                                       <ROOT_PATH>/ambf_models/descriptions/lau
                                       nch.yaml
  -a [ --load_multibody_files ] arg    Description Filenames of Multi-Body(ies)
                                       to Launch, .e.g. -a <path>/test.yaml, 
                                       <another_path>/test2.yaml will load 
                                       multibodies test.yaml and test2.yaml if 
                                       they are valid files
  -l [ --load_multibodies ] arg        Index of Multi-Body(ies) to Launch, 
                                       .e.g. -l 1,2,3 will load multibodies at 
                                       indexes 1,2,3. See launch.yaml file

------------------------------------------------------------

INFO! USING SIMULATION SPEED FACTOR OF: 1
WARNING! For File "surgical_robotics_challenge/launch.yaml", ADF version not defined thus assuming VERSION_1_0
WARNING! For File "surgical_robotics_challenge/ADF/world/world_stereo.yaml", ADF version not defined thus assuming VERSION_1_0
WARNING! For File "surgical_robotics_challenge/ADF/input_devices/input_devices.yaml", ADF version not defined thus assuming VERSION_1_0
INFO! INITIALIZING ROS NODE HANDLE
INFO! Thread Joined: Plane
INFO! Thread Joined: light2
INFO! CAMERA "cameraL" MONITOR NUMBER "1" IS NOT IN RANGE OF AVAILABLE MONITORS "1", USING DEFAULT
INFO! Thread Joined: cameraL
INFO! CAMERA "cameraR" MONITOR NUMBER "2" IS NOT IN RANGE OF AVAILABLE MONITORS "1", USING DEFAULT
INFO! Thread Joined: cameraR
WARNING! MULTIPLE OBJECTS WITH SUB-STRING: "BODY CameraFrame" FOUND. PLEASE SPECIFY FURTHER
WARNING! MULTIPLE OBJECTS WITH SUB-STRING: "BODY CameraFrame" FOUND. PLEASE SPECIFY FURTHER
WARNING! MULTIPLE OBJECTS WITH SUB-STRING: "BODY CameraFrame" FOUND. PLEASE SPECIFY FURTHER
INFO! Thread Joined: World
WARNING! For File "surgical_robotics_challenge/ADF/psm1.yaml", ADF version not defined thus assuming VERSION_1_0
WARNING! For File "surgical_robotics_challenge/ADF/sensors_actuators_psm1.yaml", ADF version not defined thus assuming VERSION_1_0
WARNING! For File "surgical_robotics_challenge/ADF/psm2.yaml", ADF version not defined thus assuming VERSION_1_0
WARNING! For File "surgical_robotics_challenge/ADF/sensors_actuators_psm2.yaml", ADF version not defined thus assuming VERSION_1_0
WARNING! For File "surgical_robotics_challenge/ADF/ghosts.yaml", ADF version not defined thus assuming VERSION_1_0
WARNING! For File "surgical_robotics_challenge/ADF/phantom_with_thread.yaml", ADF version not defined thus assuming VERSION_1_0
ERROR! COLLISION MESH TYPE "" NOT UNDERSTOOD 
INFO! Thread Joined: baselink
INFO! Thread Joined: toolyawlink
ERROR! COMMUNICATION TYPE FOR OBJECT NAMED baselink-yawlink OF TYPE: JOINT NOT IMPLEMENTED YET
ERROR! COMMUNICATION TYPE FOR OBJECT NAMED yawlink-pitchbacklink OF TYPE: JOINT NOT IMPLEMENTED YET
ERROR! COMMUNICATION TYPE FOR OBJECT NAMED pitchendlink-maininsertionlink OF TYPE: JOINT NOT IMPLEMENTED YET
ERROR! COMMUNICATION TYPE FOR OBJECT NAMED maininsertionlink-toolrolllink OF TYPE: JOINT NOT IMPLEMENTED YET
ERROR! COMMUNICATION TYPE FOR OBJECT NAMED toolrolllink-toolpitchlink OF TYPE: JOINT NOT IMPLEMENTED YET
ERROR! COMMUNICATION TYPE FOR OBJECT NAMED toolpitchlink-toolyawlink OF TYPE: JOINT NOT IMPLEMENTED YET
ERROR! COMMUNICATION TYPE FOR OBJECT NAMED toolyawlink-toolgripper1link OF TYPE: JOINT NOT IMPLEMENTED YET
ERROR! COMMUNICATION TYPE FOR OBJECT NAMED toolyawlink-toolgripper2link OF TYPE: JOINT NOT IMPLEMENTED YET
INFO! Thread Joined: Sensor0
INFO! Thread Joined: Actuator0
INFO! Thread Joined: baselink
INFO! Thread Joined: toolyawlink
ERROR! COMMUNICATION TYPE FOR OBJECT NAMED baselink-yawlink OF TYPE: JOINT NOT IMPLEMENTED YET
ERROR! COMMUNICATION TYPE FOR OBJECT NAMED yawlink-pitchbacklink OF TYPE: JOINT NOT IMPLEMENTED YET
ERROR! COMMUNICATION TYPE FOR OBJECT NAMED pitchendlink-maininsertionlink OF TYPE: JOINT NOT IMPLEMENTED YET
ERROR! COMMUNICATION TYPE FOR OBJECT NAMED maininsertionlink-toolrolllink OF TYPE: JOINT NOT IMPLEMENTED YET
ERROR! COMMUNICATION TYPE FOR OBJECT NAMED toolrolllink-toolpitchlink OF TYPE: JOINT NOT IMPLEMENTED YET
ERROR! COMMUNICATION TYPE FOR OBJECT NAMED toolpitchlink-toolyawlink OF TYPE: JOINT NOT IMPLEMENTED YET
ERROR! COMMUNICATION TYPE FOR OBJECT NAMED toolyawlink-toolgripper1link OF TYPE: JOINT NOT IMPLEMENTED YET
ERROR! COMMUNICATION TYPE FOR OBJECT NAMED toolyawlink-toolgripper2link OF TYPE: JOINT NOT IMPLEMENTED YET
INFO! Thread Joined: Sensor0
INFO! Thread Joined: Actuator0
WARNING! MULTIPLE OBJECTS WITH SUB-STRING: "BODY Entry1" FOUND. PLEASE SPECIFY FURTHER
WARNING! MULTIPLE OBJECTS WITH SUB-STRING: "BODY Entry2" FOUND. PLEASE SPECIFY FURTHER
WARNING! MULTIPLE OBJECTS WITH SUB-STRING: "BODY Entry3" FOUND. PLEASE SPECIFY FURTHER
WARNING! MULTIPLE OBJECTS WITH SUB-STRING: "BODY Entry4" FOUND. PLEASE SPECIFY FURTHER
WARNING! MULTIPLE OBJECTS WITH SUB-STRING: "BODY Exit1" FOUND. PLEASE SPECIFY FURTHER
WARNING! MULTIPLE OBJECTS WITH SUB-STRING: "BODY Exit2" FOUND. PLEASE SPECIFY FURTHER
WARNING! MULTIPLE OBJECTS WITH SUB-STRING: "BODY Exit3" FOUND. PLEASE SPECIFY FURTHER
WARNING! MULTIPLE OBJECTS WITH SUB-STRING: "BODY Exit4" FOUND. PLEASE SPECIFY FURTHER
INFO! Thread Joined: BlackGround
ERROR! CameraFrame COLLISION TYPE NOT UNDERSTOOD
INFO! Thread Joined: CameraFrame
INFO! Thread Joined: Ledge
INFO! Thread Joined: Needle
INFO! Thread Joined: Phantom
INFO! Thread Joined: Barrier
INFO! Thread Joined: Entry1
INFO! Thread Joined: Entry2
INFO! Thread Joined: Entry3
INFO! Thread Joined: Entry4
INFO! Thread Joined: Exit1
INFO! Thread Joined: Exit2
INFO! Thread Joined: Exit3
INFO! Thread Joined: Exit4
ERROR! COMMUNICATION TYPE FOR OBJECT NAMED Phantom-Entry2 OF TYPE: JOINT NOT IMPLEMENTED YET
ERROR! COMMUNICATION TYPE FOR OBJECT NAMED Phantom-Exit2 OF TYPE: JOINT NOT IMPLEMENTED YET
ERROR! COMMUNICATION TYPE FOR OBJECT NAMED Phantom-Exit1 OF TYPE: JOINT NOT IMPLEMENTED YET
ERROR! COMMUNICATION TYPE FOR OBJECT NAMED Phantom-Exit3 OF TYPE: JOINT NOT IMPLEMENTED YET
ERROR! COMMUNICATION TYPE FOR OBJECT NAMED Phantom-Exit4 OF TYPE: JOINT NOT IMPLEMENTED YET
ERROR! COMMUNICATION TYPE FOR OBJECT NAMED Phantom-Entry1 OF TYPE: JOINT NOT IMPLEMENTED YET
ERROR! COMMUNICATION TYPE FOR OBJECT NAMED Phantom-Entry3 OF TYPE: JOINT NOT IMPLEMENTED YET
ERROR! COMMUNICATION TYPE FOR OBJECT NAMED Phantom-Entry4 OF TYPE: JOINT NOT IMPLEMENTED YET
WARNING! Required parent name of /ambf/env/lights/light2 set as BODY CameraFrame. Parenting to closest match /ambf/env/BODY CameraFrame
WARNING! Required parent name of /ambf/env/cameras/cameraL set as BODY CameraFrame. Parenting to closest match /ambf/env/BODY CameraFrame
WARNING! Required parent name of /ambf/env/cameras/cameraR set as BODY CameraFrame. Parenting to closest match /ambf/env/BODY CameraFrame
WARNING! Required parent name of /ambf/env/psm/ghostEntry1 set as BODY Entry1. Parenting to closest match /ambf/env/BODY Entry1
WARNING! Required parent name of /ambf/env/psm/ghostEntry2 set as BODY Entry2. Parenting to closest match /ambf/env/BODY Entry2
WARNING! Required parent name of /ambf/env/psm/ghostEntry3 set as BODY Entry3. Parenting to closest match /ambf/env/BODY Entry3
WARNING! Required parent name of /ambf/env/psm/ghostEntry4 set as BODY Entry4. Parenting to closest match /ambf/env/BODY Entry4
WARNING! Required parent name of /ambf/env/psm/ghostExit1 set as BODY Exit1. Parenting to closest match /ambf/env/BODY Exit1
WARNING! Required parent name of /ambf/env/psm/ghostExit2 set as BODY Exit2. Parenting to closest match /ambf/env/BODY Exit2
WARNING! Required parent name of /ambf/env/psm/ghostExit3 set as BODY Exit3. Parenting to closest match /ambf/env/BODY Exit3
WARNING! Required parent name of /ambf/env/psm/ghostExit4 set as BODY Exit4. Parenting to closest match /ambf/env/BODY Exit4

When I run rostopic list while the simulator is active.

(base)  mr3albert@CarbonPanda  ~/ambf/ambf_models/descriptions/world   ambf-2.0 ±  rostopic list
/ambf/env/Barrier/Command
/ambf/env/Barrier/State
/ambf/env/BlackGround/Command
/ambf/env/BlackGround/State
/ambf/env/CameraFrame/Command
/ambf/env/CameraFrame/State
/ambf/env/Entry1/Command
/ambf/env/Entry1/State
/ambf/env/Entry2/Command
/ambf/env/Entry2/State
/ambf/env/Entry3/Command
/ambf/env/Entry3/State
/ambf/env/Entry4/Command
/ambf/env/Entry4/State
/ambf/env/Exit1/Command
/ambf/env/Exit1/State
/ambf/env/Exit2/Command
/ambf/env/Exit2/State
/ambf/env/Exit3/Command
/ambf/env/Exit3/State
/ambf/env/Exit4/Command
/ambf/env/Exit4/State
/ambf/env/Ledge/Command
/ambf/env/Ledge/State
/ambf/env/Needle/Command
/ambf/env/Needle/State
/ambf/env/Phantom/Command
/ambf/env/Phantom/State
/ambf/env/Plane/Command
/ambf/env/Plane/State
/ambf/env/World/Command
/ambf/env/World/State
/ambf/env/World/point_cloud
/ambf/env/World/point_cloud/radius
/ambf/env/cameras/cameraL/Command
/ambf/env/cameras/cameraL/State
/ambf/env/cameras/cameraR/Command
/ambf/env/cameras/cameraR/State
/ambf/env/lights/light2/Command
/ambf/env/lights/light2/State
/ambf/env/psm1/Actuator0/Command
/ambf/env/psm1/Actuator0/State
/ambf/env/psm1/Sensor0/Command
/ambf/env/psm1/Sensor0/State
/ambf/env/psm1/baselink/Command
/ambf/env/psm1/baselink/State
/ambf/env/psm1/toolyawlink/Command
/ambf/env/psm1/toolyawlink/State
/ambf/env/psm2/Actuator0/Command
/ambf/env/psm2/Actuator0/State
/ambf/env/psm2/Sensor0/Command
/ambf/env/psm2/Sensor0/State
/ambf/env/psm2/baselink/Command
/ambf/env/psm2/baselink/State
/ambf/env/psm2/toolyawlink/Command
/ambf/env/psm2/toolyawlink/State
/rosout
/rosout_agg
adnanmunawar commented 2 years ago

Prior to building AMBF, did you have the cv-bridge and image-transport packages installed as documented here? https://github.com/WPI-AIM/ambf/wiki/Camera-feed-and-depth-camera

mr3albert commented 2 years ago

Yes, I have installed cv-bridge and image-transport.

(base)  ✘ mr3albert@CarbonPanda  ~/ambf/ambf_models/descriptions/world   ambf-2.0 ±  sudo apt install ros-noetic-cv-bridge
[sudo] password for mr3albert: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
ros-noetic-cv-bridge is already the newest version (1.16.0-1focal.20211124.025534).
The following packages were automatically installed and are no longer required:
  libassimp-dev libassimp5 libcurl4-openssl-dev libeigen3-dev libfreeimage3 libjxr0 libogre-1.9-dev
  libogre-1.9.0v5 liborocos-kdl-dev libtinyxml-dev libtinyxml2.6.2v5 liburdfdom-dev
  liburdfdom-headers-dev liburdfdom-model liburdfdom-model-state liburdfdom-sensor liburdfdom-world
  libzzip-0-13 ros-noetic-angles ros-noetic-laser-geometry ros-noetic-map-msgs
  ros-noetic-media-export ros-noetic-nav-msgs ros-noetic-resource-retriever
  ros-noetic-rosconsole-bridge ros-noetic-roswtf ros-noetic-tf ros-noetic-turtle-tf ros-noetic-urdf
  ros-noetic-visualization-msgs
Use 'sudo apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
(base)  mr3albert@CarbonPanda  ~/ambf/ambf_models/descriptions/world   ambf-2.0 ±  sudo apt install ros-noetic-image-transport
Reading package lists... Done
Building dependency tree       
Reading state information... Done
ros-noetic-image-transport is already the newest version (1.12.0-1focal.20210922.192223).
The following packages were automatically installed and are no longer required:
  libassimp-dev libassimp5 libcurl4-openssl-dev libeigen3-dev libfreeimage3 libjxr0 libogre-1.9-dev
  libogre-1.9.0v5 liborocos-kdl-dev libtinyxml-dev libtinyxml2.6.2v5 liburdfdom-dev
  liburdfdom-headers-dev liburdfdom-model liburdfdom-model-state liburdfdom-sensor liburdfdom-world
  libzzip-0-13 ros-noetic-angles ros-noetic-laser-geometry ros-noetic-map-msgs
  ros-noetic-media-export ros-noetic-nav-msgs ros-noetic-resource-retriever
  ros-noetic-rosconsole-bridge ros-noetic-roswtf ros-noetic-tf ros-noetic-turtle-tf ros-noetic-urdf
  ros-noetic-visualization-msgs
Use 'sudo apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
adnanmunawar commented 2 years ago

Ok great. Quick question, which world file are you setting the publish image: True flag in? The world.yaml file from the surgical robotics challenge or the world.yaml file from the main AMBF repo?

mr3albert commented 2 years ago

It's the world.yaml in the main AMBF repo.

'world.yaml' path: /home/mr3albert/ambf/ambf_models/descriptions/world

adnanmunawar commented 2 years ago

I see. The publish image flag it set for each camera, and if that camera is loaded, its video is then streamed out. It appears from your console output that you are trying to launch the surgical robotics challenge, which has its own launch_file which defines a different world.yaml. You will need to set the publish image flag for the camera(s) in that world file.

mr3albert commented 2 years ago

I added the publish image flag to the world_stereo.yaml as defined in the launch_file in surgical_robotic_challenge. AND IT WORKED! Thank you so much!