Starting a ROS robot_state_publisher
¶
The following are examples of robots we’ve used to test the Slicer ROS2 module.
Note that we tried to follow the standard ROS approch, i.e. make the URDF description available as a ROS parameter and then launch the usual ROS
robot_state_publisher
node.The
robot_state_publisher
will use the joint state to compute the forward kinematic and broadcast the 3D position of each link to tf2.The Slicer ROS 2 module will then query the 3D positions to display the robot’s links in the correct position.
Sensable Phantom Omni aka Geomagic/3DS Touch¶
We created and used the following package for the Omni: Omni Github Link
This package contains the URDF, STL meshes and a launch file for the robot_state_publisher
.
Make sure you start the Omni nodes (using a couple of terminals) before loading the Slicer ROS 2 module.:
ros2 launch sensable_omni_model omni.launch.py # first terminal
ros2 run sensable_omni_model pretend_omni_joint_state_publisher # second
dVRK PSM¶
todo
Cobot¶
We also tested SlicerROS2 on myCobot by Elephant Robotics, specifically the myCobot 280 M5 Stack. The ROS 2 interface for the device can be found here and drivers can be installed from the Elephant Robotics website.
Assuming the interface (mycobot_ros2) is cloned under the same ros2_ws, the state publisher can be started using the following steps:
cd ~/ros2_ws/src/mycobot_ros2/src/mycobot_ros2/mycobot_280/mycobot_280/config
python3 listen_real.py
It’s possible that you will need to change the port specified on line 14 of listen_real.py
depending on your device.
The .dae
files in the robot description also need to be converted to STLs (an online converter will work) and
the paths in the URDF file should be updated to reflect this change.
Once running - make sure your robot is in Transponder Mode. More instructions for basic operation of the myCobot can be found in the Gitbook