├── .gitignore ├── CHANGELOG.rst ├── LICENSE ├── README.rst ├── RELEASE.rst ├── baxter.sh ├── baxter_sdk.rosinstall └── baxter_sdk ├── CMakeLists.txt └── package.xml /.gitignore: -------------------------------------------------------------------------------- 1 | *.py[cod] 2 | 3 | # C extensions 4 | *.so 5 | 6 | # Packages 7 | *.egg 8 | *.egg-info 9 | dist 10 | build 11 | eggs 12 | parts 13 | bin 14 | var 15 | sdist 16 | develop-eggs 17 | .installed.cfg 18 | lib 19 | lib64 20 | 21 | # Installer logs 22 | pip-log.txt 23 | 24 | # Unit test / coverage reports 25 | .coverage 26 | .tox 27 | nosetests.xml 28 | 29 | # Translations 30 | *.mo 31 | 32 | # Mr Developer 33 | .mr.developer.cfg 34 | .project 35 | .cproject 36 | cmake_install.cmake 37 | .pydevproject 38 | *.swp 39 | CATKIN_IGNORE 40 | catkin 41 | catkin_generated 42 | devel 43 | 44 | cpp 45 | docs 46 | msg_gen 47 | srv_gen 48 | *.smoketest 49 | *.cfgc 50 | *_msgs/src/ 51 | */src/**/cfg 52 | */*/src/**/* 53 | -------------------------------------------------------------------------------- /CHANGELOG.rst: -------------------------------------------------------------------------------- 1 | 1.2.0 (2015-12-21) 2 | --------------------------------- 3 | - No changes other than version bumps 4 | 5 | 1.1.1 (2015-4-15) 6 | --------------------------------- 7 | - Updates baxter.sh to use a cross platform compatible command for making temporary directories 8 | 9 | 1.1.0 (2015-1-2) 10 | --------------------------------- 11 | - Updates baxter.sh to default to indigo ROS version 12 | 13 | 1.0.0 (2014-5-1) 14 | --------------------------------- 15 | - Updates rosinstall to use https repo checkouts (no SSH keys required) 16 | - Updates baxter.sh to support 'sim' (local) environment settings argument 17 | - Verbose baxter.sh run location and shell status 18 | 19 | 0.7.0 (2013-11-21) 20 | --------------------------------- 21 | - The baxter repository replaces sdk-examples. This package contains metapackages and files for installation of the 'broken out' sdk repository structure. 22 | - Reorganization of the sdk-examples repository into: baxter, baxter_interface, baxter_tools, baxter_examples, and baxter_common repositories. Catkin/Bloom compliance. 23 | - Creation of baxter_sdk metapackage. This metapackage contains all respositories required for Baxter SDK usage. 24 | - Catkinization of the SDK. Rosbuild no longer supported. 25 | - Adds baxter.sh convenience script for Catkin environment setup. 26 | - Adds baxter_sdk.rosinstall file for easy installation of all necessary SDK repositories. 27 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2013-2015, Rethink Robotics 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | 1. Redistributions of source code must retain the above copyright notice, 8 | this list of conditions and the following disclaimer. 9 | 2. Redistributions in binary form must reproduce the above copyright 10 | notice, this list of conditions and the following disclaimer in the 11 | documentation and/or other materials provided with the distribution. 12 | 3. Neither the name of the Rethink Robotics nor the names of its 13 | contributors may be used to endorse or promote products derived from 14 | this software without specific prior written permission. 15 | 16 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 17 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 20 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 21 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 22 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 23 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 24 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 25 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 26 | POSSIBILITY OF SUCH DAMAGE. 27 | -------------------------------------------------------------------------------- /README.rst: -------------------------------------------------------------------------------- 1 | Baxter SDK 2 | ============== 3 | 4 | The Baxter SDK provides a platform for development of custom applications for the Baxter Research Robot 5 | 6 | This repository contains metapackages and files for installation/use of the Baxter SDK 7 | 8 | Installation 9 | ------------ 10 | | Please follow the Getting Started wiki page for instructions on installation of the Baxter SDK: 11 | | http://sdk.rethinkrobotics.com/wiki/Workstation_Setup 12 | 13 | Code & Tickets 14 | -------------- 15 | 16 | +-----------------+----------------------------------------------------------------+ 17 | | Documentation | http://sdk.rethinkrobotics.com/wiki | 18 | +-----------------+----------------------------------------------------------------+ 19 | | Issues | https://github.com/RethinkRobotics/baxter/issues | 20 | +-----------------+----------------------------------------------------------------+ 21 | | Contributions | http://sdk.rethinkrobotics.com/wiki/Contributions | 22 | +-----------------+----------------------------------------------------------------+ 23 | 24 | Baxter Repository Overview 25 | -------------------------- 26 | 27 | :: 28 | 29 | . 30 | | 31 | +-- baxter_sdk/ baxter metapackage containing all baxter sdk packages 32 | | 33 | +-- baxter_sdk.rosinstall rosinstall script containing all baxter sdk packages 34 | | 35 | +-- baxter.sh convenient environment initialization script 36 | 37 | 38 | Other Baxter Repositories 39 | ------------------------- 40 | +------------------+-----------------------------------------------------+ 41 | | baxter_interface | https://github.com/RethinkRobotics/baxter_interface | 42 | +------------------+-----------------------------------------------------+ 43 | | baxter_tools | https://github.com/RethinkRobotics/baxter_tools | 44 | +------------------+-----------------------------------------------------+ 45 | | baxter_common | https://github.com/RethinkRobotics/baxter_common | 46 | +------------------+-----------------------------------------------------+ 47 | | baxter_examples | https://github.com/RethinkRobotics/baxter_examples | 48 | +------------------+-----------------------------------------------------+ 49 | 50 | Latest Release Information 51 | -------------------------- 52 | 53 | http://sdk.rethinkrobotics.com/wiki/Release-Changes 54 | -------------------------------------------------------------------------------- /RELEASE.rst: -------------------------------------------------------------------------------- 1 | Rethink Robotics SDK 1.1.1 Release Notes 2 | ======================================== 3 | 4 | Date: 5/15/2015 5 | 6 | Overview 7 | ------------ 8 | 9 | The Baxter SDK provides a platform for roboticists to develop custom 10 | applications to run with the Baxter Research Robot. 11 | 12 | 13 | See our wiki for more information: 14 | http://sdk.rethinkrobotics.com/wiki 15 | 16 | Update Instructions 17 | ------------------- 18 | 19 | http://sdk.rethinkrobotics.com/wiki/Software_Update 20 | 21 | Changes Wiki Page 22 | ------------------- 23 | 24 | http://sdk.rethinkrobotics.com/wiki/Release_Changes 25 | 26 | Major Updates 27 | ------------- 28 | 29 | Additions 30 | --------- 31 | 32 | * Added torso navigators to control the UI in Demo Mode 33 | 34 | Removals 35 | -------- 36 | 37 | Changes 38 | ------- 39 | 40 | * Migration from update_robot.py to the *rethink-updater* command on-robot via *SSH* 41 | http://sdk.rethinkrobotics.com/wiki/SSH_Update 42 | 43 | Fixes 44 | ----- 45 | 46 | * Reduced overall robot restart/shutdown time 47 | * Added access to cmake, git, and wstool tools for the ruser account 48 | * Patched on-robot ros_comm Transport Memory leak 49 | * Upgraded on-robot OpenCV to 2.4.9 and recompiled with several plugins enabled (including gtk). 50 | This fixes an issue that prevented xdisplay_image.py from displaying any image on Baxter's screen when 51 | run from the ruser account 52 | * Fixed an issue that prevented on-robot ROSBridge from loading and communicating properly 53 | * Fixed a bug that caused the JTAS to error with a path of one or two points is supplied as a trajectory 54 | * Fixed an issue that caused the Joint Trajectory Action Server to throw an error when a path 55 | of one or two points were supplied 56 | * Added use of mktemp in baxter.sh for Arch linux compatibility 57 | * Added a calculation to increase the amount of time allowed to move arm to the initial 58 | pose of joint_trajectory_playback script in baxter_examples 59 | * Fixed an issue in syncing gripper playback with joint_trajectory_playback arm execution 60 | * Fixed a timing issue preventing joint_trajectory_playback from completing execution 61 | * Fixed an issue where the on-robot /cameras/list service returned only one camera if another camera 62 | was broken (or unplugged) 63 | * Fixed an issue that caused the on-robot IK service to be too conservative in estimating if solutions 64 | were feasible which resulted in an increase in No Solutions 65 | 66 | Known Issues 67 | ------------ 68 | 69 | -------------------------------------------------------------------------------- /baxter.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Copyright (c) 2013-2015, Rethink Robotics 3 | # All rights reserved. 4 | 5 | # This file is to be used in the *root* of your Catkin workspace. 6 | 7 | # This is a convenient script which will set up your ROS environment and 8 | # should be executed with every new instance of a shell in which you plan on 9 | # working with Baxter. 10 | 11 | # Clear any previously set your_ip/your_hostname 12 | unset your_ip 13 | unset your_hostname 14 | #-----------------------------------------------------------------------------# 15 | # USER CONFIGURABLE ROS ENVIRONMENT VARIABLES # 16 | #-----------------------------------------------------------------------------# 17 | # Note: If ROS_MASTER_URI, ROS_IP, or ROS_HOSTNAME environment variables were 18 | # previously set (typically in your .bashrc or .bash_profile), those settings 19 | # will be overwritten by any variables set here. 20 | 21 | # Specify Baxter's hostname 22 | baxter_hostname="baxter_hostname.local" 23 | 24 | # Set *Either* your computers ip address or hostname. Please note if using 25 | # your_hostname that this must be resolvable to Baxter. 26 | your_ip="192.168.XXX.XXX" 27 | #your_hostname="my_computer.local" 28 | 29 | # Specify ROS distribution (e.g. indigo, hydro, etc.) 30 | ros_version="indigo" 31 | #-----------------------------------------------------------------------------# 32 | 33 | tf=$(mktemp) 34 | trap "rm -f -- '${tf}'" EXIT 35 | 36 | # If this file specifies an ip address or hostname - unset any previously set 37 | # ROS_IP and/or ROS_HOSTNAME. 38 | # If this file does not specify an ip address or hostname - use the 39 | # previously specified ROS_IP/ROS_HOSTNAME environment variables. 40 | if [ -n "${your_ip}" ] || [ -n "${your_hostname}" ]; then 41 | unset ROS_IP && unset ROS_HOSTNAME 42 | else 43 | your_ip="${ROS_IP}" && your_hostname="${ROS_HOSTNAME}" 44 | fi 45 | 46 | # If argument provided, set baxter_hostname to argument 47 | # If argument is sim or local, set baxter_hostname to localhost 48 | if [ -n "${1}" ]; then 49 | if [[ "${1}" == "sim" ]] || [[ "${1}" == "local" ]]; then 50 | baxter_hostname="localhost" 51 | if [[ -z ${your_ip} || "${your_ip}" == "192.168.XXX.XXX" ]] && \ 52 | [[ -z ${your_hostname} || "${your_hostname}" == "my_computer.local" ]]; then 53 | your_hostname="localhost" 54 | your_ip="" 55 | fi 56 | else 57 | baxter_hostname="${1}" 58 | fi 59 | fi 60 | 61 | topdir=$(basename $(readlink -f $(dirname ${BASH_SOURCE[0]}))) 62 | 63 | cat <<-EOF > ${tf} 64 | [ -s "\${HOME}"/.bashrc ] && source "\${HOME}"/.bashrc 65 | [ -s "\${HOME}"/.bash_profile ] && source "\${HOME}"/.bash_profile 66 | 67 | # verify this script is moved out of baxter folder 68 | if [[ -e "${topdir}/baxter_sdk/package.xml" ]]; then 69 | echo -ne "EXITING - This script must be moved from the baxter folder \ 70 | to the root of your catkin workspace.\n" 71 | exit 1 72 | fi 73 | 74 | # verify ros_version lowercase 75 | ros_version="$(tr [A-Z] [a-z] <<< "${ros_version}")" 76 | 77 | # check for ros installation 78 | if [ ! -d "/opt/ros" ] || [ ! "$(ls -A /opt/ros)" ]; then 79 | echo "EXITING - No ROS installation found in /opt/ros." 80 | echo "Is ROS installed?" 81 | exit 1 82 | fi 83 | 84 | # if set, verify user has modified the baxter_hostname 85 | if [ -n ${baxter_hostname} ] && \ 86 | [[ "${baxter_hostname}" == "baxter_hostname.local" ]]; then 87 | echo -ne "EXITING - Please edit this file, modifying the \ 88 | 'baxter_hostname' variable to reflect Baxter's current hostname.\n" 89 | exit 1 90 | fi 91 | 92 | # if set, verify user has modified their ip address (your_ip) 93 | if [ -n ${your_ip} ] && [[ "${your_ip}" == "192.168.XXX.XXX" ]]; then 94 | echo -ne "EXITING - Please edit this file, modifying the 'your_ip' \ 95 | variable to reflect your current IP address.\n" 96 | exit 1 97 | fi 98 | 99 | # if set, verify user has modified their computer hostname (your_hostname) 100 | if [ -n ${your_hostname} ] && \ 101 | [[ "${your_hostname}" == "my_computer.local" ]]; then 102 | echo -ne "EXITING - Please edit this file, modifying the \ 103 | 'your_hostname' variable to reflect your current PC hostname.\n" 104 | exit 1 105 | fi 106 | 107 | # verify user does not have both their ip *and* hostname set 108 | if [ -n "${your_ip}" ] && [ -n "${your_hostname}" ]; then 109 | echo -ne "EXITING - Please edit this file, modifying to specify \ 110 | *EITHER* your_ip or your_hostname.\n" 111 | exit 1 112 | fi 113 | 114 | # verify that one of your_ip, your_hostname, ROS_IP, or ROS_HOSTNAME is set 115 | if [ -z "${your_ip}" ] && [ -z "${your_hostname}" ]; then 116 | echo -ne "EXITING - Please edit this file, modifying to specify \ 117 | your_ip or your_hostname.\n" 118 | exit 1 119 | fi 120 | 121 | # verify specified ros version is installed 122 | ros_setup="/opt/ros/\${ros_version}" 123 | if [ ! -d "\${ros_setup}" ]; then 124 | echo -ne "EXITING - Failed to find ROS \${ros_version} installation \ 125 | in \${ros_setup}.\n" 126 | exit 1 127 | fi 128 | 129 | # verify the ros setup.sh file exists 130 | if [ ! -s "\${ros_setup}"/setup.sh ]; then 131 | echo -ne "EXITING - Failed to find the ROS environment script: \ 132 | "\${ros_setup}"/setup.sh.\n" 133 | exit 1 134 | fi 135 | 136 | # verify the user is running this script in the root of the catkin 137 | # workspace and that the workspace has been compiled. 138 | if [ ! -s "devel/setup.bash" ]; then 139 | echo -ne "EXITING - \n1) Please verify that this script is being run \ 140 | in the root of your catkin workspace.\n2) Please verify that your workspace \ 141 | has been built (source /opt/ros/\${ros_version}/setup.sh; catkin_make).\n\ 142 | 3) Run this script again upon completion of your workspace build.\n" 143 | exit 1 144 | fi 145 | 146 | [ -n "${your_ip}" ] && export ROS_IP="${your_ip}" 147 | [ -n "${your_hostname}" ] && export ROS_HOSTNAME="${your_hostname}" 148 | [ -n "${baxter_hostname}" ] && \ 149 | export ROS_MASTER_URI="http://${baxter_hostname}:11311" 150 | 151 | # source the catkin setup bash script 152 | source devel/setup.bash 153 | 154 | # setup the bash prompt 155 | export __ROS_PROMPT=\${__ROS_PROMPT:-0} 156 | [ \${__ROS_PROMPT} -eq 0 -a -n "\${PROMPT_COMMAND}" ] && \ 157 | export __ORIG_PROMPT_COMMAND=\${PROMPT_COMMAND} 158 | 159 | __ros_prompt () { 160 | if [ -n "\${__ORIG_PROMPT_COMMAND}" ]; then 161 | eval \${__ORIG_PROMPT_COMMAND} 162 | fi 163 | if ! echo \${PS1} | grep '\[baxter' &>/dev/null; then 164 | export PS1="\[\033[00;33m\][baxter - \ 165 | \${ROS_MASTER_URI}]\[\033[00m\] \${PS1}" 166 | fi 167 | } 168 | 169 | if [ "\${TERM}" != "dumb" ]; then 170 | export PROMPT_COMMAND=__ros_prompt 171 | __ROS_PROMPT=1 172 | elif ! echo \${PS1} | grep '\[baxter' &>/dev/null; then 173 | export PS1="[baxter - \${ROS_MASTER_URI}] \${PS1}" 174 | fi 175 | 176 | EOF 177 | 178 | ${SHELL} --rcfile ${tf} 179 | 180 | rm -f -- "${tf}" 181 | trap - EXIT 182 | 183 | # vim: noet 184 | -------------------------------------------------------------------------------- /baxter_sdk.rosinstall: -------------------------------------------------------------------------------- 1 | - git: 2 | local-name: baxter 3 | uri: https://github.com/RethinkRobotics/baxter.git 4 | version: master 5 | - git: 6 | local-name: baxter_interface 7 | uri: https://github.com/RethinkRobotics/baxter_interface.git 8 | version: master 9 | - git: 10 | local-name: baxter_tools 11 | uri: https://github.com/RethinkRobotics/baxter_tools.git 12 | version: master 13 | - git: 14 | local-name: baxter_common 15 | uri: https://github.com/RethinkRobotics/baxter_common.git 16 | version: master 17 | - git: 18 | local-name: baxter_examples 19 | uri: https://github.com/RethinkRobotics/baxter_examples.git 20 | version: master 21 | -------------------------------------------------------------------------------- /baxter_sdk/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 2.8.3) 2 | project(baxter_sdk) 3 | find_package(catkin REQUIRED) 4 | catkin_metapackage() 5 | -------------------------------------------------------------------------------- /baxter_sdk/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | baxter_sdk 4 | 1.2.0 5 | 6 | baxter_sdk metapackage containing all of the SDK packages 7 | for the Baxter Research Robot from Rethink Robotics. 8 | 9 | 10 | 11 | Rethink Robotics Inc. 12 | 13 | BSD 14 | http://sdk.rethinkrobotics.com/ 15 | 16 | https://github.com/RethinkRobotics/baxter 17 | 18 | 19 | https://github.com/RethinkRobotics/baxter/issues 20 | 21 | Rethink Robotics Inc. 22 | 23 | catkin 24 | 25 | baxter_interface 26 | baxter_examples 27 | baxter_tools 28 | baxter_common 29 | 30 | 31 | 32 | 33 | 34 | 35 | --------------------------------------------------------------------------------