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 |
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.