Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Serial (Dependency Missing) [Meta Issue] #21

Open
moriarty opened this issue Jun 13, 2023 · 7 comments
Open

Serial (Dependency Missing) [Meta Issue] #21

moriarty opened this issue Jun 13, 2023 · 7 comments
Assignees

Comments

@moriarty
Copy link
Contributor

Creating one top issue to track this and Closing #3 & closing #9 Which were duplicates for Foxy and Humble.

Unfortunately Foxy reaches EOL next week, so I do not expect serial will not be available in time for the last sync.

The underlying Issue is the same, the dependency https://github.com/wjwwood/serial has not been released to ROS 2.
See wjwwood/serial#204 and wjwwood/serial#209 and wjwwood/serial#209 (comment)

@wjwwood has mentioned wjwwood/serial#133 (comment) and wjwwood/serial#231 (comment) that he would like to move serial to a pure CMake package, there is a branch here cottsay/serial@4d5be00 which does this. I've tried to collect these issues here wjwwood/serial#283

There was a request from @SteveMacenski wjwwood/serial#204 (comment) to move the serial repo to it's own location, which I've opened as an issue here wjwwood/serial#284

The Robotiq gripper isn't the only package which has been using serial, @tonybaltovski pointed out here wjwwood/serial#209 (comment) that they're working on porting some other packages to ROS 2

There are several branches and forks which can be found from going through the above issues.
Currently we've been using this package with this branch, on this fork https://github.com/tylerjw/serial/tree/ros2 which was started off of this open PR wjwwood/serial#209 which is pretty close to this https://github.com/RoverRobotics-forks/serial-ros2

There alternative mentioned here: wjwwood/serial#204 (comment) is not a drop in replacement, it uses boost asio which throws different exceptions.

Another alternative is to use the debian which is released as libcxx-serial-dev which comes from this PR wjwwood/serial#231 on this fork & branch https://github.com/leamas/serial/tree/pr

But all the different branches and forks are slightly diverging and we'll need to inspect the commit history and test.
We know the branch we've been using is pretty well tested.

@moriarty moriarty self-assigned this Jun 13, 2023
moriarty added a commit that referenced this issue Jun 13, 2023
This branch is for testing with `libcxx-serial-dev`
See #21

This may be more out of date than the upstream

Signed-off-by: Alex Moriarty <alex.moriarty@picknik.ai>
@Ryanf55
Copy link

Ryanf55 commented Jun 16, 2023

Let me know how I can help.

The asio version worked well in a few vehicles I used. Considering that the STL's upcoming support of networking is modeled after asio, I recommend trying to go that route. Many people start with polling and blocking reads, but the async style support is more performant and I think is more familiar to ROS devs that use a pub/sub model.

@moriarty
Copy link
Contributor Author

Let me know how I can help.

The asio version worked well in a few vehicles I used. Considering that the STL's upcoming support of networking is modeled after asio, I recommend trying to go that route. Many people start with polling and blocking reads, but the async style support is more performant and I think is more familiar to ROS devs that use a pub/sub model.

@Ryanf55 did you use this version: https://github.com/ros-drivers/transport_drivers/tree/main/serial_driver

I did start going down that path, I'll see if I still have the branch around locally.

As I mentioned above, we've been using this branch: https://github.com/tylerjw/serial/tree/ros2 and know works and hadn't planned all the extra testing if we do swap to serial... I have a robotiq gripper on an arm and I need to ask a colleague with the serial adaptor to run hardware tests for me... but it does seem that we should be moving away from the https://github.com/wjwwood/serial dependency if wjwwood/serial#284 is not addressed or if wjwwood/serial#285 merged

@Ryanf55
Copy link

Ryanf55 commented Jun 16, 2023

I've used both, deployed both libraries in the field, ran at 115k and 230k baud rates. Both worked. I was chasing down some communication issues with the other device, which turned out to be a fault in the embedded device.

I know this one works: https://github.com/iwelch82/serial-ros2

It's interesting, I already add PIC, the commit here: tylerjw/serial@d8d1606
is the same idea as what I did here:
iwelch82/serial-ros2@8b6c14d

This just shows the need to consolidate efforts and stop forking basic drivers like serial.

The nice thing about having it communicate over ROS transport for the read/write bytes means you can now use ROSbag to log raw data. Unlike CAN or ethernet which have nice tools (candump and tcpdump), there doesn't seem to be a good way to capture serial traffic due to exclusive ownership when opening the port.

@Ryanf55
Copy link

Ryanf55 commented Jun 17, 2023

Using asio might be a bit tricky. With asio taking on the approach to use C++20 for the features like coroutine in their 1.17.0 release, which seem really great to use, since ROS 2 humble is on C++17, I don't know if the ROS organization would allow a bump to C++20 minimum for the serial driver. Perhaps we could have a chat, next week, to determine an approach? I'm on the ROS discord as RyanF.

moriarty added a commit that referenced this issue Jun 20, 2023
- Run the same script that packages in ros-controls github org use
- https://rtw.stoglrobotics.de/master/use-cases/ros_packages/configure_repository.html

These will likely fail due to serial not being released for ROS2
- see #21
- wjwwood/serial#204
- wjwwood/serial#283

Signed-off-by: Alex Moriarty <alex.moriarty@picknik.ai>
moriarty added a commit that referenced this issue Jun 21, 2023
- we would prefer not to use the fork but we need to turn on CI
- when wjwwood/serial#204 or
  wjwwood/serial#283 are closed we can switch

- related to #21

Signed-off-by: Alex Moriarty <alex.moriarty@picknik.ai>
moriarty added a commit to ros2-gbp/ros2_robotiq_gripper-release that referenced this issue Jul 17, 2023
This is a quick work around to unblock releasing robotiq_description
- PickNikRobotics/ros2_robotiq_gripper#21
- serial has not been released since melodic

Will update the robotiq_driver to use alternative and release

Signed-off-by: Alex Moriarty <alex.moriarty@picknik.ai>
moriarty added a commit to Kinovarobotics/ros2_kortex that referenced this issue Aug 15, 2023
This vcs step is no longer required because the robotiq_description
package has been released.

This vcs step causes confusion because it pulls in all of the robotiq
repository and part of it depends on serial which hasn't been released
for ROS 2.

See this issue:
PickNikRobotics/ros2_robotiq_gripper#21

Signed-off-by: Alex Moriarty <alex.moriarty@picknik.ai>
@atomoclast
Copy link

Hi all,

I see this is still an open issue. Is there a proposed workaround for getting this repo to build for use in ROS2? I'm definitely hitting the wall of build failures since there's no serial package that seems valid?

@karanchahal
Copy link

I see this issue as well

@itzikcyberbee
Copy link

i also suffer from this, still no fix?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants