Init commit.
This commit is contained in:
commit
01b13b7afd
|
|
@ -0,0 +1,45 @@
|
|||
cmake_minimum_required(VERSION 3.8)
|
||||
project(image_publisher)
|
||||
|
||||
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||
add_compile_options(-Wall -Wextra -Wpedantic)
|
||||
endif()
|
||||
|
||||
# find dependencies
|
||||
find_package(ament_cmake REQUIRED)
|
||||
find_package(rclcpp REQUIRED)
|
||||
find_package(rclcpp_components REQUIRED)
|
||||
find_package(image_transport REQUIRED)
|
||||
find_package(sensor_msgs REQUIRED)
|
||||
find_package(OpenCV REQUIRED)
|
||||
find_package(cv_bridge REQUIRED)
|
||||
|
||||
add_library(image_publisher_component SHARED src/ImagePublisher.cpp)
|
||||
target_include_directories(image_publisher_component PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
||||
$<INSTALL_INTERFACE:include/${PROJECT_NAME}>)
|
||||
target_compile_features(image_publisher_component PUBLIC c_std_99 cxx_std_17) # Require C99 and C++17
|
||||
target_link_libraries(image_publisher_component
|
||||
rclcpp::rclcpp
|
||||
rclcpp_components::component
|
||||
image_transport::image_transport
|
||||
${sensor_msgs_TARGETS}
|
||||
${std_msgs_TARGETS}
|
||||
${OpenCV_LIBS}
|
||||
cv_bridge::cv_bridge
|
||||
)
|
||||
|
||||
rclcpp_components_register_node(image_publisher_component
|
||||
PLUGIN "j7s::ImagePublisher"
|
||||
EXECUTABLE image_publisher
|
||||
)
|
||||
|
||||
ament_export_targets(export_image_publisher_component)
|
||||
install(TARGETS image_publisher_component
|
||||
EXPORT export_image_publisher_component
|
||||
ARCHIVE DESTINATION lib
|
||||
LIBRARY DESTINATION lib
|
||||
RUNTIME DESTINATION bin
|
||||
)
|
||||
|
||||
ament_package()
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
<?xml version="1.0"?>
|
||||
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
|
||||
<package format="3">
|
||||
<name>image_publisher</name>
|
||||
<version>0.0.0</version>
|
||||
<description>TODO: Package description</description>
|
||||
<maintainer email="jpace121@gmail.com">jimmy</maintainer>
|
||||
<license>TODO: License declaration</license>
|
||||
|
||||
<buildtool_depend>ament_cmake</buildtool_depend>
|
||||
|
||||
<depend>cv_bridge</depend>
|
||||
<depend>image_transport</depend>
|
||||
<depend>sensor_msgs</depend>
|
||||
<depend>std_msgs</depend>
|
||||
<depend>rclcpp_components</depend>
|
||||
|
||||
<export>
|
||||
<build_type>ament_cmake</build_type>
|
||||
</export>
|
||||
</package>
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
#include <rclcpp/rclcpp.hpp>
|
||||
#include <image_transport/image_transport.hpp>
|
||||
#include <sensor_msgs/msg/image.hpp>
|
||||
#include <std_msgs/msg/header.hpp>
|
||||
#include <cv_bridge/cv_bridge.hpp>
|
||||
|
||||
#include <opencv2/core.hpp>
|
||||
#include <opencv2/imgproc.hpp>
|
||||
|
||||
|
||||
#include <chrono>
|
||||
|
||||
using namespace std::chrono_literals;
|
||||
|
||||
|
||||
namespace j7s {
|
||||
class ImagePublisher : public rclcpp::Node {
|
||||
public:
|
||||
ImagePublisher(const rclcpp::NodeOptions& options);
|
||||
private:
|
||||
image_transport::ImageTransport m_transport;
|
||||
image_transport::Publisher m_publisher;
|
||||
rclcpp::TimerBase::SharedPtr m_timer;
|
||||
|
||||
sensor_msgs::msg::Image::SharedPtr draw_image();
|
||||
};
|
||||
};
|
||||
|
||||
namespace j7s {
|
||||
ImagePublisher::ImagePublisher(const rclcpp::NodeOptions& options):
|
||||
Node("image_publisher", options),
|
||||
m_transport(std::shared_ptr<rclcpp::Node>(this)),
|
||||
m_publisher(m_transport.advertise("image", 1)),
|
||||
m_timer{}
|
||||
{
|
||||
m_timer = this->create_timer(10ms, [this]() -> void {
|
||||
const auto msg = draw_image();
|
||||
m_publisher.publish(msg);
|
||||
});
|
||||
}
|
||||
|
||||
sensor_msgs::msg::Image::SharedPtr ImagePublisher::draw_image()
|
||||
{
|
||||
cv::Mat mat = cv::Mat::zeros(200, 200, CV_8UC3);
|
||||
|
||||
std_msgs::msg::Header header;
|
||||
header.stamp = this->now();
|
||||
cv_bridge::CvImage image(header, "mono8", mat);
|
||||
return image.toImageMsg();
|
||||
}
|
||||
};
|
||||
|
||||
#include <rclcpp_components/register_node_macro.hpp>
|
||||
RCLCPP_COMPONENTS_REGISTER_NODE(j7s::ImagePublisher)
|
||||
Loading…
Reference in New Issue