ROStoJAUSBridge Manual 

by Laurel Sadler, Chirag Rao, John Rogers, and Hung Nguyen 

ARL-MR-0812 March 2012 

Approved for public release; distribution unlimited. 
NOTICES 

Disclaimers 

The findings in this report are not to be construed as an official Department of the Army position 

unless so designated by other authorized documents. 

Citation of manufacturer’s or trade names does not constitute an official endorsement or 

approval of the use thereof. 

Destroy this report when it is no longer needed. Do not return it to the originator. 
Army Research Laboratory 

Adelphi, MD 20783-1197 

ARL-MR-0812 March 2012 

ROStoJAUSBridge Manual 

Laurel Sadler, Chirag Rao, John Rogers, and Hung Nguyen 

Computational and Information Sciences Directorate, ARL 

Approved for public release; distribution unlimited. 
ii 

REPORT DOCUMENTATION PAGE Form Approved 

OMB No. 0704-0188

Public reporting burden for this collection of information is estimated to average 1 hour per response, including the time for reviewing instructions, searching existing data sources, gathering and maintaining the 

data needed, and completing and reviewing the collection information. Send comments regarding this burden estimate or any other aspect of this collection of information, including suggestions for reducing the 

burden, to Department of Defense, Washington Headquarters Services, Directorate for Information Operations and Reports (0704-0188), 1215 Jefferson Davis Highway, Suite 1204, Arlington, VA 22202-4302. 

Respondents should be aware that notwithstanding any other provision of law, no person shall be subject to any penalty for failing to comply with a collection of information if it does not display a currently 

valid OMB control number. 

PLEASE DO NOT RETURN YOUR FORM TO THE ABOVE ADDRESS. 

1. REPORT DATE (DD-MM-YYYY)

March 2012 

2. REPORT TYPE 

Final 

3. DATES COVERED (From - To) 

4. TITLE AND SUBTITLE 

ROStoJAUSBridge Manual 

5a. CONTRACT NUMBER 

5b. GRANT NUMBER 

5c. PROGRAM ELEMENT NUMBER 

6. AUTHOR(S) 

Laurel Sadler, Chirag Rao, John Rogers, and Hung Nguyen 

5d. PROJECT NUMBER 

5e. TASK NUMBER 

5f. WORK UNIT NUMBER 

7. PERFORMING ORGANIZATION NAME(S) AND ADDRESS(ES) 

U.S. Army Research Laboratory 

ATTN: RDRL-CII-B 

2800 Powder Mill Road 

Adelphi, MD 20783-1197

8. PERFORMING ORGANIZATION 

 REPORT NUMBER 

ARL-MR-0812

9. SPONSORING/MONITORING AGENCY NAME(S) AND ADDRESS(ES) 10. SPONSOR/MONITOR'S ACRONYM(S) 

11. SPONSOR/MONITOR'S REPORT 

 NUMBER(S) 

12. DISTRIBUTION/AVAILABILITY STATEMENT 

Approved for public release; distribution unlimited. 

13. SUPPLEMENTARY NOTES 

14. ABSTRACT 

The ROStoJAUSBridge is a software program implemented at the U.S. Army Research Laboratory (ARL) to leverage the 

image processing and intelligent mobility behaviors capabilities from the robot operating system (ROS) to the small 

unmanned ground vehicle (SUG)V. This software program allows for interaction between programs running on ROS and the 

iRobot SUGV. It converts ROS messages to messages adhering to the Joint Architecture for Unmanned Systems (JAUS) 

architecture and vice versa. The supported set of messages is limited to query and receive the velocity state of the SUGV 

which will be used with the inertial measurement unit (IMU) data to compute the local pose; and to send the velocity 

commands from ROS' programs to the SUGV 

15. SUBJECT TERMS

Robot operating system, software packages 

16. SECURITY CLASSIFICATION OF:

17. LIMITATION 

OF ABSTRACT 

UU 

18. NUMBER 

OF PAGES 

54 

19a. NAME OF RESPONSIBLE PERSON

Laurel Sadler 

a. REPORT 

Unclassified 

b. ABSTRACT 

Unclassified 

c. THIS PAGE 

Unclassified 

19b. TELEPHONE NUMBER (Include area code) 

(301) 394-1221 

Standard Form 298 (Rev. 8/98) 

Prescribed by ANSI Std. Z39.18
iii 

Contents 

List of Figures iv

List of Tables iv

1. Introduction 1

2. ROStoJAUSBridge Overview 2

3. ROStoJAUSBridge Layout 4

3.1 Using ROStoJAUSBridge ...............................................................................................6

3.1.1 Controlling the SUGV’s Tread and Flipper Motion ...........................................6

3.1.2 Changing the Robot’s Internet Protocol (IP) Address .........................................7

3.2 Future Tasks and Improvements .....................................................................................7

4. References 8

Appendix. ROStoJAUSBridge API 9

List of Symbols, Abbreviations, and Acronyms 46

Distribution List 47 
iv 

List of Figures 

Figure 1. Message flow between the SUGV and ROS via the ROStoJAUSBridge. ......................2

Figure 2. (a) This depicts the command message flow from ROS to the SUGV to drive the 

SUGV and (b) this depicts the command message flow of the odometry data from the 

SUGV to ROS. ...........................................................................................................................3

Figure 3. This depicts data flow between the ROStoJAUSBridge and various ROS packages. ....4

List of Tables 

Table 1. JAUS messages supported by ROStoJAUSBridge. ..........................................................6
1 

1. Introduction 

The Asset Control & Behavior Branch of the U.S. Army Research Laboratory (ARL) is currently 

conducting research in the area of autonomy for small unmanned ground vehicles (SUGVs). The 

SUGV can be deployed with the Soldier for improved situational awareness and to perform tasks 

that are considered dangerous or life-threatening. The SUGV can provide information about the 

area it is autonomously exploring to the Soldier, who remains in a safe environment. The SUGV 

is controlled by and communicates with other systems via the Joint Architecture for Unmanned 

Systems (JAUS) messaging architecture (1). 

Baseline autonomous capabilities, including mapping and navigation, have been developed for 

the SUGV platforms, making use of the open-source Robot Operating System (ROS) software 

from Willow Garage, Inc. (5) ROS provides libraries and tools for hardware abstraction, lowlevel device control, implementation of commonly used functionality, message-passing between 

processes, and package management. To achieve the autonomous exploration and navigation 

components of the baseline system, the software integration on the SUGV consisted of: 

(1) various ROS packages running on the payload computer to provide exploration, mapping, 

and navigation, as well as two hardware drivers for sensors; (2) the JAUS communications 

architecture software running on the SUGV internal processor to provide access to low-level 

control; and (3) a software bridge between JAUS and ROS to allow transference of velocity 

commands, odometry, and other data between them. 

For our specific application, we used the ROS low-level device control for the Hokuyo UTM30LX Laser Radar (Ladar) and the Microstrain 3DM-GX inertial measurement unit (IMU), in 

addition to multiple ROS software packages for mapping, and navigation for local and global 

mapping. The ROS mapping software package GMapping is an implementation of Simultaneous 

Localization and Mapping (SLAM) using a Rao-Blackwellized particle filter to build occupancy 

grid maps from laser data (2). Since this algorithm is sensitive to the quality of odometry inputs 

that related successive scans, it was necessary to implement the ROS node (odom_imu_to_tf), 

which fuses the SUGV raw odometry data with the IMU data by maintaining an orientation 

estimate from the integrated IMU angular velocity measurement instead of the estimated turning 

velocity from the SUGV. The ROS navigation software package (move_base) provides a 2-D 

navigation stack that requires input from sensor streams, odometry, and a goal position provided 

by the exploration package; it also outputs safe velocity commands. The ROS navigation 

package consists of both a global and local planner. The global planner operates on a costmap 

provided by Gmapping to find a minimum cost plan between two points on a grid using the 

Dijkstra’s algorithm. The local planner implemented is based on the Dynamic Window 

Approach (DWA) (3, 4). This planner makes use of the global plan and the associated costmap 
2 

as inputs and provides the velocity commands as outputs. The command/data flow between each 

of the individual ROS packages and the ROStoJAUSBridge is shown in figure 3. 

2. ROStoJAUSBridge Overview 

The ROStoJAUSBridge is a software program running on the SUGV payload that allows for 

interaction between the ROS packages also running on the payload computer and the JAUS 

messaging architecture/mobility controller on the SUGV platform computer. It was developed 

to enable communication between the ROS device controllers and autonomy packages, with the 

JAUS messaging architecture controlling the SUGV by providing callbacks to both systems that 

translate corresponding messages between them, as shown in figure 1. 

Figure 1. Message flow between the SUGV and ROS via the ROStoJAUSBridge. 

In this application, the ROStoJAUSBridge connects to the JAUS controller on the SUGV and 

requests status commands parsing the SUGV odometry data. The bridge then publishes this data, 

which includes x and y position, heading information, and translational and rotational velocities, 

to the ROS packages. The ROStoJAUSBridge also subscribes to mobility commands being 

published by the ROS navigation package to autonomously drive the SUGV by sending a “set 

wrench effort” command to JAUS. This is shown in figures 2a and 2b, which further break 

down the block diagram shown in figure 1. 

 
3 

(a) 

(b) 

Figure 2. (a) This depicts the command message flow from ROS to the SUGV to drive 

the SUGV and (b) this depicts the command message flow of the odometry data 

from the SUGV to ROS. 

As depicted in figure 3, the primary functions of the ROStoJAUSBridge are to (1) receive the 

cmd_vel command from the ROS navigation package or move_base and (2) send the odometry 

information to odom_imu_to_tf to be processed for improved IMU data, which is then sent to 

the navigation package, move_base, and to the slam package to be used for mapping. 

What is not shown in figure 3 are the inputs and outputs from ROStoJAUSbridge to the JAUS 

interface on the SUGV as previously discussed. Briefly stated, the cmd_vel command from ROS 

is formatted for JAUS and sent to the SUGV, and the odometry data received from the SUGV is 

parsed and reformatted as a ROS odometry message and sent to the odom_imu_to_tf package. 
4 

Figure 3. This depicts data flow between the ROStoJAUSBridge and various ROS packages. 

In addition, the mobility command published by the ROS navigation node also provides 

information for controlling the flippers on the SUGV. The ROStoJAUSBridge parses the flipper 

control information and also allows for flipper control on the SUGV by sending a “set joint 

effort” command. This is an important capability for maneuvering the SUGV when considering 

stair-climbing and rough terrain for SUGV navigation. It may also be necessary to return the 

flippers to a more compact position when maneuvering the SUGV through narrow passages or 

turning around in tight spaces. 

The ROStoJAUSBridge is currently implemented in the C++ programming language using 

standard C++ libraries, as well as the “Diamondback” distribution of ROS libraries on an Ubuntu 

10.10 Linux system. Currently, the ROStoJAUSBridge is designed to communicate only with the 

SUGV system. However, it can be easily adapted to other UGV platforms using the JAUS 

architecture. More detailed class documentation for the ROStoJAUSBridge API can be found in 

the appendix. 

3. ROStoJAUSBridge Layout 

The program is comprised of two source code files: ROStoJAUSBridge.cpp and 

JAUSmessages.cpp, each with a corresponding header file. ROStoJAUSBridge.cpp is the 

executable software package that handles User Datagram Protocol (UDP) socket formation and 

laser

static_tf

slam

move_base

map_compressor

imu

rostojausbridge

rosout

odom_imu_to_tf

rosout

rosout

rosout

rosout

rosout

rosout

rosout

rosout tf

tf

tf

tf

tf

rostojausbridge/odom

rostojausbridge/cmd_vel

odom_imu_to_tf/odom

tf move_base/goal

imu/data

uncompressed_map

uncompressed_map

scan

scan
5 

publishing/subscribing to ROS topics. ROStoJAUSBridge.cpp uses the JAUS message classes 

defined in JAUSmessages.cpp to send and receive messages to and from the robot. 

Within ROStoJAUSBridge.cpp, the ROStoJAUSBridge class is responsible for connecting to 

and maintaining the UDP socket over which messages will be exchanged between the 

ROStoJAUSBridge and the SUGV. The ROStoJAUSBridge class also defines the node handler 

publisher and subscriber classes that allow for information to pass between the 

ROStoJAUSBridge program and the ROS navigation packages. ROStoJAUSBridge.cpp also 

defines the local_pose_calculator class, which uses a dead reckoning approach to determine the 

robot’s local position and orientation. The local_pose_calulator class uses input data from the 

odometry data received from the SUGV in combination with the improved IMU data received 

from ROS. The ROStoJAUSBridge then returns the robot’s local position and orientation 

information to the ROS Navigation Stack to be used for Global and Local Planning. Figure 3 

depicts the interactions between the various ROS nodes and the ROSToJAUSBridge to 

accomplish this and other tasks. To understand in greater detail how local_pose_calculator 

calculates the robot’s position, please refer to Thrun, Burgard, and Fox’s Probabilistic Robotics 

(2005, p. 125-127). 

The JAUSmessages.cpp source code defines classes that format information into a JAUS 

message and parse messages received from the SUGV. The JAUSmessages header file defines 

global functions that are used extensively in ROStoJAUSBridge. 

Table 1 gives an overview of the messages JAUSmessages.cpp supports at this time. Each 

message has a distinct 2-byte command code (shown in column 2 of table 1 in hexadecimal 

numbers), and each message is designed for one-way communication only—e.g., the 

Query_Velocity_State message is only sent from the Operator Control Unit (OCU) to the SUGV 

and will not be sent the other way. The messages highlighted in blue are user-defined messages, 

meaning these messages are specific to the SUGV platform. User-defined messages differ from 

general JAUS messages, in that the command codes’ most significant quartet will be “F.” For 

more detailed information on how JAUS message packets are structured, and how they can be 

parsed, please refer to the SUGV Interface Design Description (2009, section 4.4) for userdefined messages and the JAUS Reference Architecture Specification (2004, vol. II, part 3) for 

general JAUS messages. 

 
6 

Table 1. JAUS messages supported by ROStoJAUSBridge. 

Message Command Code Message Destination Message Source

Request_Component_Control 0x000D OCU SUGV 

Query_Wrench_Effort 0x2405 SUGV OCU 

Query_Platform_Operational_Data 0x2401 SUGV OCU 

Set_Joint_Efforts 0x0601 SUGV OCU 

Set_Wrench_Effort 0x0405 OCU SUGV 

Report_Global_Pose 0x4402 OCU SUGV 

Report_Velocity_State 0x4404 OCU SUGV 

Report_Camera_Control 0xF008 OCU SUGV 

Report_AntiCollision 0xF00D OCU SUGV 

Report_Motor_Status 0xF00B OCU SUGV 

Report_Battery_Status 0xF004 OCU SUGV 

Report_Platform_Operational_Data 0x4401 OCU SUGV 

Report_Illuminator_Intensity 0xF00A OCU SUGV 

Report_Power_Control 0xF002 OCU SUGV 

Report_Selected_Camera 0x4804 OCU SUGV 

Report_Latch_Control 0xF00E OCU SUGV 

Report_SUGV_Telemetry 0xF00C OCU SUGV 

Report_Calibrate_Information 0xF007 OCU SUGV 

Report_Version_Info 0xF010 OCU SUGV 

Report_Payload_Identification 0xF009 OCU SUGV 

Query_Velocity_State 0x2404 SUGV OCU 

Query_Global_Pose 0x2402 SUGV OCU 

3.1 Using ROStoJAUSBridge

3.1.1 Controlling the SUGV’s Tread and Flipper Motion 

The program currently subscribes and publishes to two topics, which are respectively “cmd_vel,” 

and “odom.” The cmd_vel topic broadcasts ROS messages of type geometry_msgs/Twist, and 

odom broadcasts nav_msgs/Odometry messages. To control the robot’s linear velocity along the 

x-axis in a 3D Cartesian coordinate space, linear.x in the Twist message must be set to a floating 

point value between –3.0 and 3.0 m/s. To control the yaw rate about the z-axis, angular.z must 

be set to a floating point value between –3.0 and 3.0 radians per second. Finally, to control the 

robot’s flipper motion, angular.y must be set to a value between –1.0 and 1.0 radian per second. 
7 

3.1.2 Changing the Robot’s Internet Protocol (IP) Address 

Prior to execution of the ROSto JAUSBridge, the IP address of the robot can be specified in a 

ROS launch file that includes the call to ROStoJAUSBridge. This is the only method by which 

the robot’s IP address can be specified; otherwise, the default robot IP address will be 

“192.168.130.142.” Currently, the robot’s IP address cannot be passed to the program as a 

“main” argument at the point of execution. This may be a feature worth adding to 

ROStoJAUSBridge. 

3.2 Future Tasks and Improvements

The fundamental objective that ROStoJAUBridge was to publish the SUGV’s odometry 

information to ROS and subscribe to the mobility commands to autonomously drive the SUGV. 

As a result, only a few messages sent to and received from the SUGV were actually used or 

parsed. Also, not all the messages that can be sent to or received from the SUGV have been 

implemented in the program at this time. ROStoJAUSBridge will be expanded to support any 

JAUS messages and SUGV-specific messages as needed. 
8 

4. References

1. The JAUS 3.2 Reference Architecture Specification, 

http://www.jauswg.org/base.ine/refarch.html

2. Grisetti, G.; Stachniss, C.; Burgard, W. Improved Techniques for Grid Mapping with RaoBlackwellized Particle Filters. IEEE Transactions on Robotics 2006, 23 (1), 34–46. 

3. Fox, D.; Burgard, W.; Thrun, S. The Dynamic Window Approach to Collision Avoidance. 

IEEE Robotics and Automation 1997, 4 (1). 

4. Gerkey, B. P.; Konolige, K. Planning and Control in Unstructured Terrain. Proc. of the 

ICRA Workshop on Path Planning on Costmaps, Pasadena, CA, 2008. 

5. Quigley, M.; Gerkey, B.; Conley, K.; Faust, J.; Foote, T.; Leibs, J.; Berger, E.; Wheeler, R.; 

Ng, A. ROS: An Open-source Robot Operating System. in Open-source software workshop 

of the Int. Conf. on Robotics and Automation (ICRA), 2009. 
9 

Appendix. ROStoJAUSBridge API
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
32 
33 
34 
35 
36 
37 
38 
39 
40 
41 
42 
43 
44 
45 
46 

List of Symbols, Abbreviations, and Acronyms 

ARL U.S. Army Research Laboratory 

DWA Dynamic Window Approach 

IMU Inertial Measurement Unit 

IP Internet Protocol 

JAUS Joint Architecture for Unmanned Systems 

Ladar Laser Radar 

OCU Operator Control Unit 

ROS Robot Operating System 

SLAM Simultaneous Localization and Mapping 

SUGV small unmanned ground vehicle 

UDP User Datagram Protocol 

 
47 

NO. OF 

COPIES ORGANIZATION 

 1 ADMNSTR 

 ELEC DEFNS TECHL INFO CTR 

 ATTN DTIC OCP 

 8725 JOHN J KINGMAN RD STE 0944 

 FT BELVOIR VA 22060-6218 

 1 US ARMY RSRCH DEV AND ENGRG CMND 

 ARMAMENT RSRCH DEV & ENGRG CTR 

 ARMAMENT ENGRG & TECHNLGY CTR 

 ATTN AMSRD AAR AEF T J MATTS 

 BLDG 305 

 ABERDEEN PROVING GROUND MD 21005-5001 

 1 US ARMY INFO SYS ENGRG CMND 

 ATTN AMSEL IE TD A RIVERA 

 FT HUACHUCA AZ 85613-5300 

 1 US GOVERNMENT PRINT OFF 

 DEPOSITORY RECEIVING SECTION 

 ATTN MAIL STOP IDAD J TATE 

 732 NORTH CAPITOL ST NW 

 WASHINGTON DC 20402 

 2 US ARMY RDECOM TARDEC 

 GROUND VEHICLE ROBOTICS 

 ATTN AMSRD TAR R P FREDERICK 

 ATTN AMSRD TAR S R KANIA 

 6501 E. ELEVEN MILE ROAD RDTA-RS 

 WARREN, MI 48397 

 11 US ARMY RSRCH LAB 

 ATTN IMNE ALC HRR MAIL & RECORDS MGMT 

 ATTN RDRL CII A C RAO 

 ATTN RDRL CIIA J ROGERS 

 ATTN RDRL CII A H NGUYEN 

 ATTN RDRL CII B L SADLER 

 ATTN RDRL CII B L TOKARCIK 

 ATTN RDRL CII B R WINKLER 

 ATTN RDRL CII A S YOUNG 

 ATTN RDRL CII A E STUMP 

 ATTN RDRL CIO LL TECHL LIB 

 ATTN RDRL CIO LT TECHL PUB 

 ADELPHI MD 20783-1197 

 
48 

INTENTIONALLY LEFT BLANK.