ROS package for using the Boston Dynamics Spot equiped with the Spot arm for collecting objects placed on the ground around it.
This package requires a custom version of the ROS driver for Spot
Note
Python3 version is requiered since the Open3D library uses it.
-
Place the robot in an area with items to collect
-
Launch custom ROS driver (
roslaunch spot_ros driver.launch
), power on the robot and issue stand command -
On the NUC connected to the robot:
roslaunch spot_collector collector.launch
-
On another computer with display, launch the user interface:
rosrun spot_collector Interf_real_time.py
The following interface will be opened:
-
With the sliders, set the area in which objects should be collected - the settings can be verified by looking at PointCloud2 messages published on topic /detector/points. The default configuration delimits an area of 1 square meter, with a maximum area of 6 by 6 meters around the robot; the default values and limits can be modified in the script (interface.py). It is also possible to use the current values set by the sliders by pressing the Use current settings button.
-
Remove points belonging to ground. It can be either done by setting the limits in the z-axis (with the two sliders) or by pressing the button Remove ground.
-
Detect the individual objects by clustering the remaining points - press button Cluster Object Points. New frames will be added to the tf tree. The detected objects can be therefore seen in Rviz.
-
Before grasping, the objects can be sorted into an optimal sequence with button Reorder Objects. The grasp command for all detected objects is sent with the button Send Grasp Command. Robot then collects all the detected objects.
-
If one of the grasps fails, all following grasps are aborted, failure is indicated in the top right corner of the user interface. New detection is required to grasp the remaining objects (start again from step 5.).