From 1176dd4526cf519984f5bbe0090fdafaadc71b31 Mon Sep 17 00:00:00 2001 From: David Leins Date: Thu, 16 Mar 2023 14:00:01 +0100 Subject: [PATCH] Move to semver and bump version to 0.4.0 starting from this commit all sub-packages in mujoco_ros_pkgs will have the same version number. Semver standard dictates that unstable APIs should have major version number 0. Package versions thus shifted from 3.1.0 to 0.3.1 and now got bumped to 0.4.0. Changelogs use the previous numbers shifted to have more consistent changelogs, even if the versions in the package xmls remain unshifted for previous commits! --- mujoco_ros/CHANGELOG.md | 158 ++++++++++++++++++++++++++------ mujoco_ros/package.xml | 4 +- mujoco_ros_control/CHANGELOG.md | 2 +- mujoco_ros_control/package.xml | 4 +- mujoco_ros_msgs/package.xml | 2 +- mujoco_ros_pkgs/package.xml | 2 +- mujoco_ros_sensors/CHANGELOG.md | 2 +- mujoco_ros_sensors/package.xml | 4 +- 8 files changed, 140 insertions(+), 38 deletions(-) diff --git a/mujoco_ros/CHANGELOG.md b/mujoco_ros/CHANGELOG.md index 6bd2527..9e2c25e 100644 --- a/mujoco_ros/CHANGELOG.md +++ b/mujoco_ros/CHANGELOG.md @@ -1,39 +1,141 @@ -# Unreleased + +## [0.4.0] - 2023-03-16 -## Changes -1. Better setup and cleanup in init function. This enables running the application multiple times (consecutively) when used as library: - - exitrequest is set to 0 on start. - - if ros time is not zero, the simulation is initialized with the current ros time as start time. - - run i.e. the pause flag is now explicitly set according to the unpause ros param. - - The services are explicitly unregistered on shutdown and the static services list is cleared. -2. Async spinner is now manually shutdown and ros::shutdown is called on server node termination. -3. Added unit tests for `mujoco_ros` single environment library functions. -4. Added possibility to set initial joint positions and velocities for ball and free joints (i.e. joints with more than one DoF) and edited tests to reflect the changes. -5. Changed the way single and parallel env is handled. Instead of using separate functions, most library function check the running simulation type (PARALLEL or SINGLE). In case of parallel env execution, The mj_env_ (renamed to main_env_) variable now contains a pointer to the selected main environment, which will be used for rendering, if enabled. +### Added +* NO_OPTIM and ENABLE_SANITIZER cmake options for valgrind/asan dev build optimization. +* Central launchfile for the server to include from other packages. +* `no_x` parameter to completely disable OpenGL. +* Service calls to set and get gravity. +* Service call to fetch loadrequest state over ROS. +* Option to disable offscreen rendering. +* Made camera stream resolutions configurable. +* Callback to notify plugins of a geom change at runtime. -## Fixes -1. Fixed step counter ignoring multiple steps during synchronization if desynchronized. -2. Fixed wrong declaration of publishSimTime in header. -3. Fixed bootstrap_launchargs not being passed on to the ns_bootstrapping node +### Changed +* Use same package version for all packages in mujoco_ros_pkgs, following common versioning conventions. +### Fixed +* Time reset issue caused by delayed ros clock message processing. +* Out of bounds quaternion array access in debug print. +* Make sure env name is not an empty string. +* Memory leaks caused by wrong mjModelPtr and mjDataPtr deallocation. +* Sensor tests. +* Disable x usage in tests. +* Now reusing offscreen buffer glfw window on reset. +* Freeing textures from GPU manually causing an error. +* Stopping simulation on model compilation warning if in headless mode. +* Not setting ctrl signal when loading a keyframe. +* Render callbacks using the wrong scene (#17). +### Refactored +* Updated and improved tests. +* More thorough memory deallocation. -# 3.0.0 +Contributors: @DavidPL1, @fpatzelt -## Changes -1. Changed how `MujocoEnv` is initialized/loaded/reloaded/resetted. + +## [0.3.1] - 2023-01-17 -The `mujoco\_server` node will search for a `ns` (robot namespace) parameter, which defaults to "/", i.e. ROS root (no sub-namespace). The single `MujocoEnv` receives this namespace to initialize a ros `NodeHandle` in its assigned namespace. By passing a pointer of the handle to its plugins, the plugins can fetch the namespace from the handle or simply use the handle to register topics and services in the correct namespace. +### Added +* Service call for reset. +* Unit tests for single environment library functions. +* Added support for multi-DoF for initial positions and velocities (#3). +* Added support for supplying a model as rosparam (generated e.g. by urdf2mjcf). +* Ensures compatibility with MuJoCo 2.2.2. +* Adds interprocedural optimization compile policy. +* Service call to get/set bodys with freejoints. +* Service call to set geom properties (mass, friction, size, geom_type). +* Allows using wall time instead of ROS time (set `/use_sim_time` to false). +* Adds additional "unbound" speed mode to run as fast as possbile. +* Adds offscreen rendering RGB, depth, and/or segmentation mask images. +* Added `eval/train` mode settings. +* Added `admin_hash` for permission checks in eval mode. -Introduced new reset and reload function in `MujocoEnv` that trigger the respective functions of its members. -Plugin parsing and initialization moved to `MujocoEnv`. -Due to the changes in `MujocoPlugin`, plugins need to be rebuilt (hence the major version bump). +### Changed +* `SINGLE` and `PARALLEL` mode are distinguished by a mode variable in shared code instead of requiring separate lib function calls. +* Step service call changed to be an action call. +* **cmake**: Renamed mujoco_INCLUDE_DIR -> mujoco_INCLUDE_DIRS. +* Time is set to 0 on reset. +* Adds more general debug info. -2. Added some more documentation. -3. Added `lastStageCallback` function to `MujocoPlugin` which can be used to define behavior which should be run at the end of a simulation step. Note that this function gets called by the `mujoco\_ros` simulation loop and not by the mujoco engine, hence it won't be called in between engine sub-steps. -4. Changed mjENABLED_ros/mjDISABLED_ros definitions to not rely on static context. -## Fixes -1. Removed `collision_function` typedef, which is a duplicate defenition of mjfCollision. -2. Removed `runContactFilterCbs` from `MujocoEnv`, since contact filter callbacks fully override the standard behavior. For contact filtering a similar approach to collision function registration should be used. +### Fixed +* Not counting multiple steps in CPU sync. +* Step counting depending on `num_sim_steps` enabled or disabled. +* Wrong declaration of `publishSimTime`. +* Pose quaternion is now normalized before application to prevent setting invalid quaternions in `SetModelState`. +* catkin_lint / cmake issues. +* Missing package.xml dependencies. +* Set clock publisher queue to 1 (#7). +* Internal ROS time updates (#8). +* Transitive dependency propagation with catkin. +* Avoid publishing /clock twice per cycle. +* Makes sure destructors of plugins and envs are called on shutdown (#12). +* Instantly replacing a rosparam loaded xml. +* `get_geom_properties` service not being advertised (#16). +* Cross-thread ints and bools are now atomic. +* slow_down not being applied. +* Missing test world. + + +### Performance Improvements +* Improved multi-threading concept for `PARALLEL` mode. + + +### Refactored +* Init function improvement and cleanup. +* Improved `Get/SetModelState` service: + - Flags are now used to specify which parts of the state message are used to update the state. +* Mutex usage. +* Rendering functionallity making it much more runtime efficient. + +Contributors: @DavidPL1, @rhaschke, @fpatzelt, @lbergmann + + +## [0.3.0] - 2022-06-10 + +### Added +* Added configurable initial joint velocities. +* `MujocoEnv` uses namespacing coherent with ROS namespaces. +* Added `lastStageCallback` to define behavior for plugins at the very end of a simulation step. + +### Fixed +* Moved mjENABLED_ros/mjDISABLED_ros definitions to non-static context (#2). +* Removed `collision_function` typedef (duplicate of `mjfCollision`). + +### Removed +* Removed `runContactFilterCbs` since setting a contact filter callback fully overrides default behavior. + + +Contributors: @DavidPL1, @balandbal + + +## 0.2.0 - 2022-05-30 + +### Added +* Plugin loading. +* Service call to shutdown. +* Service call to pause/unpause. +* Headless mode and number of steps to run before termination as optional argument. +* Safety wrappers for plugin loading and execution. +* Exporting mujoco_ros as library for external usage. +* Introduced parallel environments. + +### Changed +* Now using boost::shared_ptr for mjModel and mjData instances. +* Added licensing information. +* Added build instructions. +* How plugins are retrieved from the parameter server. + +### Fixed +* Several bugs related to ROS time publishing. +* Disabled backward stepping (impractical with ROS time). +* Setting initial joint positions. + +Contributors: @DavidPL1 + +[0.4.0]: https://github.com/ubi-agni/mujoco_ros_pkgs/compare/0.3.1...0.4.0 +[0.3.1]: https://github.com/ubi-agni/mujoco_ros_pkgs/compare/0.3.0...0.3.1 +[0.3.0]: https://github.com/ubi-agni/mujoco_ros_pkgs/compare/0.2.0...0.3.0 +[0.2.0]: https://github.com/ubi-agni/mujoco_ros_pkgs/compare/6c8bbe2...0.2.0 diff --git a/mujoco_ros/package.xml b/mujoco_ros/package.xml index f30db93..cf7ad7d 100644 --- a/mujoco_ros/package.xml +++ b/mujoco_ros/package.xml @@ -1,7 +1,7 @@ mujoco_ros - 3.1.0 + 0.4.0 The mujoco_ros package David P. Leins @@ -15,7 +15,7 @@ roscpp pluginlib - mujoco_ros_msgs + mujoco_ros_msgs tf2 tf2_ros tf2_geometry_msgs diff --git a/mujoco_ros_control/CHANGELOG.md b/mujoco_ros_control/CHANGELOG.md index 65e8e01..86dc561 100644 --- a/mujoco_ros_control/CHANGELOG.md +++ b/mujoco_ros_control/CHANGELOG.md @@ -1,4 +1,4 @@ -# 3.0.0 +# 0.3.0 ## Changes 1. Updated `MujocoRosControlPlugin` according to changes in `MujocoPlugin` made in `mujoco\_ros` version 3.0.0. diff --git a/mujoco_ros_control/package.xml b/mujoco_ros_control/package.xml index b2d4c6c..3945c34 100644 --- a/mujoco_ros_control/package.xml +++ b/mujoco_ros_control/package.xml @@ -1,7 +1,7 @@ mujoco_ros_control - 3.0.0 + 0.4.0 The mujoco_ros_control package https://github.com/DavidPL1/mujoco_ros_pkgs @@ -29,7 +29,7 @@ joint_limits_interface angles - mujoco_ros + mujoco_ros diff --git a/mujoco_ros_msgs/package.xml b/mujoco_ros_msgs/package.xml index e954031..9820d00 100644 --- a/mujoco_ros_msgs/package.xml +++ b/mujoco_ros_msgs/package.xml @@ -1,7 +1,7 @@ mujoco_ros_msgs - 2.1.0 + 0.4.0 mujoco_ros_msgs provides message files for interaction with a mujoco_ros simulation David Leins diff --git a/mujoco_ros_pkgs/package.xml b/mujoco_ros_pkgs/package.xml index 0dea3c4..517027e 100644 --- a/mujoco_ros_pkgs/package.xml +++ b/mujoco_ros_pkgs/package.xml @@ -1,7 +1,7 @@ mujoco_ros_pkgs - 1.0.0 + 0.4.0 Interface for using ROS with the MuJoCo simulator. BSD diff --git a/mujoco_ros_sensors/CHANGELOG.md b/mujoco_ros_sensors/CHANGELOG.md index c0e5ee4..9bbf96e 100644 --- a/mujoco_ros_sensors/CHANGELOG.md +++ b/mujoco_ros_sensors/CHANGELOG.md @@ -1,4 +1,4 @@ -# 2.0.0 +# 0.2.0 - Overhaul of sensor publisher model: a SensorConfig struct was added, holding the frame_id, a noise model (mean and standard deviation) for each sensor dimension, and references to ground truth publisher and value+noise publisher. - A noise model can now be registered via service call. - If train mode is active (eval_mode is unset), a sensor will publish to two topics: one without noise (sensor_name with a '_GT' suffix) and one which might contain noisy data, if a noise model has been registered. diff --git a/mujoco_ros_sensors/package.xml b/mujoco_ros_sensors/package.xml index 507233f..54b4015 100644 --- a/mujoco_ros_sensors/package.xml +++ b/mujoco_ros_sensors/package.xml @@ -1,7 +1,7 @@ mujoco_ros_sensors - 2.0.0 + 0.4.0 Sensor plugin for mujoco_ros David P. Leins @@ -12,7 +12,7 @@ David P. Leins catkin - mujoco_ros + mujoco_ros mujoco_ros_msgs tf2 tf2_geometry_msgs