add support for ros2cli, rqt, rviz2 and rosbag2.
ZhenshengLee opened this issue · 21 comments
This is a great job that makes it possible to use zero_copy.
And the code is of great quality!
Since there are ecal gui tool to test and debug ros2 application.
I wonder if you will add fully support to ros2cli and rqt, so developers can use ros2cli and rviz with this rmw?
Or are threr any possibilities that opensource developers like us can use APIs exposed from ecal that will get things done?
I gave it a simple test, and found some clis and tools not support in v1.0.
ros2cli
- ros2 node list
- ros2 node info
- ros2 topic list
- ros2 topic info
- ros2 topic info -v (Failed to get information by topic for publishers: function not supported by RMW_IMPLEMENTATION)
- ros2 topic hz
- ros2 topic echo
rqt
- rqt_graph
- rqt_top
rosbag2
- rosbag record
- rosbag play
rviz
- launch
- image show
gazebo2
- [ ] pointcloud show
- [ ] urdf show
Edit: pointcloud and urdf show will be linked to #41
ros2cli issues have been resolved in #37.
Some other points from this issue might have been resolved also, but i can't test them at the moment.
Regarding eCAL alternatives for these tools, eCAL ecosystem provides its own recorder/player that could be used instead of rosbag, it also provides monitor that can be used to list topics and their info, hz, and also to echo their messages (in binary form for dynamic typesupport and in both binary and human readable form for protobuf support), it also supports plugins that could be used to visualize data.
@brakmic-aleksandar thanks a lot.
Some other points from this issue might have been resolved also, but i can't test them at the moment.
I will give it a review and test later.
eCAL ecosystem provides its own recorder/player that could be used instead of rosbag
it also supports plugins that could be used to visualize data.
As you can see in Originally posted by @rex-schilasky in https://github.com/continental/ecal/issues/115#issuecomment-720419171 eCAL is designed as a type agnostic middleware, and is originally used for camera based ADAS of your company.
You are right about great tools of eCAL, and it's true that those tools lack of full support to robotics application.
For example, with plugins we can get pointcloud in the monitor, but it's not possible with monitor to show TF trees and multi-sensor msgs like rviz.
With ros2 tools, it's easy enough.
Got it, i'll see what can i do regarding rviz and ros2bag support.
Got it, i'll see what can i do regarding rviz and ros2bag support.
@brakmic-aleksandar Great!
According to my experience in ros2/rmw_iceoryx#46 ros2/rmw_iceoryx#53
you may use https://github.com/ros2/system_tests for a comprehensive test.
Reopening, accidentally closed it with pull request.
@brakmic-aleksandar I tried to test the code, and find that the feature you add in https://github.com/continental/ecal/tree/feature/subscriber_count did not get merged into master.
Open a pull request please.
@brakmic-aleksandar I updated test result in the top list.
the issue Failed to get information by topic for publishers: function not supported by RMW_IMPLEMENTATION
should be resolved.
see /rmw_ecal/rmw_ecal_shared_cpp/src/get_topic_endpoint_info.cpp
rmw_ret_t rmw_get_publishers_info_by_topic(const char * /* implementation_identifier */,
const rmw_node_t * /* node */,
rcutils_allocator_t * /* allocator */,
const char * /* topic_name */,
bool /* no_mangle */,
rmw_topic_endpoint_info_array_t * /* publishers_info */)
{
UNSUPPORTED;
}
@brakmic-aleksandar I tried to test the code, and find that the feature you add in https://github.com/continental/ecal/tree/feature/subscriber_count did not get merged into master. Open a pull request please.
Wierd, i've just checked the code out and it seems to be merged correctly.
@brakmic-aleksandar I updated test result in the top list. the issue
Failed to get information by topic for publishers: function not supported by RMW_IMPLEMENTATION
should be resolved.see
/rmw_ecal/rmw_ecal_shared_cpp/src/get_topic_endpoint_info.cpp
rmw_ret_t rmw_get_publishers_info_by_topic(const char * /* implementation_identifier */, const rmw_node_t * /* node */, rcutils_allocator_t * /* allocator */, const char * /* topic_name */, bool /* no_mangle */, rmw_topic_endpoint_info_array_t * /* publishers_info */) { UNSUPPORTED; }
Yeah, implementing this should resolve rosbag issues aswell, but it will require some additions to eCAL itself, so it might take a bit for it to be implemented.
Added support for ros2 topic info -v with #38 (will require eCAL version from this pr https://github.com/continental/ecal/pull/483 which isn't merged yet), rosbag will require some additional work though.
EDIT: Never mind, i just forgot to return value from one of functions, rosbag seems to be working now aswell!
rqt_graph seems to be working aswell.
@ZhenshengLee do you mind testing rviz? I can't do it at the moment.
@brakmic-aleksandar I tried to test the code, and find that the feature you add in https://github.com/continental/ecal/tree/feature/subscriber_count did not get merged into master. Open a pull request please.
Wierd, i've just checked the code out and it seems to be merged correctly.
I try to create a pr, and the commit has not been merged into master, look at the screenshot below.
Added support for ros2 topic info -v with #38 (will require eCAL version from this pr continental/ecal#483 which isn't merged yet), rosbag will require some additional work though.
I will try to cherry-pick this commit in my fork of eCAL (which is based on version 5.8.10 or older) and give it a test.
#38 could be merged after your self-test
@brakmic-aleksandar I tried to test the code, and find that the feature you add in https://github.com/continental/ecal/tree/feature/subscriber_count did not get merged into master. Open a pull request please.
Wierd, i've just checked the code out and it seems to be merged correctly.
I try to create a pr, and the commit has not been merged into master, look at the screenshot below.
Hey,
Commit containing code of feature/subscriber_count has been merged in master using this commit, it has different hash than one in feature/subscriber_count i guess whoever merged it used squash method, rather than rebase. Also from what i could see your fork also contains code you are trying to merge, do you maybe have some issues linking to those new features?
Added support for ros2 topic info -v with #38 (will require eCAL version from this pr continental/ecal#483 which isn't merged yet), rosbag will require some additional work though.
I will try to cherry-pick this commit in my fork of eCAL (which is based on version 5.8.10 or older) and give it a test.
#38 could be merged after your self-test
Merged. :)
Commit containing code of feature/subscriber_count has been merged in master using this commit, it has different hash than one in feature/subscriber_count i guess whoever merged it used squash method, rather than rebase.
I see, I am a rebaser and cli user(commits are squashed locally with GUI)
do you maybe have some issues linking to those new features?
Yes, confilicts and compiling issues happen when sync(rebase) with upstream of eCAL. See this issue https://github.com/continental/ecal/issues/506 I just created.
I will try to cherry-pick this commit in my fork of eCAL (which is based on version 5.8.10 or older) and give it a test.
Now I will update my fork after https://github.com/continental/ecal/issues/506 being resolved.
Now I will update my fork after continental/ecal#506 being resolved.
this pr continental/ecal#483
https://github.com/continental/ecal/issues/506 is resolved and clear, I update the master of my fork, and master of eCAL within https://github.com/continental/ecal/pull/483 cannot be compiled with master branch of rmw_ecal.
the error may be related with the new changes in v5.10.0 https://github.com/continental/ecal/pull/487
BTW, the version management should begin, branches could be created to support different needs, we will talk about this in #40
/home/zs/zs_ws/ga_ros2/ga_deps/rmw_ecal/rmw_ecal_shared_cpp/src/internal/graph.hpp: In function ‘eCAL::rmw::pb::GraphInfo::Publishers eCAL::rmw::Graph::GetPublishers(const string&, const string&)’:
/home/zs/zs_ws/ga_ros2/ga_deps/rmw_ecal/rmw_ecal_shared_cpp/src/internal/graph.hpp:256:11: error: ‘SServiceInfo’ is not a member of ‘eCAL’; did you mean ‘SServiceAttr’?
256 | eCAL::SServiceInfo service_info;
| ^~~~~~~~~~~~
| SServiceAttr
/home/zs/zs_ws/ga_ros2/ga_deps/rmw_ecal/rmw_ecal_shared_cpp/src/internal/graph.hpp:263:42: error: ‘service_info’ was not declared in this scope; did you mean ‘ServiceInfo’?
263 | client.Call("", "GetPublishers", "", service_info, response);
| ^~~~~~~~~~~~
| ServiceInfo
The service API changes for 5.10.x you can find here.
I'll try to update it ASAP.
Updated.
@ZhenshengLee do you mind testing rviz? I can't do it at the moment.
rviz2 showing image works well!
ros2 run v4l2_camera v4l2_camera_node
rviz2
I tried to test pointcloud and urdf visualization, but there are things uncommon during usage with gazebo.
I think this issue should be closed, and #41 be created to track issue for working with gazebo.
Thanks for all!