Roboveo is a simple web visualization tool. This visualization tool it is very useful if you are running experiments in systems with limited graphical capabilities but good network support. A prime example of this is running the humanoid simulator inside a docker container. Instead of configuring the container you can just bind a port to the host and get the visualization working.
cd ~/wsr2/src/
git clone https://gitlab.com/arcoslab/roboveo.git
ros2 launch arcos_lab_humanoid_startup arcos-lab-humanoid-startup-sim_humanoid_01.launch.py
ros2 launch roboveo sim_humanoid_01.py
ros2 run roboveo scene_loader --ros-args -r __ns:/sim_humanoid_01 -r /tf:=/sim_humanoid_01/tf
Roboveo is listening to the topic robot_descriptions
. If at any point you run a robot_state_publisher
node, this will publish the URDF on that topic, and roboveo will render that robot model. Then roboveo listens to the topic tf
for update on the pose of the links to update the rendered view.
Roboveo also provides the add_object
service to add arbitrary objects to the scene, this is how we can load the 3D model of the lab, for example. The best way to explain how it works is probably to just attach the service definition file, so here you go:
# Name ID of the object to add. If TF is activated, this will also
# be used as the frame name
string name
# Filename of the mesh to load. This should not be relavice paths,
# complete paths are advised
string mesh_filename
# Pose at which the object should be added
geometry_msgs/Pose pose
# Scale of the mesh
geometry_msgs/Vector3 scale
# If True roboveo will search for updates of the object's pose
# in TF
bool listen_tf
# Only used if 'listen_tf' is TRUE, roboveo will search for the
# transform between frame 'name' and frame 'root_frame'.
string root_frame
---
# True if no errors
bool successful
# Only useful if it was not successful, this will send a reason why
# it failed
string reason