client_serial_link

ROS2 action clients for communicating with the server_serial_link repository.

https://github.com/woolfrey/client_serial_link

Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (11.0%) to scientific vocabulary

Keywords

action-client control cpp robot ros2
Last synced: 6 months ago · JSON representation ·

Repository

ROS2 action clients for communicating with the server_serial_link repository.

Basic Info
  • Host: GitHub
  • Owner: Woolfrey
  • License: gpl-3.0
  • Language: C++
  • Default Branch: master
  • Homepage:
  • Size: 26.1 MB
Statistics
  • Stars: 1
  • Watchers: 2
  • Forks: 0
  • Open Issues: 0
  • Releases: 3
Topics
action-client control cpp robot ros2
Created 12 months ago · Last pushed 6 months ago
Metadata Files
Readme License Citation

README.md

:incoming_envelope: Serial Link Action Client

This package contains ROS2 action clients designed to interact with the seriallinkaction_server package. The action and message definitions are defined in the seriallinkinterfaces package. It is primarily an example of how to write a client and use the action server(s) to control a robot. You may use them as is, modify them to suit your needs, or write your own from scratch.

:sparkles: Features:

  • Seemless interaction with the serial link action client package,
  • Joint space & Cartesian control,
  • Helper functions to loading pre-defined joint configurations, and endpoint poses for specific robots & tasks.
  • Templated ActionClientInterface & ActionClientBase classes for quick implementation of your own custom action clients.

[!TIP] Check out this repository for an example of how to run the action servers & action clients to control a robot.

:compass: Navigation

:clipboard: Requirements

[!NOTE] This package was built and tested using Ubuntu 22.04, and ROS2 Humble.

:floppy_disk: Installation

Your directory structure should end up looking something like this: ros2_workspace/ ├── build/ ├── install/ ├── log/ └── src/ ├── client_serial_link/ ├── interface_serial_link/ └── server_serial_link/ (optional)

  1. In the src/ directory of your ROS2 workspace, clone the interfaces repository:

git clone https://github.com/Woolfrey/interface_serial_link.git

  1. Clone the action client repository:

git clone http://github.com/Woolfrey/client_serial_link.git

  1. Navigate back to the root of your ROS2 workspace and build:

colcon build

  1. Source the local directory (if you haven't yet altered your .bashrc file):

source ./install/setup.bash

  1. Check successful installation:

ros2 pkg list

If you scroll down the list, you should see both serial_link_action_client, and serial_link_interfaces.

:top: Back to Top.

:cardfilebox: Classes

This package contains several classes that implement the action clients for actions defined in interface repository.

  • The ActionClientInterface provides polymorphism for interacting with actions of different types.
  • The ActionClientBase is a templated class providing a standardised stucture to all action clients.
  • The other classes, e.g. FollowTwist, TrackCartesianTrajectory, etc. implement the constructors and result_callback methods specific to the actions.

:top: Back to Top.

:satellite: Nodes

This package contains nodes with pre-configured clients that you can use. You may apply them as is, modify them to suit your task, or write your own from scratch. They are executed via ros2 run, rather than ros2 launch, as the latter doesn't allow you to enter command prompts in the terminal for some reason :shrug:

For example, in my Kuka velocity control, I would run: ros2 run serial_link_action_client follow_transform_client --ros-args --params-file "config/iiwa_joint_configurations.yaml" --params-file "config/tolerances.yaml"

The client executables use helper functions specified in the utilities.h header file to load pre-defined joint configurations: /**: ros__parameters: number_of_joints: 7 # We need this to split up the position arrays joint_config_names: ["home", "ready", "multi"] # We need to declare them here so we can search them by name home: positions: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] times: [5.0] ready: positions: [1.844, -0.656, -1.782, -1.383, 0.060, 0.0311, -0.705] times: [5.0] multi: positions: [2.570, -0.484, -1.865, -1.495, 1.063, -0.699, -1.500, 1.844, -0.656, -1.782, -1.383, 0.060, 0.0311, -0.705, 0.000, 0.000, 0.000, 0.000, 0.000, 0.0000, 0.000] times: [4.0, 8.0, 12.0] and pre-defined Cartesian poses: /**: ros__parameters: pose_names: ["up", "down", "left", "right"] # We need to declare them here so we can search them by name up: poses: [0.0, 0.0, 0.2, 0.0, 0.0, 0.0] times: [3.0] reference: "relative" down: poses: [0.0, 0.0, -0.2, 0.0, 0.0, 0.0] times: [3.0] reference: "relative" left: poses: [0.0, 0.2, 0.0, 0.0, 0.0, 0.0] times: [3.0] reference: "relative" right: poses: [0.0, -0.2, 0.0, 0.0, 0.0, 0.0] times: [3.0] reference: "relative" These are inserted in to a std::map<std::string, std::vector<serial_link_interfaces::JointTrajectoryPoint>>, and std::map<std::string, std::vector<serial_link_interfaces::CartesianTrajectoryPoint>> so that you can easily search for and add them to the action goal field.

The tolerances.yaml file contains parameters that are used as part of the various goal fields in the different actions: /**: ros__parameters: tolerance: timeout: 0.1 # s joint: [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5] # rad pose: position: 0.2 # m orientation: 0.35 # rad twist: linear: 0.5 # m/s angular: 1.0 # rad/s

Follow Transform Client

This client loads both the TrackJointTrajectory client and the FollowTransform client. The former lets you move the robot in to pre-defined joint configurations. The latter, when activated, will follow a tf2_ros::Transform that is somehow broadcast over the ROS2 network. The server is supposed to control the robot so that the endpoint of the robot follows this transform in real time.

To run this client use something like: ros2 run serial_link_action_client follow_transform_client --ros-args --params-file "config/joint_configurations.yaml" --params-file "config/tolerances.yaml"

Follow Twist Client

This client loads the TrackJointTrajectory and FollowTwist clients. You use the former to move the robot in to a pre-defined joint configuration. Then the latter is used to subscribe to a geometry_msgs::msg::TwistStamped that is somehow being published over the ROS2 network. The server is supposed to control the endpoint of the robot arm to follow this twist command in real time.

To run this client use something like: ros2 run serial_link_action_client follow_twist_client --ros-args --params-file "config/joint_configurations.yaml" --params-file "config/tolerances.yaml"

Track Trajectory Client

This client has both the TrackJointTrajectory and TrackCartesianTrajectory actions. The first is used to move the robot to different joint configurations. The second specifies CartesianTrajectoryPoint waypoints so the corresponding action server will generate and follow a trajectory defined by them.

To run, use something like: ros2 run serial_link_action_client trajectory_tracking_client --ros-args --params-file "$config/endpoint_poses.yaml" --params-file "config/joint_configurations.yaml" --params-file "config/tolerances.yaml" (Note the extra endpoint_poses.yaml argument compared to the previous two).

:top: Back to Top.

:handshake: Contributing

Contributions to this repositore are welcome! Feel free to: 1. Fork the repository, 2. Implement your changes / improvements, then 3. Issue a pull request.

If you're looking for ideas, you can always check the Issues tab for those with :raising_hand: [OPEN]. These are things I'd like to implement, but don't have time for. It'd be much appreciated, and you'll be tagged as a contributor :sunglasses:

:top: Back to Top.

:bookmark_tabs: Citing this Repository

If you find this code useful, spread the word by acknowledging it. Click on Cite this repository under the About section in the top-right corner of this page :arrowupperright:.

Here's a BibTeX reference: @software{woolfrey_serial_link_action_client_2025 author = {Woolfrey, Jon}, month = apr, title = {{S}erial {L}ink {A}ction {C}lient}, url = {https://github.com/Woolfrey/client_serial_link}, version = {1.0.0}, year = {2025} } Here's the automatically generated APA format: Woolfrey, J. (2025). Serial Link Action Client (Version 1.0.0). Retrieved from https://github.com/Woolfrey/client_serial_link

:top: Back to Top.

:scroll: License

This software package is licensed under the GNU General Public License v3.0 (GPL-3.0). You are free to use, modify, and distribute this package, provided that any modified versions also comply with the GPL-3.0 license. All modified versions must make the source code available and be licensed under GPL-3.0. The license also ensures that the software remains free and prohibits the use of proprietary restrictions such as Digital Rights Management (DRM) and patent claims. For more details, please refer to the full license text.

:top: Back to Top.

Owner

  • Name: Jon Woolfrey
  • Login: Woolfrey
  • Kind: user
  • Location: Genova, Italy
  • Company: Italian Institute of Technology

Robotics engineer.

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: "Woolfrey"
  given-names: "Jon"
  orcid: "https://orcid.org/0000-0001-5926-5669"
title: "Serial Link Action Client"
version: 1.0.0
date-released: 2025-04-10
url: "https://github.com/Woolfrey/client_serial_link"

GitHub Events

Total
  • Release event: 2
  • Push event: 28
  • Public event: 1
  • Pull request event: 4
  • Create event: 3
Last Year
  • Release event: 2
  • Push event: 28
  • Public event: 1
  • Pull request event: 4
  • Create event: 3

Issues and Pull Requests

Last synced: 12 months ago

All Time
  • Total issues: 0
  • Total pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Total issue authors: 0
  • Total pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
Pull Request Authors
  • Woolfrey (1)
Top Labels
Issue Labels
Pull Request Labels