# baxter_cpp **Repository Path**: akjay/baxter_cpp ## Basic Information - **Project Name**: baxter_cpp - **Description**: baxter_cpp - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: kinetic-devel - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-03-16 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README Baxter_cpp ====== A C++ version of the Baxter SDK that works along side the Rethink SDK. Is inteded to be used with a ros_control implementation of the Baxter controllers that is run *on* the robot (via SSH). Contains pick and place MoveIt! code for Baxter, as well as some other tools. On going development continues in the ``development`` branch and contributors are strongly encouraged to send pull requests and use this code. Seriously, please help me improve this code. Attempts are made to keep the ``indigo-devel`` branch stable, but at the end of the day I am an open source graduate student contributor ;-) ### Features * Actuated fingers using a custom robot state publisher and URDF * Baxter ros_control integration on Baxter's internal PC using [baxter_ssh](http://github.com/davetcoleman/baxter_ssh) * Baxter pick and place with MoveIt! * Generate grasps for blocks on a table * Execute a pick and place routine * Works on hardware and in an Rviz visualization * Other tools for testing trajectories * Integrated Asus Xtion Pro depth sensor (Kinect sensor) * Displays in MoveIt! ## Prerequisites * A Baxter with dual parallel electric grippers with SDK v1.0.0 installed * (Optional) Asus Xtion Pro Camera * [ROS Indigo](http://wiki.ros.org/ROS/Installation) on Ubuntu 14.04 ## Baxter Installation * Install wstool package ``` sudo apt-get install python-wstool ``` * Create a catkin workspace if you don't already have one (we recommend a separate one for Baxter) ``` mkdir -p ~/ros/ws_baxter/src cd ~/ros/ws_baxter/src wstool init . ``` * Install Rethink's Baxter SDK as documented below, if you have not already. *Note*: These instructions can also be found at [Installing the Research SDK](https://github.com/RethinkRobotics/sdk-docs/wiki/Installing-the-Research-SDK) ``` wstool merge https://raw.githubusercontent.com/RethinkRobotics/baxter/master/baxter_sdk.rosinstall ``` * Install these baxter_cpp packages: *Note*: replaces Rethink's baxter_common with a version that has parallel electric end effectors modeled ``` wstool merge --merge-replace -y https://raw.github.com/davetcoleman/baxter_cpp/indigo-devel/baxter_cpp/baxter.rosinstall ``` * Install ros_control and other low-level components internall on Baxter using the new SSH access: Follow instructions on [README of baxter_ssh](http://github.com/davetcoleman/baxter_ssh) repo * Download the Baxter packages: ``` wstool update ``` * Setup ROS if you haven't already (you can probably skip this): ``` sudo apt-get update sudo apt-get dist-upgrade source /opt/ros/indigo/setup.bash rosdep update ``` * Install dependencies and build ``` cd .. rosdep install --from-paths . --ignore-src --rosdistro indigo -y catkin_make ``` * Add Baxter setup.bash to your .bashrc (recommended) ``` echo 'source ~/ros/ws_baxter/devel/setup.bash' >> ~/.bashrc ``` ## Customize for your robot Every Baxter is factory calibrated for the mouting points of the arms because they are welded on. Therefore, you might want to customize the ``baxter_description/urdf/baxter.urdf`` file to your robot's custom values. To do so: * Start up your Baxter without launching any ROS nodes on your dev machine * While connected to Baxter, run the command: ``` rosparam get -p /robot_description | tail -n +2 > my.baxter.urdf ``` * Within ``my.baxter.urdf`` find the lines that say: ``` ``` and ``` ``` * Copy the following ```` line to the corresponding location in ``baxter.urdf`` located in ``baxter_description/urdf/baxter.urdf`` ## Bringup Baxter ### Hardware * Ensure you have the correct ROS_MASTER_URI exported, this depends on your robot serial number. CU Boulder's is: ``` export ROS_MASTER_URI=http://011305P0009.local:11311 ``` You might also need to set the ROS hostname environment variable if you have not already done so and you have communication issues: ``` export ROS_HOSTNAME=128.138.244.72 # REPLACE WITH YOUR COMPUTER'S IP ADDRESS ``` * Bringup ros_control controllers on Baxter Follow instructions on [baxter_ssh](http://github.com/davetcoleman/baxter_ssh) ### Rviz Visualization This only shows a virtual Baxter in [Rviz](http://www.ros.org/wiki/rviz) without any physics simulator. Instead it uses a ros_control hardware interface that simply loops back to itself. Good for testing MoveIt!. * Ensure you have the correct ROS_MASTER_URI exported: ``` export ROS_MASTER_URI=http://localhost:11311 ``` * Start visualization: ``` roslaunch baxter_control baxter_visualization.launch ``` **Note:** you will not see anything when you launch this, only the ``/robot/joint_states`` topic starts being published. Proceed to the MoveIt! section, below. ## Gazebo Simulation This is still in beta. First install the baxter_gazebo stuff. I haven't documented this yet. roslaunch baxter_gazebo baxter_world.launch ## Start MoveIt! Works with simulation, hardware or visualization: * Start MoveIt!'s move_group Server: ``` roslaunch baxter_moveit_config baxter_moveit.launch ``` * Start Rviz with MoveIt! configured: ``` roslaunch baxter_moveit_config moveit_rviz.launch ``` ## Block pick and place demo Picks small blocks located on a table in front of Baxter and places them to Baxter's left. Assumes perfect perception (doesn't have perception) as defined in custom_environment.h. roslaunch baxter_pick_place block_pick_place.launch ## Hardware Control Modes Follow instructions on [README of baxter_ssh](http://github.com/davetcoleman/baxter_ssh) repo ## Test Programs Send Baxter to random poses using motion planning and obstacle avoidance of a hard-coded planning scene ``` roslaunch baxter_pick_place random_planning.launch ``` ## Programmed Buttons *Duplicated from [README of baxter_ssh](http://github.com/davetcoleman/baxter_ssh)* ### End Effector Cuff * Rectangular button: close end effector * Circular button: open end effector ### Back of Robot Shoulders * Left shoulder button: enable Baxter * Right shoulder button: disable Baxter ## License BSD (New BSD License) ## Contributors - @davetcoleman - @brawner - @jon-weisz Please help - see [Contribute](https://github.com/davetcoleman/baxter_cpp/blob/master/CONTRIBUTING.md) page.