Skip to content
/ iop_core Public

The packages required by all other IOP ROS packages

License

Notifications You must be signed in to change notification settings

fkie/iop_core

Repository files navigation

This repository lets your ROS software communicate with IOP services. You can find an overview of all supported services at doc/other_packages.md.

IOP package Kinetic / Melodic / Noetic Foxy / Galactic
iop_core master foxy-devel
iop_msgs Build Status foxy-devel
iop_platform Build Status foxy-devel
iop_sensing Build Status foxy-devel
iop_sensing_clients Build Status foxy-devel
iop_gui Build Status foxy-devel
iop_jaus_manipulator Build Status
iop_jaus_manipulator_clients Build Status
iop_jaus_mobility Build Status foxy-devel
iop_jaus_mobility_clients Build Status foxy-devel
iop_jaus_sensing Build Status foxy-devel
iop_jaus_sensing_clients Build Status foxy-devel
iop_jaus_ugv Build Status foxy-devel
iop_jaus_ugv_clients Build Status foxy-devel
iop_examples Build Status foxy-devel
iop_node_manager Build Status foxy-devel
iop_wireshark_plugin Build Status

Installation of the ROS/IOP Bridge

Install dependencies for JAUS Toolset

ROS/IOP Bridge uses JAUS Toolset (JTS) to generate basic C++ code from JSIDL definitions of JAUS. You find the JAUS Toolset desciption here. Currently only a part of sources of JTS is used. This part will build while you build the ROS/IOP Bridge sources. For successful build JTS needs follow external software:

Install OpenJKD:

sudo apt-get install default-jdk -y

If you prefer Oracle Java, see here

Set up your ROS environment

Make sure, that your catin workspace is set up correctly:

For easier download of bridge packages install wstool:

sudo apt-get install python-wstool -y

Download the ROS/IOP-Bridge packages

The sourcecode of the ROS/IOP-Bridge is splitted into different Git repositories. Depending on your configuration you need a different set of packages. An overview of existing packages you find here

For download the ROS/IOP-Bridge sources we use the wstool:

If you do not already have an .rosinstall go into you ROS workspace and call
cd catkin_ws/; wstool init src/iop

Merge the iop.rosinstall file and fetch code.

wstool merge -t src/iop https://raw.githubusercontent.com/fkie/iop_core/master/iop.rosinstall
wstool update -t src/iop

Install dependencies

Go to the root folder of your ROS workspace and type:

rosdep install --from-paths src --ignore-src

Build the sources

Go to the root folder of your ROS workspace and type:

catkin build

If some errors occur while JTS build regarding missing pthread and timer the libpthread and librt have to be included. This can be done by replacing LIBS=[] by LIBS=['-lpthread', '-lrt'] in jaustoolset/GUI/templates/Common/SConstruct

Additional Information

For convenient usage of ROS environment use the node_manager of multimaster_fkie. You can install it from https://github.com/fkie/multimaster_fkie using

wstool merge -t src/iop https://raw.githubusercontent.com/fkie/multimaster_fkie/master/fkie_multimaster.rosinstall
wstool update -t src/iop
rosdep install --from-paths src --ignore-src

On each host you run IOP components you need to start a Node Manager. There are two alternatives:

1. JTSNodeManager

This Node Manager is part of JausToolSet and included in iop_core. You can start this Node Manager with following command:

bash rosrun jaustoolset jaus_node_manager.sh start

To exit the script press CTRL+C or type bash rosrun jaustoolset jaus_node_manager.sh stop in a new terminal window. See example below how to integrate the JTS-nodeManagerinto launch-file.

2. IOPNodeManager

This Node Manager is written in Python and is an alternative development to JTSNodeManager. You need to install it as separate package from https://github.com/fkie/iop_node_manager using

wstool merge -t src/iop https://raw.githubusercontent.com/fkie/iop_node_manager/master/iop_node_manager.rosinstall
wstool update -t src/iop
rosdep install --from-paths src --ignore-src
catkin build

Example

For a simple example with turtlesim see fkie_iop_cfg_sim_turtle package.

You find other examples in iop_examples repository.