Skip to content

v0.3.1 (spot-movo-stable)

Latest
Compare
Choose a tag to compare
@zkytony zkytony released this 10 Feb 13:39
· 14 commits to master since this release

State of repo when Spot & MOVO both worked fine for object search demos.

Spot

We have moved away from spot_ros and created our own integration of Spot and ROS through the following four ROS packages:

This is more modular and more light-weight.

From a Python programming perspective, this means that most functionalities related to controlling Spot are folded into a single Python package called rbd_spot (see this __init__.py file).

Look for tests in each package for example usage. As a quick example from rbd_spot_action/tests), here is how you could make Spot move its arm with body follow (fundamentally based on the FollowArmCommand rpc from Spot SDK).

#!/usr/bin/env python
import rbd_spot
from bosdyn.client.robot_command import blocking_stand

conn = rbd_spot.SpotSDKConn(sdk_name="ArmMoveClient",
                            take_lease=True)
command_client = rbd_spot.arm.create_client(conn)
robot_state_client = rbd_spot.state.create_client(conn)
blocking_stand(command_client, timeout_sec=10)

rbd_spot.arm.moveEEToWithBodyFollow(conn, command_client, robot_state_client, (2.0, 0.1, 0.25))
time.sleep(2.0)
rbd_spot.arm.stow(conn, command_client)
time.sleep(2.0)

MOVO

Similarly for MOVO, there are four packages, rbd_movo_action, rbd_movo_perception, rbd_movo_systems, and rbd_movo_teleop. They require building the kinova-movo stack (that is provided by Kinova when MOVO was released). See robotdev/movo/src.

Note that MOVO runs onboard ROS kinetic. Your computer may most likely be running ROS noetic. Your computer can still communicate with MOVO -- it still works. Controlling the MOVO robot through an action server running in noetic works. Note that you do need to make a symbolic link to the kinova-movo stack built in ROS kinetic (see the noetic_ws folder dedicated for a ROS noetic workspace for MOVO.

Below are some notes I wrote down when I made this work (sloop_object_search was my package for object search I was testing):

     How did I do this..:
     1. Create 'noetic_ws' inside 'movo', as a workspace dedicated for Noetic (you cannot mix
        up different ROS versions for the same workspace -- the build & devel folders are not
        compatible)
     2. Create symbolic link to sloop_object_search_ros inside noetic_ws. Note that
        sloop_object_search abandons the idea that its ROS package may be used by
        Kinetic; It only assumes Noetic.
     3. Run catkin_make -DWHITELIST_PACKAGES="sloop_object_search_ros"
     4. Make sure that the launch files you need /do not/ depend on rbd_movo_* packages;
        Because those packages are in ROS kinetic. We want message-level communication
        but not mix-up.
     5. Install sloop_object_search ros package by ~pip install -e .~.