Difference with openai_ros

This package has been constructed following the blueprint of the openai_ros package, which was developed by the construct. Consequently, they share a foundational package structure. Both packages compartmentalize the Gym environments into distinct task, robot, and gazebo classes. Furthermore, they employ corresponding gazebo_connection and controllers_connection classes to establish communication with Gazebo and the controllers.

However, it’s important to note that while this common framework serves as the foundation, substantial deviations from the original openai_ros package have emerged. These modifications have led to a significant divergence in the codebase. Consequently, it’s essential to acknowledge that not all components maintain backward compatibility. To offer a more precise overview of the contrasting features, the table below highlights the most noteworthy differences between the two implementations:

openai_ros

ros_gazebo_gym

License

ILPG

MIT

Import behaviour

Uses StartOpenAI_ROS_Environment function

Direct environment imports, similarly to other gymnasium environments

Focus

Simulated systems

Simulated and real systems

ROS Noetic compatible

❌

✅

ROS EOL compatible

✅

❌

Uses black/flake8 conventions

❌

✅

Clones environment repository

✅

✅

Installs system dependencies

❌

✅

Builds catkin workspace

❌

✅

Sources catkin workspace

❌

✅

Starts roscore and runs rosinit

❌

✅

Uses failsafe subprocesses

❌

✅

Extensive documentation

✅

✅

Numpy docstrings

✅

❌

Google docstrings

❌

✅

Code API documentation

❌

✅

Welcomes contributions

✅

✅

Passes kwargs to environments

❌

✅

Panda environment

❌

✅

Cartpole environment

✅

❌

Fetch environment

✅

❌

Hopper environment

✅

❌

Husarion environment

✅

❌

Iriwam environment

✅

❌

Moving_cube environment

✅

❌

Parrotdrone environment

✅

❌

Sawyer environment

✅

❌

Shadow_tc environment

✅

❌

Sumit_xl environment

✅

❌

Turtlebot2 environment

✅

❌

Turtlebot3 environment

✅

❌

Wamv environment

✅

❌

As the table above shows, the ros_gazebo_gym package works in ROS noetic, is easier to work with, is fully open-source, and comes with extensive code API documentation. The openai_ros on the other hand, currently contains more robotics environments and is compatible with EOL ROS versions. Nevertheless, new environments can easily be added to the ros_gazebo_gym package by following this guide.

Important

Although the ros_gazebo_gym package diverged significantly from the openai_ros package with some effort, it can be back-ported into the openai_ros package under an MIT license. I’m happy to do this if this achieves enough support from the ROS community.