How to Use ControlIt! with atlas_plain_pinned (Joint Position)

This section describes how to control the joint positions of atlas_plain_pinned. This is a version of Atlas that does not include the BDI supporting infrastructure and is pinned to the world.

Generate the URDFs

Generate the URDF description files:

$ roscd atlas_plain_pinned_controlit/models
$ ./generate_atlas_plain_pinned_controlit_urdfs.sh

Launch Automatically Using a Single Command

To run the demo using a single command:

$ reset && roslaunch atlas_plain_pinned_controlit simulate.launch

Launch Manually Using Multiple Commands

Start roscore:

$ roscore

Start the shared memory manager:

$ rosrun shared_memory_interface shared_memory_manager

Open a new terminal and load the necessary parameters by executing one of the following commands:

$ roslaunch atlas_plain_pinned_controlit_config load_atlas_plain_pinned_parameters.launch

The command above will load the parameters and then exit.

Start the simulation:

$ roslaunch atlas_plain_pinned_controlit_config gazebo.launch

Gazebo will appear with a Atlas' legs as shown below.

Start the controller.

$ roslaunch atlas_plain_pinned_controlit_config start_controlit.launch

The call above will not return. Hit play in Gazebo to start the controller.

Usage Notes

To obtain the joint indices:

$ rosservice call /atlas_plain_pinned_controller/diagnostics/getJointIndices

To change the joint angles:

$ rostopic pub /atlas_plain_pinned_controller/JPosTask/goalPosition std_msgs/Float64MultiArray '{layout: {dim: [{label: "x", size: 28, stride: 28}], data_offset: 0}, data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}'

Joint Position Semantics

Joint Index Joint Name Positive Position Negative Position
0 back_bkz

$ rostopic pub /atlas_plain_pinned_controller/JPosTask/goalPosition std_msgs/Float64MultiArray '{layout: {dim: [{label: "x", size: 28, stride: 28}], data_offset: 0}, data: [0.6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}'

$ rostopic pub /atlas_plain_pinned_controller/JPosTask/goalPosition std_msgs/Float64MultiArray '{layout: {dim: [{label: "x", size: 28, stride: 28}], data_offset: 0}, data: [-0.6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}'

1 back_bky

$ rostopic pub /atlas_plain_pinned_controller/JPosTask/goalPosition std_msgs/Float64MultiArray '{layout: {dim: [{label: "x", size: 28, stride: 28}], data_offset: 0}, data: [0, 0.4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}'

$ rostopic pub /atlas_plain_pinned_controller/JPosTask/goalPosition std_msgs/Float64MultiArray '{layout: {dim: [{label: "x", size: 28, stride: 28}], data_offset: 0}, data: [0, -0.6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}'

2 back_bkx

$ rostopic pub /atlas_plain_pinned_controller/JPosTask/goalPosition std_msgs/Float64MultiArray '{layout: {dim: [{label: "x", size: 28, stride: 28}], data_offset: 0}, data: [0, 0, 0.6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}'

$ rostopic pub /atlas_plain_pinned_controller/JPosTask/goalPosition std_msgs/Float64MultiArray '{layout: {dim: [{label: "x", size: 28, stride: 28}], data_offset: 0}, data: [0, 0, -0.6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}'

3 l_arm_shy    
4 l_arm_shx    
5 l_arm_ely    
6 l_arm_elx    
7 l_arm_wry    
8 l_arm_wrx    
9 neck_ry    
10 r_arm_shy    
11 r_arm_shx    
12 r_arm_ely    
13 r_arm_elx    
14 r_arm_wry    
15 r_arm_wrx    
16 l_leg_hpz    
17 l_leg_hpx    
18 l_leg_hpy    
19 l_leg_kny    
20 l_leg_aky    
21 l_leg_akx    
22 r_leg_hpz    
23 r_leg_hpx    
24 r_leg_hpy    
25 r_leg_kny    
26 r_leg_aky    
27 r_leg_akx
$ rostopic pub /atlas_plain_pinned_controller/JPosTask/goalPosition std_msgs/Float64MultiArray '{layout: {dim: [{label: "x", size: 28, stride: 28}], data_offset: 0}, data: [0, 0, 0.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.7]}'


$ rostopic pub /atlas_plain_pinned_controller/JPosTask/goalPosition std_msgs/Float64MultiArray '{layout: {dim: [{label: "x", size: 28, stride: 28}], data_offset: 0}, data: [0, 0, 0.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.7]}'