diff --git a/CMakeLists.txt b/CMakeLists.txt index 7fcd7a2..d741a01 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,7 +14,7 @@ # limitations under the License. cmake_minimum_required(VERSION 3.5) -project(event_camera_viewer) +project(event_camera_renderer) if(DEFINED ENV{ROS_VERSION}) if($ENV{ROS_VERSION} EQUAL "2") diff --git a/README.md b/README.md index c33f3ce..5234666 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ -# event_camera_viewer +# event_camera_renderer -This repository holds tools for viewing +This repository holds tools for rendering [event_camera_msgs](https://github.com/ros-event-camera/event_camera_msgs). It builds under both ROS1 and ROS2. -![event_image](images/event_viewer.png) +![event_image](images/event_renderer.png) ## Supported platforms @@ -17,7 +17,7 @@ Create a ROS workspace, clone this repo, and use ``vcs`` to pull in the remaining dependencies: ``` -pkg=event_camera_viewer +pkg=event_camera_renderer mkdir -p ~/$pkg/src cd ~/$pkg git clone https://github.com/ros-event-camera/${pkg}.git src/${pkg} @@ -49,14 +49,14 @@ under node name ``event_camera``): ROS1: ``` # create rendered ROS image stream from events -roslaunch event_camera_viewer viewer.launch camera:=event_camera +roslaunch event_camera_renderer renderer.launch camera:=event_camera rqt_image_view ``` ROS2: ``` # create rendered ROS image stream from events -ros2 launch event_camera_viewer viewer.launch.py camera:=event_camera +ros2 launch event_camera_renderer renderer.launch.py camera:=event_camera ros2 run rqt_image_view rqt_image_view ``` diff --git a/cmake/ROS1.cmake b/cmake/ROS1.cmake index 6845d27..d5ad14c 100644 --- a/cmake/ROS1.cmake +++ b/cmake/ROS1.cmake @@ -32,37 +32,37 @@ include_directories( ${catkin_INCLUDE_DIRS}) # -# --------- viewer library +# --------- renderer library # -add_library(viewer - src/viewer_ros1.cpp +add_library(renderer + src/renderer_ros1.cpp src/display.cpp src/time_slice_display.cpp src/sharp_display.cpp) -target_link_libraries(viewer ${catkin_LIBRARIES}) +target_link_libraries(renderer ${catkin_LIBRARIES}) # # --------- nodelet # -add_library(viewer_nodelet src/viewer_nodelet.cpp) -target_link_libraries(viewer_nodelet ${catkin_LIBRARIES}) +add_library(renderer_nodelet src/renderer_nodelet.cpp) +target_link_libraries(renderer_nodelet ${catkin_LIBRARIES}) # # -------- node # -add_executable(viewer_node src/viewer_node_ros1.cpp) -target_link_libraries(viewer_node viewer ${catkin_LIBRARIES}) +add_executable(renderer_node src/renderer_node_ros1.cpp) +target_link_libraries(renderer_node renderer ${catkin_LIBRARIES}) ############# ## Install ## ############# -install(TARGETS viewer_node +install(TARGETS renderer_node RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}) -install(TARGETS viewer viewer_nodelet +install(TARGETS renderer renderer_nodelet ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} RUNTIME DESTINATION ${CATKIN_GLOBAL_BIN_DESTINATION}) diff --git a/cmake/ROS2.cmake b/cmake/ROS2.cmake index df2e4fe..a5123a6 100644 --- a/cmake/ROS2.cmake +++ b/cmake/ROS2.cmake @@ -37,32 +37,32 @@ endforeach() ament_auto_find_build_dependencies(REQUIRED ${ROS2_DEPENDENCIES}) # -# --------- viewer library +# --------- renderer library # -ament_auto_add_library(viewer - src/viewer_ros2.cpp src/display.cpp +ament_auto_add_library(renderer + src/renderer_ros2.cpp src/display.cpp src/time_slice_display.cpp src/sharp_display.cpp) -rclcpp_components_register_nodes(viewer "event_camera_viewer::Viewer") +rclcpp_components_register_nodes(renderer "event_camera_renderer::Renderer") # # -------- node # -ament_auto_add_executable(viewer_node src/viewer_node_ros2.cpp) -target_link_libraries(viewer_node viewer) +ament_auto_add_executable(renderer_node src/renderer_node_ros2.cpp) +target_link_libraries(renderer_node renderer) # the node must go into the paroject specific lib directory or else # the launch file will not find it install(TARGETS - viewer_node + renderer_node DESTINATION lib/${PROJECT_NAME}/) # the shared library goes into the global lib dir so it can # be used as a composable node by other projects install(TARGETS - viewer + renderer DESTINATION lib ) diff --git a/event_camera_viewer.repos b/event_camera_renderer.repos similarity index 100% rename from event_camera_viewer.repos rename to event_camera_renderer.repos diff --git a/images/event_viewer.png b/images/event_renderer.png similarity index 100% rename from images/event_viewer.png rename to images/event_renderer.png diff --git a/include/event_camera_viewer/check_endian.h b/include/event_camera_renderer/check_endian.h similarity index 82% rename from include/event_camera_viewer/check_endian.h rename to include/event_camera_renderer/check_endian.h index 23bf225..8668c50 100644 --- a/include/event_camera_viewer/check_endian.h +++ b/include/event_camera_renderer/check_endian.h @@ -13,12 +13,12 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef EVENT_CAMERA_VIEWER__CHECK_ENDIAN_H_ -#define EVENT_CAMERA_VIEWER__CHECK_ENDIAN_H_ +#ifndef EVENT_CAMERA_RENDERER__CHECK_ENDIAN_H_ +#define EVENT_CAMERA_RENDERER__CHECK_ENDIAN_H_ #include -namespace event_camera_viewer +namespace event_camera_renderer { namespace check_endian { @@ -32,5 +32,5 @@ inline constexpr bool isBigEndian() return (combined_int.c[0] == 1); } } // namespace check_endian -} // namespace event_camera_viewer -#endif // EVENT_CAMERA_VIEWER__CHECK_ENDIAN_H_ +} // namespace event_camera_renderer +#endif // EVENT_CAMERA_RENDERER__CHECK_ENDIAN_H_ diff --git a/include/event_camera_viewer/display.h b/include/event_camera_renderer/display.h similarity index 89% rename from include/event_camera_viewer/display.h rename to include/event_camera_renderer/display.h index b7f9042..c4424e5 100644 --- a/include/event_camera_viewer/display.h +++ b/include/event_camera_renderer/display.h @@ -13,8 +13,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef EVENT_CAMERA_VIEWER__DISPLAY_H_ -#define EVENT_CAMERA_VIEWER__DISPLAY_H_ +#ifndef EVENT_CAMERA_RENDERER__DISPLAY_H_ +#define EVENT_CAMERA_RENDERER__DISPLAY_H_ #include #ifdef USING_ROS_1 @@ -29,7 +29,7 @@ using EventPacket = event_camera_msgs::msg::EventPacket; using ImgPtr = sensor_msgs::msg::Image::UniquePtr; #endif -namespace event_camera_viewer +namespace event_camera_renderer { class Display { @@ -47,5 +47,5 @@ class Display protected: Display() {} }; -} // namespace event_camera_viewer -#endif // EVENT_CAMERA_VIEWER__DISPLAY_H_ +} // namespace event_camera_renderer +#endif // EVENT_CAMERA_RENDERER__DISPLAY_H_ diff --git a/include/event_camera_viewer/viewer_ros1.h b/include/event_camera_renderer/renderer_ros1.h similarity index 83% rename from include/event_camera_viewer/viewer_ros1.h rename to include/event_camera_renderer/renderer_ros1.h index fb2db4a..3a40979 100644 --- a/include/event_camera_viewer/viewer_ros1.h +++ b/include/event_camera_renderer/renderer_ros1.h @@ -13,8 +13,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef EVENT_CAMERA_VIEWER__VIEWER_ROS1_H_ -#define EVENT_CAMERA_VIEWER__VIEWER_ROS1_H_ +#ifndef EVENT_CAMERA_RENDERER__RENDERER_ROS1_H_ +#define EVENT_CAMERA_RENDERER__RENDERER_ROS1_H_ #include #include @@ -26,16 +26,16 @@ #include #include -#include "event_camera_viewer/display.h" +#include "event_camera_renderer/display.h" -namespace event_camera_viewer +namespace event_camera_renderer { -class Viewer +class Renderer { public: using EventPacket = event_camera_msgs::EventPacket; - explicit Viewer(ros::NodeHandle & nh); - ~Viewer(); + explicit Renderer(ros::NodeHandle & nh); + ~Renderer(); private: void frameTimerExpired(const ros::TimerEvent &); @@ -53,5 +53,5 @@ class Viewer image_transport::Publisher imagePub_; sensor_msgs::Image imageMsgTemplate_; }; -} // namespace event_camera_viewer -#endif // EVENT_CAMERA_VIEWER__VIEWER_ROS1_H_ +} // namespace event_camera_renderer +#endif // EVENT_CAMERA_RENDERER__RENDERER_ROS1_H_ diff --git a/include/event_camera_viewer/viewer_ros2.h b/include/event_camera_renderer/renderer_ros2.h similarity index 80% rename from include/event_camera_viewer/viewer_ros2.h rename to include/event_camera_renderer/renderer_ros2.h index 6096481..1ed1a91 100644 --- a/include/event_camera_viewer/viewer_ros2.h +++ b/include/event_camera_renderer/renderer_ros2.h @@ -13,8 +13,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef EVENT_CAMERA_VIEWER__VIEWER_ROS2_H_ -#define EVENT_CAMERA_VIEWER__VIEWER_ROS2_H_ +#ifndef EVENT_CAMERA_RENDERER__RENDERER_ROS2_H_ +#define EVENT_CAMERA_RENDERER__RENDERER_ROS2_H_ #include #include @@ -23,16 +23,16 @@ #include #include -#include "event_camera_viewer/display.h" +#include "event_camera_renderer/display.h" -namespace event_camera_viewer +namespace event_camera_renderer { -class Viewer : public rclcpp::Node +class Renderer : public rclcpp::Node { public: using EventPacket = event_camera_msgs::msg::EventPacket; - explicit Viewer(const rclcpp::NodeOptions & options); - ~Viewer(); + explicit Renderer(const rclcpp::NodeOptions & options); + ~Renderer(); private: void frameTimerExpired(); @@ -48,5 +48,5 @@ class Viewer : public rclcpp::Node image_transport::Publisher imagePub_; sensor_msgs::msg::Image imageMsgTemplate_; }; -} // namespace event_camera_viewer -#endif // EVENT_CAMERA_VIEWER__VIEWER_ROS2_H_ +} // namespace event_camera_renderer +#endif // EVENT_CAMERA_RENDERER__RENDERER_ROS2_H_ diff --git a/include/event_camera_viewer/sharp_display.h b/include/event_camera_renderer/sharp_display.h similarity index 83% rename from include/event_camera_viewer/sharp_display.h rename to include/event_camera_renderer/sharp_display.h index 153fdd5..506252a 100644 --- a/include/event_camera_viewer/sharp_display.h +++ b/include/event_camera_renderer/sharp_display.h @@ -13,15 +13,15 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef EVENT_CAMERA_VIEWER__SHARP_DISPLAY_H_ -#define EVENT_CAMERA_VIEWER__SHARP_DISPLAY_H_ +#ifndef EVENT_CAMERA_RENDERER__SHARP_DISPLAY_H_ +#define EVENT_CAMERA_RENDERER__SHARP_DISPLAY_H_ #include -#include "event_camera_viewer/display.h" -#include "event_camera_viewer/sharp_updater.h" +#include "event_camera_renderer/display.h" +#include "event_camera_renderer/sharp_updater.h" -namespace event_camera_viewer +namespace event_camera_renderer { class SharpDisplay : public Display { @@ -41,5 +41,5 @@ class SharpDisplay : public Display event_camera_codecs::Decoder * decoder_; event_camera_codecs::DecoderFactory decoderFactory_; }; -} // namespace event_camera_viewer -#endif // EVENT_CAMERA_VIEWER__SHARP_DISPLAY_H_ +} // namespace event_camera_renderer +#endif // EVENT_CAMERA_RENDERER__SHARP_DISPLAY_H_ diff --git a/include/event_camera_viewer/sharp_updater.h b/include/event_camera_renderer/sharp_updater.h similarity index 96% rename from include/event_camera_viewer/sharp_updater.h rename to include/event_camera_renderer/sharp_updater.h index f5dd1db..15dd527 100644 --- a/include/event_camera_viewer/sharp_updater.h +++ b/include/event_camera_renderer/sharp_updater.h @@ -13,8 +13,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef EVENT_CAMERA_VIEWER__SHARP_UPDATER_H_ -#define EVENT_CAMERA_VIEWER__SHARP_UPDATER_H_ +#ifndef EVENT_CAMERA_RENDERER__SHARP_UPDATER_H_ +#define EVENT_CAMERA_RENDERER__SHARP_UPDATER_H_ #include @@ -30,7 +30,7 @@ using ImgPtr = sensor_msgs::msg::Image::UniquePtr; #include -namespace event_camera_viewer +namespace event_camera_renderer { class SharpUpdater : public event_camera_codecs::EventProcessor { @@ -154,5 +154,5 @@ class SharpUpdater : public event_camera_codecs::EventProcessor uint32_t numOccupiedPixels_{0}; // currently occupied number of pixels uint32_t numOccupiedBlocks_{0}; // currently occupied number of blocks }; -} // namespace event_camera_viewer -#endif // EVENT_CAMERA_VIEWER__SHARP_UPDATER_H_ +} // namespace event_camera_renderer +#endif // EVENT_CAMERA_RENDERER__SHARP_UPDATER_H_ diff --git a/include/event_camera_viewer/simple_updater.h b/include/event_camera_renderer/simple_updater.h similarity index 90% rename from include/event_camera_viewer/simple_updater.h rename to include/event_camera_renderer/simple_updater.h index c9e9375..19bb307 100644 --- a/include/event_camera_viewer/simple_updater.h +++ b/include/event_camera_renderer/simple_updater.h @@ -13,8 +13,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef EVENT_CAMERA_VIEWER__SIMPLE_UPDATER_H_ -#define EVENT_CAMERA_VIEWER__SIMPLE_UPDATER_H_ +#ifndef EVENT_CAMERA_RENDERER__SIMPLE_UPDATER_H_ +#define EVENT_CAMERA_RENDERER__SIMPLE_UPDATER_H_ #include #include @@ -28,7 +28,7 @@ using ImgPtr = sensor_msgs::msg::Image::UniquePtr; #include -namespace event_camera_viewer +namespace event_camera_renderer { class SimpleUpdater : public event_camera_codecs::EventProcessor { @@ -59,5 +59,5 @@ class SimpleUpdater : public event_camera_codecs::EventProcessor private: ImgPtr img_; }; -} // namespace event_camera_viewer -#endif // EVENT_CAMERA_VIEWER__SIMPLE_UPDATER_H_ +} // namespace event_camera_renderer +#endif // EVENT_CAMERA_RENDERER__SIMPLE_UPDATER_H_ diff --git a/include/event_camera_viewer/time_slice_display.h b/include/event_camera_renderer/time_slice_display.h similarity index 82% rename from include/event_camera_viewer/time_slice_display.h rename to include/event_camera_renderer/time_slice_display.h index 176c00e..76e9bb3 100644 --- a/include/event_camera_viewer/time_slice_display.h +++ b/include/event_camera_renderer/time_slice_display.h @@ -13,15 +13,15 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef EVENT_CAMERA_VIEWER__TIME_SLICE_DISPLAY_H_ -#define EVENT_CAMERA_VIEWER__TIME_SLICE_DISPLAY_H_ +#ifndef EVENT_CAMERA_RENDERER__TIME_SLICE_DISPLAY_H_ +#define EVENT_CAMERA_RENDERER__TIME_SLICE_DISPLAY_H_ #include -#include "event_camera_viewer/display.h" -#include "event_camera_viewer/simple_updater.h" +#include "event_camera_renderer/display.h" +#include "event_camera_renderer/simple_updater.h" -namespace event_camera_viewer +namespace event_camera_renderer { class TimeSliceDisplay : public Display { @@ -41,5 +41,5 @@ class TimeSliceDisplay : public Display event_camera_codecs::Decoder * decoder_; event_camera_codecs::DecoderFactory decoderFactory_; }; -} // namespace event_camera_viewer -#endif // EVENT_CAMERA_VIEWER__TIME_SLICE_DISPLAY_H_ +} // namespace event_camera_renderer +#endif // EVENT_CAMERA_RENDERER__TIME_SLICE_DISPLAY_H_ diff --git a/launch/viewer.launch b/launch/renderer.launch similarity index 77% rename from launch/viewer.launch rename to launch/renderer.launch index a934a0e..3a26917 100644 --- a/launch/viewer.launch +++ b/launch/renderer.launch @@ -2,7 +2,7 @@ - diff --git a/launch/viewer.launch.py b/launch/renderer.launch.py similarity index 51% rename from launch/viewer.launch.py rename to launch/renderer.launch.py index 1b86cd4..68eed85 100644 --- a/launch/viewer.launch.py +++ b/launch/renderer.launch.py @@ -24,30 +24,37 @@ def launch_setup(context, *args, **kwargs): """Create simple node.""" - node = Node(package='event_camera_viewer', - executable='viewer_node', - output='screen', - namespace=LaunchConfig('camera'), - # prefix=['xterm -e gdb -ex run --args'], - name="viewer", - parameters=[{'fps': LaunchConfig('fps'), - 'display_type': LaunchConfig('type'), - 'use_sim_time': LaunchConfig('use_sim_time')}], - remappings=[('~/events', 'events')] - ) + node = Node( + package="event_camera_renderer", + executable="renderer_node", + output="screen", + namespace=LaunchConfig("camera"), + # prefix=['xterm -e gdb -ex run --args'], + name="renderer", + parameters=[ + { + "fps": LaunchConfig("fps"), + "display_type": LaunchConfig("type"), + "use_sim_time": LaunchConfig("use_sim_time"), + } + ], + remappings=[("~/events", "events")], + ) return [node] def generate_launch_description(): """Create simple node by calling opaque function.""" - return launch.LaunchDescription([ - LaunchArg('camera', default_value=['event_camera'], - description='camera name'), - LaunchArg('fps', default_value='25.0', - description='frame rate'), - LaunchArg('use_sim_time', default_value='False', - description='use_sim_time'), - LaunchArg('type', default_value='time_slice', - description='display type (time_slice or sharp)'), - OpaqueFunction(function=launch_setup) - ]) + return launch.LaunchDescription( + [ + LaunchArg("camera", default_value=["event_camera"], description="camera name"), + LaunchArg("fps", default_value="25.0", description="frame rate"), + LaunchArg("use_sim_time", default_value="False", description="use_sim_time"), + LaunchArg( + "type", + default_value="time_slice", + description="display type (time_slice or sharp)", + ), + OpaqueFunction(function=launch_setup), + ] + ) diff --git a/launch/viewer_composable.launch.py b/launch/renderer_composable.launch.py similarity index 57% rename from launch/viewer_composable.launch.py rename to launch/renderer_composable.launch.py index 7347612..71dd858 100644 --- a/launch/viewer_composable.launch.py +++ b/launch/renderer_composable.launch.py @@ -25,34 +25,33 @@ def launch_setup(context, *args, **kwargs): """Create composable node.""" - cam_name = LaunchConfig('camera_name') + cam_name = LaunchConfig("camera_name") cam_str = cam_name.perform(context) container = ComposableNodeContainer( - name='event_viewer', - namespace='', - package='rclcpp_components', - executable='component_container', - composable_node_descriptions=[ - ComposableNode( - package='event_camera_viewer', - plugin='event_camera_viewer::Viewer', - name=cam_str + '_viewer', - parameters=[ - {'fps': 25.0}], - remappings=[ - ('~/events', cam_str + '/events')], - extra_arguments=[{'use_intra_process_comms': True}], - ) - ], - output='screen', + name="event_renderer", + namespace="", + package="rclcpp_components", + executable="component_container", + composable_node_descriptions=[ + ComposableNode( + package="event_camera_renderer", + plugin="event_camera_renderer::Renderer", + name=cam_str + "_renderer", + parameters=[{"fps": 25.0}], + remappings=[("~/events", cam_str + "/events")], + extra_arguments=[{"use_intra_process_comms": True}], + ) + ], + output="screen", ) return [container] def generate_launch_description(): """Create composable node by calling opaque function.""" - return launch.LaunchDescription([ - LaunchArg('camera_name', default_value=['event_camera'], - description='camera name'), - OpaqueFunction(function=launch_setup) - ]) + return launch.LaunchDescription( + [ + LaunchArg("camera_name", default_value=["event_camera"], description="camera name"), + OpaqueFunction(function=launch_setup), + ] + ) diff --git a/nodelet_plugins.xml b/nodelet_plugins.xml index 78d73f9..4c8d762 100644 --- a/nodelet_plugins.xml +++ b/nodelet_plugins.xml @@ -1,9 +1,9 @@ - - + - viewer for event_camera_msgs + renderer for event_camera_msgs \ No newline at end of file diff --git a/package.xml b/package.xml index 65afc47..29af778 100644 --- a/package.xml +++ b/package.xml @@ -1,8 +1,8 @@ - event_camera_viewer + event_camera_renderer 1.0.0 - package to view event_camera_msgs + package for rendering event_camera_msgs Bernd Pfrommer Apache2 diff --git a/src/display.cpp b/src/display.cpp index 5d2168d..22e69f2 100644 --- a/src/display.cpp +++ b/src/display.cpp @@ -13,12 +13,12 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "event_camera_viewer/display.h" +#include "event_camera_renderer/display.h" -#include "event_camera_viewer/sharp_display.h" -#include "event_camera_viewer/time_slice_display.h" +#include "event_camera_renderer/sharp_display.h" +#include "event_camera_renderer/time_slice_display.h" -namespace event_camera_viewer +namespace event_camera_renderer { std::shared_ptr Display::newInstance(const std::string & type) { @@ -30,4 +30,4 @@ std::shared_ptr Display::newInstance(const std::string & type) } return (0); } -} // namespace event_camera_viewer +} // namespace event_camera_renderer diff --git a/src/viewer_node_ros1.cpp b/src/renderer_node_ros1.cpp similarity index 87% rename from src/viewer_node_ros1.cpp rename to src/renderer_node_ros1.cpp index bf36dce..fe435e0 100644 --- a/src/viewer_node_ros1.cpp +++ b/src/renderer_node_ros1.cpp @@ -15,15 +15,15 @@ #include -#include "event_camera_viewer/viewer_ros1.h" +#include "event_camera_renderer/renderer_ros1.h" int main(int argc, char ** argv) { - ros::init(argc, argv, "viewer_node"); + ros::init(argc, argv, "renderer_node"); ros::NodeHandle pnh("~"); try { - event_camera_viewer::Viewer node(pnh); + event_camera_renderer::Renderer node(pnh); ros::spin(); } catch (const std::exception & e) { ROS_ERROR("%s: %s", pnh.getNamespace().c_str(), e.what()); diff --git a/src/viewer_node_ros2.cpp b/src/renderer_node_ros2.cpp similarity index 82% rename from src/viewer_node_ros2.cpp rename to src/renderer_node_ros2.cpp index 0bb283b..729d8f7 100644 --- a/src/viewer_node_ros2.cpp +++ b/src/renderer_node_ros2.cpp @@ -16,13 +16,13 @@ #include #include -#include "event_camera_viewer/viewer_ros2.h" +#include "event_camera_renderer/renderer_ros2.h" int main(int argc, char ** argv) { rclcpp::init(argc, argv); - auto node = std::make_shared(rclcpp::NodeOptions()); - RCLCPP_INFO(node->get_logger(), "viewer_node started up!"); + auto node = std::make_shared(rclcpp::NodeOptions()); + RCLCPP_INFO(node->get_logger(), "renderer_node started up!"); // actually run the node rclcpp::spin(node); // should not return rclcpp::shutdown(); diff --git a/src/viewer_nodelet.cpp b/src/renderer_nodelet.cpp similarity index 74% rename from src/viewer_nodelet.cpp rename to src/renderer_nodelet.cpp index 4e29b97..4645473 100644 --- a/src/viewer_nodelet.cpp +++ b/src/renderer_nodelet.cpp @@ -18,25 +18,25 @@ #include -#include "event_camera_viewer/viewer_ros1.h" +#include "event_camera_renderer/renderer_ros1.h" -namespace event_camera_viewer +namespace event_camera_renderer { -class ViewerNodelet : public nodelet::Nodelet +class RendererNodelet : public nodelet::Nodelet { public: void onInit() override { nh_ = getPrivateNodeHandle(); - viewer_ = std::make_shared(nh_); + renderer_ = std::make_shared(nh_); } private: // ------ variables -------- - std::shared_ptr viewer_; + std::shared_ptr renderer_; ros::NodeHandle nh_; }; -} // namespace event_camera_viewer +} // namespace event_camera_renderer #include -PLUGINLIB_EXPORT_CLASS(event_camera_viewer::ViewerNodelet, nodelet::Nodelet) +PLUGINLIB_EXPORT_CLASS(event_camera_renderer::RendererNodelet, nodelet::Nodelet) diff --git a/src/viewer_ros1.cpp b/src/renderer_ros1.cpp similarity index 77% rename from src/viewer_ros1.cpp rename to src/renderer_ros1.cpp index 1171091..0db93dc 100644 --- a/src/viewer_ros1.cpp +++ b/src/renderer_ros1.cpp @@ -13,16 +13,16 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "event_camera_viewer/viewer_ros1.h" +#include "event_camera_renderer/renderer_ros1.h" #include -#include "event_camera_viewer/check_endian.h" +#include "event_camera_renderer/check_endian.h" -namespace event_camera_viewer +namespace event_camera_renderer { namespace ph = std::placeholders; -Viewer::Viewer(ros::NodeHandle & nh) : nh_(nh) +Renderer::Renderer(ros::NodeHandle & nh) : nh_(nh) { display_ = Display::newInstance(nh_.param("display_type", "time_slice")); if (!display_) { @@ -33,19 +33,19 @@ Viewer::Viewer(ros::NodeHandle & nh) : nh_(nh) sliceTime_ = 1.0 / nh_.param("fps", 25.0); image_transport::ImageTransport it(nh_); imagePub_ = it.advertise( - "image_raw", 1, boost::bind(&Viewer::imageConnectCallback, this, boost::placeholders::_1), - boost::bind(&Viewer::imageConnectCallback, this, boost::placeholders::_1)); + "image_raw", 1, boost::bind(&Renderer::imageConnectCallback, this, boost::placeholders::_1), + boost::bind(&Renderer::imageConnectCallback, this, boost::placeholders::_1)); imageMsgTemplate_.height = 0; } -Viewer::~Viewer() { frameTimer_.stop(); } +Renderer::~Renderer() { frameTimer_.stop(); } -void Viewer::imageConnectCallback(const image_transport::SingleSubscriberPublisher &) +void Renderer::imageConnectCallback(const image_transport::SingleSubscriberPublisher &) { if (imagePub_.getNumSubscribers() != 0) { if (!isSubscribedToEvents_) { - frameTimer_ = nh_.createTimer(ros::Duration(sliceTime_), &Viewer::frameTimerExpired, this); - eventSub_ = nh_.subscribe("events", 1000 /*qsize */, &Viewer::eventMsg, this); + frameTimer_ = nh_.createTimer(ros::Duration(sliceTime_), &Renderer::frameTimerExpired, this); + eventSub_ = nh_.subscribe("events", 1000 /*qsize */, &Renderer::eventMsg, this); isSubscribedToEvents_ = true; } } else { @@ -57,7 +57,7 @@ void Viewer::imageConnectCallback(const image_transport::SingleSubscriberPublish } } -void Viewer::frameTimerExpired(const ros::TimerEvent &) +void Renderer::frameTimerExpired(const ros::TimerEvent &) { if (imagePub_.getNumSubscribers() != 0 && display_->hasImage()) { // take memory managent from image updater @@ -70,14 +70,14 @@ void Viewer::frameTimerExpired(const ros::TimerEvent &) } } -void Viewer::startNewImage() +void Renderer::startNewImage() { std::unique_ptr img(new sensor_msgs::Image(imageMsgTemplate_)); img->data.resize(img->height * img->step, 0); // allocate memory and set all bytes to zero display_->setImage(&img); // event publisher will also render image now } -void Viewer::eventMsg(const EventPacket::ConstPtr & msg) +void Renderer::eventMsg(const EventPacket::ConstPtr & msg) { if (imageMsgTemplate_.height == 0) { imageMsgTemplate_.header = msg->header; @@ -94,4 +94,4 @@ void Viewer::eventMsg(const EventPacket::ConstPtr & msg) display_->update(&(msg->events[0]), msg->events.size()); } -} // namespace event_camera_viewer +} // namespace event_camera_renderer diff --git a/src/viewer_ros2.cpp b/src/renderer_ros2.cpp similarity index 86% rename from src/viewer_ros2.cpp rename to src/renderer_ros2.cpp index 1aaca80..cd932a5 100644 --- a/src/viewer_ros2.cpp +++ b/src/renderer_ros2.cpp @@ -13,19 +13,19 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "event_camera_viewer/viewer_ros2.h" +#include "event_camera_renderer/renderer_ros2.h" #include #include #include -#include "event_camera_viewer/check_endian.h" +#include "event_camera_renderer/check_endian.h" -namespace event_camera_viewer +namespace event_camera_renderer { -Viewer::Viewer(const rclcpp::NodeOptions & options) +Renderer::Renderer(const rclcpp::NodeOptions & options) : Node( - "event_camera_viewer", + "event_camera_renderer", rclcpp::NodeOptions(options).automatically_declare_parameters_from_overrides(true)) { std::string displayType; @@ -45,10 +45,10 @@ Viewer::Viewer(const rclcpp::NodeOptions & options) // must check by polling subscriptionCheckTimer_ = rclcpp::create_timer( this, get_clock(), rclcpp::Duration(1, 0), - std::bind(&Viewer::subscriptionCheckTimerExpired, this)); + std::bind(&Renderer::subscriptionCheckTimerExpired, this)); } -Viewer::~Viewer() +Renderer::~Renderer() { if (frameTimer_) { frameTimer_->cancel(); @@ -58,7 +58,7 @@ Viewer::~Viewer() } } -void Viewer::subscriptionCheckTimerExpired() +void Renderer::subscriptionCheckTimerExpired() { // this silly dance is only necessary because ROS2 at this time does not support // callbacks when subscribers come and go @@ -73,13 +73,13 @@ void Viewer::subscriptionCheckTimerExpired() const int qsize = 1000; auto qos = rclcpp::QoS(rclcpp::KeepLast(qsize)).best_effort().durability_volatile(); eventSub_ = this->create_subscription( - "~/events", qos, std::bind(&Viewer::eventMsg, this, std::placeholders::_1)); + "~/events", qos, std::bind(&Renderer::eventMsg, this, std::placeholders::_1)); } if (!frameTimer_) { // start publishing frames if there is interest in either camerainfo or image frameTimer_ = rclcpp::create_timer( this, get_clock(), rclcpp::Duration::from_seconds(sliceTime_), - std::bind(&Viewer::frameTimerExpired, this)); + std::bind(&Renderer::frameTimerExpired, this)); } } else { // -------------- no subscribers ------------------- @@ -99,7 +99,7 @@ void Viewer::subscriptionCheckTimerExpired() } } -void Viewer::eventMsg(EventPacket::ConstSharedPtr msg) +void Renderer::eventMsg(EventPacket::ConstSharedPtr msg) { if (imageMsgTemplate_.height == 0) { imageMsgTemplate_.header = msg->header; @@ -116,7 +116,7 @@ void Viewer::eventMsg(EventPacket::ConstSharedPtr msg) display_->update(&(msg->events[0]), msg->events.size()); } -void Viewer::frameTimerExpired() +void Renderer::frameTimerExpired() { const rclcpp::Time t = this->get_clock()->now(); // publish frame if available and somebody listening @@ -131,7 +131,7 @@ void Viewer::frameTimerExpired() } } -void Viewer::startNewImage() +void Renderer::startNewImage() { if (imageMsgTemplate_.height != 0) { sensor_msgs::msg::Image::UniquePtr img(new sensor_msgs::msg::Image(imageMsgTemplate_)); @@ -140,6 +140,6 @@ void Viewer::startNewImage() } } -} // namespace event_camera_viewer +} // namespace event_camera_renderer -RCLCPP_COMPONENTS_REGISTER_NODE(event_camera_viewer::Viewer) +RCLCPP_COMPONENTS_REGISTER_NODE(event_camera_renderer::Renderer) diff --git a/src/sharp_display.cpp b/src/sharp_display.cpp index 00c0d5c..74fbff9 100644 --- a/src/sharp_display.cpp +++ b/src/sharp_display.cpp @@ -13,9 +13,9 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "event_camera_viewer/sharp_display.h" +#include "event_camera_renderer/sharp_display.h" -namespace event_camera_viewer +namespace event_camera_renderer { void SharpDisplay::initialize(const std::string & encoding, uint32_t width, uint32_t height) { @@ -31,4 +31,4 @@ void SharpDisplay::update(const uint8_t * events, size_t numEvents) // decode will produce callbacks to imageUpdater_ decoder_->decode(events, numEvents, &imageUpdater_); } -} // namespace event_camera_viewer +} // namespace event_camera_renderer diff --git a/src/time_slice_display.cpp b/src/time_slice_display.cpp index 2b834c6..ca4a95b 100644 --- a/src/time_slice_display.cpp +++ b/src/time_slice_display.cpp @@ -13,9 +13,9 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "event_camera_viewer/time_slice_display.h" +#include "event_camera_renderer/time_slice_display.h" -namespace event_camera_viewer +namespace event_camera_renderer { void TimeSliceDisplay::initialize(const std::string & encoding, uint32_t width, uint32_t height) { @@ -31,4 +31,4 @@ void TimeSliceDisplay::update(const uint8_t * events, size_t numEvents) // decode will produce callbacks to imageUpdater_ decoder_->decode(events, numEvents, &imageUpdater_); } -} // namespace event_camera_viewer +} // namespace event_camera_renderer