No version for distro humble. Known supported distros are highlighted in the buttons above.
No version for distro iron. Known supported distros are highlighted in the buttons above.
No version for distro rolling. Known supported distros are highlighted in the buttons above.

py_binding_tools package from py_binding_tools repo

py_binding_tools

Package Summary

Tags No category tags.
Version 1.0.0
License BSD
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ros-planning/py_binding_tools.git
VCS Type git
VCS Version main
Last Updated 2024-03-05
Dev Status MAINTAINED
CI status Continuous Integration : 0 / 0
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Python binding tools for C++

Additional Links

Maintainers

  • Robert Haschke

Authors

  • Robert Haschke

Python binding tools for C++

This package provides some tools to facilitate the generation of python bindings for C++ code, based on pybind11.

Automatic type conversion for ROS message types

Conversion between native C++ and python types is performed via ROS message serialization and deserialization, which is implemented via C++ templates. It suffices to include:

#include <py_binding_tools/ros_msg_typecasters.h>

The PoseStamped message from the geometry_msgs package also accepts a single string as an argument. In this case, the string is interpreted as the header.frame_id field of the message and the pose becomes the identity transform. To use this extension, include the following header instead:

#include <py_binding_tools/geometry_msg_typecasters.h>

C++ ROS initialization

C++ and Python use their own ROS implementations (rospy and roscpp). Thus, it is necessary to initialize ROS in the C++ domain additionally to the Python domain before calling any ROS-related functions from wrapped C++ functions or classes. To this end, the package provides the python function roscpp_init() and the C++ class ROScppInitializer. The latter is intended to be used as a base class for your python wrapper classes:

class FooWrapper : protected ROScppInitializer, public Foo {
    // ...
};

to ensure that the ROS infrastructure is initialized before usage in the wrapped C++ class. Ensure to list ROScppInitializer as the first base class, if ROS functionality is required in the constructor already!

ROScppInitializer registers an anonymous C++ ROS node named python_wrapper_xxx. If you need a specific node name or if you want to pass remappings, use the manual initialization function roscpp_init(name="", remappings={}, options=0) instead, which effectively calls ros::init with the given arguments. Note, that an empty name will map to the above-mentioned node name python_wrapper_xxx.

CHANGELOG

Changelog for package py_binding_tools

1.0.0 (2024-03-05)

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged py_binding_tools at Robotics Stack Exchange

No version for distro ardent. Known supported distros are highlighted in the buttons above.
No version for distro bouncy. Known supported distros are highlighted in the buttons above.
No version for distro crystal. Known supported distros are highlighted in the buttons above.
No version for distro eloquent. Known supported distros are highlighted in the buttons above.
No version for distro dashing. Known supported distros are highlighted in the buttons above.
No version for distro galactic. Known supported distros are highlighted in the buttons above.
No version for distro foxy. Known supported distros are highlighted in the buttons above.
No version for distro lunar. Known supported distros are highlighted in the buttons above.
No version for distro jade. Known supported distros are highlighted in the buttons above.
No version for distro indigo. Known supported distros are highlighted in the buttons above.
No version for distro hydro. Known supported distros are highlighted in the buttons above.
No version for distro kinetic. Known supported distros are highlighted in the buttons above.
No version for distro melodic. Known supported distros are highlighted in the buttons above.