Comments (3)
Thanks for starting this. I just wanted to highlight though that I explicitly chose back in 2017 to not straight up migrate ros_control
to ros2, but rather have it as a complete re-write from scratch. This gives us the liberty to not only introduce as many API changes as needed, but also to really feature some of the new concepts in ROS2. I also think we should actually come up with a design document in the style of design.ros2.org
before really starting to migrate all the missing things from ROS1.
One of these ROS2 features which is already a breaking design change:
- Every controller (inheriting from a
ControllerInterface
) has arclcpp_lifecycle::LifecycleNode
. That implicitly gives each controller the functionality of a state machine to easily start/stop/reconfigure the controller.
The things I would love to have and hopefully get soon some time to properly write them in a design doc:
- The controller manager could in my opinion be replaced by a ROS2 component manager. There is some read-up here: https://ubuntu.com/blog/components-vs-plugins-in-ros-2. But essentially, the controller manager is really just the host container for controller plugins, which could be loaded as components. This also gives all the command line tools for free: https://index.ros.org/doc/ros2/Tutorials/Composition/
- As a follow-up to the components, one could force each component to leverage the intra-process communication. This could potentially avoid
JointStateHandles
orJointCommandHandles
all together as with the intra process communication, we really, just like the handles, only share message pointers around. - The controller manager should have a more sophisticated execution management. I am thinking here to provide an API similar to
rclcpp
which allows to start the controller manager with an executor (which is currently already the case). This executor can then be configured such that all controllers areupdate()
d in a specific order or frequency. This would allow to achieve controller chaining, concatenation and variable frequencies.
from ros2_control.
* As a follow-up to the components, one could force each component to leverage the intra-process communication. This could potentially avoid `JointStateHandles` or `JointCommandHandles` all together as with the intra process communication, we really, just like the handles, only share message pointers around.
yes.
This is what I also had in mind when I wrote ros-controls/roadmap#2 (comment).
from ros2_control.
We have started a migration guide section over at https://github.com/ros-controls/control.ros.org/
from ros2_control.
Related Issues (20)
- release_interfaces does not seem to work (or not work as expected) HOT 17
- not able to activate 2 controllers HOT 3
- `KeyboardInterrupt` exception if shutdown before controller manager is found HOT 1
- Passing data to multiple instances of HardwareInterface from control node HOT 8
- Handling of exclusive command interfaces HOT 12
- Document `calculate_dynamics` of mock hardware HOT 3
- Spawner waiting for '/controller_manager' services to be available when they are already available HOT 1
- spawner.py parse parameters with namespace wrong HOT 2
- CI build job humble/testing failed! HOT 2
- [Question / Feature Request] - Is there a way to list _all_ controllers (not just loaded controllers) HOT 5
- Add tests for hardware components exception handling
- i hope to know the relationship of the joint name in urdf
- i hope to know the relationship of the joint name in urdf & ros2 control label & controller config file? HOT 1
- CI build job iron/main failed! HOT 1
- CI build job humble/main failed! HOT 1
- Using controller with collaborative/softening mode. HOT 2
- Multi-Robot Configuration Issue HOT 5
- gazebo plugin not found by controller manager HOT 9
- Flaky transmission_interface tests
- CI build job iron/main failed! HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ros2_control.