Shutter Bringup Package

Set of scripts and configuration files to start the robot.

Quick Start

To start publishing the robot model and run the ROS Control driver, execute:

$ roslaunch shutter_bringup shutter.launch

The launch file will then publish the robot description (URDF) into the /robot_description parameter in the ROS Parameter server, and run two nodes:

  • /robot_state_publisher: Publishes the state of the robot to /tf based on its joint angles and its kinematic tree (from the URDF in the parameter server).

  • /shutter_position_interface: Shutter hardware interface, which communicates between the robot servos and generic controllers defined in the ROS Control package.

To send commands to the servos, use the /joint_group_controller/command topic and send the servo angles in radians in a Float64MultiArray message. For example, using the command-line:

$ rostopic pub -1 /joint_group_controller/command std_msgs/Float64MultiArray "data: [0.0, 1.54, 1.54, 0.0]"

To retrieve the status of the servos, check the /joint_states topic.

Note that the controller may need to be enabled automatically, as described Manual Controller Management subsection.

If you want to run the robot driver, URDF model, and the face all at once, then launch the shutter_with_face.launch file instead:

$ roslaunch shutter_bringup shutter_with_face.launch

NOTE: For Shutter version 2.x and 3.x, make sure that the robot screen is set to a resolution of 800x480 pixels. If that is not the case, then follow these instructions to set the resolution properly.

Manual Controller Management

By default, passing the driver:=ros_control argument to the main shutter.launch launch file loads two low-level controllers for the position interface: a JointGroupPositionController and a JointTrajectoryController. The more advanced packages for motion control (MoveIt, shutter_servo and shutter_teleop) automatically initialize and start the appropriate low-level controller. However, using shutter_bringup alone will NOT start the controller automatically.

To manually start the JointGroupPositionController, send a service request to the /controller_manager node:

$ rosservice call /controller_manager/switch_controller "start_controllers: ['joint_group_controller']
 strictness: 1"
ok: True  # expected output

Note that you can use tab completion to help construct the service request message.

Shutter Camera (version 4.x)

Shutter version 4.x has a Logitech C920 webcam instead of a RealSense camera. To use the webcam, invoke or include the shutter_webcam.launch launchfile:

$ roslaunch shutter_bringup shutter_webcam.launch [view_image:=false]

The webcam is identified by its v4l driver. Detection of the correct webcam ID should occur automatically as part of the package build, assuming that the webcam is connected via USB. If the webcam changes, or the detected ID is incorrect, the detection can be invoked manually:

$ roscd shutter_bringup/config
$ ./infer_webcam_id.py

The detected ID is written as the environment variable SHUTTER_WEBCAM_ID to shutter_bringup/config/env-hooks/webcam_id.bash. This environment variable is exported with a catkin environment hook, whenever the workspace devel/setup.bash is sourced.

Note that if the detection script fails, the webcam ID environment variable in shutter_bringup/config/env-hooks/webcam_id.bash can be edited manually, but may be overwritten by subsequent workspace builds.

Simulation

Shutter has a basic simulation built with the Unity game engine. The simulation can be launched with the shutter_sim.launch launchfile:

$ roslaunch shutter_bringup shutter_sim.launch [headless:=false]

The headless argument specifies whether the simulation should create a display window. Running headless is useful for scenarios that do not require interaction, such as evaluating a motion control policy or synthesizing joint state data in simulation.

The simulation will be automatically downloaded and installed. By default, an existing installation will not be overwritten by a new version of the simulation. Instead, the simulation manager will throw an error message. Deleting the existing simulation installation and re-launching should install the new version and resolve the error.

Camera capabilities for Shutter (e.g., the webcam for version 4.x) are currently not supported in simulation.


Acknowledgements: This package is based on the widowx_arm_bringup package.