#ihmc_valkyrie_ros
The ihmc_valkyrie_ros
package allows for integrating the IHMC ROS API and the NASA Johnson Space Center Valkyrie humanoid in simulation and on real robot hardware.
This package provides several launch scripts. By default, they all use the latest stable release of IHMC Open Robotics Software as provided on JCenter/Bintray.
This software can also be used with a local build of IHMC Open Robotics Software. For more information, see the IHMC ROS Java Adapter.
##Usage
ihmc_valkyrie_ros
provides the following launch files:
ihmc_valkyrie_scs.launch
: Launch an IHMC SCS simulation environmentvalkyrie_open_humanoids_scs.launch
: Launches an IHMC SCS simulation environment designed as part of the MIT/University of Edinburgh Open Humanoids Projectval_diagnostic_control_robot.launch
: Launches a diagnostic controller for the physical Valkyrie robotval_sliderboard_control_robot.launch
: Launches a sliderboard controller for the physical Valkyrie robotval_wholebody_control_gazebo.launch
: Launches theihmc_ros_control
based controller for use with simulations from theval_gazebo
packageval_wholebody_control_robot.launch
: Launches theihmc_ros_control
based controller for use with the physical Valkyrie robot
Some configuration must be done to use the IHMC whole-body control algorithm in the Valkyrie package. At the time of this writing, the whole-body control launch files are not integrated with Bintray or the ihmc_ros_java_adapter
. You will need to do the following on the computer where the controller will be run:
- Configuring security limits for starting realtime threads. Edit
/etc/security/limits.conf
and add the following (replacing [username] with your local user name):
[username] soft cpu unlimited
[username] - rtprio 100
[username] - nice 40
[username] - memlock unlimited
-
Set up your IHMC IP Addresses. See The Network Parameters documentation for more information. Note that the wholebody launchers do not currently use the config files in the
configurations
directory. They use a configuration common to the IHMC field deployments, which is$HOME/.ihmc/IHMCNetworkParameters.ini
. You can also use environment variables as described in the documentation. The bare minimum you will need is alogger
/IHMC_LOGGER_IP
set. -
You must have a local clone of IHMC Open Robotics Software and you must "deploy" to the computer that will be running the controller. This can be accomplished via Gradle tasks. For example, to deploy locally for usage w/ Gazebo you use the
deployLocal
task, and for pushing code on to a Valkyrie robot you can use thedeploy
task.
Local deploy example:
$ cd <code clone location>
$ ./gradlew :Valkyrie:deployLocal
For the physical robot deploy
task (./gradlew :Valkyrie:deploy
), you will need to configure a few Gradle properties. Create/edit the file $HOME/.gradle/gradle.properties
and set the following values:
#ip address of your Link computer
valkyrie_link_ip=
#ip address of your Zelda computer
valkyrie_zelda_ip=
#SSH username for the Valkyrie onboard computers:
valkyrie_realtime_username=
#SSH password for the Valkyrie onboard computers:
valkyrie_realtime_password=
You can set the following roslaunch args:
-
use_local_build:=<true|false>
: If set to true and if you have your environment configured, this will use a local build of the IHMC software -
ihmc_network_file:=<absolute path to network file>
: Specific the network configuration .ini file for the IHMC software. See [the GitHub pages documentation](TODO fill this in) for more information
Lastly, the SCS launch can take an argument for starting position:
starting_location:=<STARTING POSITION>
: Specify landmarks in the test environment to spawn the robot near.
The starting position in the demo worlds can be defined. Currently the options are:
These are the starting location options: DEFAULT, DRC_TRIALS_TRAINING_WALKING, DRC_TRIALS_QUALS, MID_LADDER, RAMP_BOTTOM, RAMP_TOP, NARROW_DOORWAY, BARRIERS, SMALL_PLATFORM, MEDIUM_PLATFORM, ON_MEDIUM_PLATFORM, EASY_STEPPING_STONES, STEPPING_STONES, STAIRS, ROCKS, LADDER, IN_FRONT_OF_ZIGZAG_BLOCKS, SINGLE_CYLINDERBLOCKS, TOP_OF_SLOPES, DEFAULT_BUT_ALMOST_PI, IN_FRONT_OF_CINDERBLOCK_FIELD, IN_FRONT_OF_TWO_HIGH_CINDERBLOCKS, IN_FRONT_OF_CYLINDER_BLOCKS, IN_FRONT_OF_SLANTED_CINDERBLOCK_FIELD, OFFSET_ONE_METER_X_AND_Y, OFFSET_ONE_METER_X_AND_Y_ROTATED_PI, SMALL_PLATFORM_TURNED, SMALL_WALL