From 210acd949892c41141e1840d0150af8d222a7aab Mon Sep 17 00:00:00 2001 From: Rescue Group Date: Wed, 19 Jun 2013 17:39:15 +1000 Subject: [PATCH] MM: Image render now uses image transports --- crosbot_ui/CMakeLists.txt | 2 +- crosbot_ui/Makefile | 4 +++- .../include/crosbot_ui/renders/robot/image.hpp | 12 +++++++----- .../include/crosbot_ui/renders/robot/simple.hpp | 1 - crosbot_ui/package.xml | 2 ++ crosbot_ui/src/renders/robot/image.cpp | 11 ++++++++--- crosbot_ui/src/renders/robot/simple.cpp | 4 ++-- 7 files changed, 23 insertions(+), 13 deletions(-) diff --git a/crosbot_ui/CMakeLists.txt b/crosbot_ui/CMakeLists.txt index 897d424..b273160 100644 --- a/crosbot_ui/CMakeLists.txt +++ b/crosbot_ui/CMakeLists.txt @@ -4,7 +4,7 @@ project(crosbot_ui) ## Find catkin macros and libraries ## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz) ## is used, also find other catkin packages -find_package(catkin REQUIRED COMPONENTS roscpp crosbot crosbot_map crosbot_fastslam) +find_package(catkin REQUIRED COMPONENTS roscpp crosbot crosbot_map crosbot_fastslam image_transport) ## System dependencies are found with CMake's conventions # find_package(Boost REQUIRED COMPONENTS system) diff --git a/crosbot_ui/Makefile b/crosbot_ui/Makefile index 5004622..b0f7a86 100644 --- a/crosbot_ui/Makefile +++ b/crosbot_ui/Makefile @@ -1,5 +1,7 @@ +PACKAGE=$(shell basename `pwd` ) + default: all all: - make -C ../.. + make -C ../.. $(PACKAGE) diff --git a/crosbot_ui/include/crosbot_ui/renders/robot/image.hpp b/crosbot_ui/include/crosbot_ui/renders/robot/image.hpp index 30fb2f8..fe8aead 100644 --- a/crosbot_ui/include/crosbot_ui/renders/robot/image.hpp +++ b/crosbot_ui/include/crosbot_ui/renders/robot/image.hpp @@ -8,10 +8,11 @@ #ifndef CROSBOT_RENDER_IMAGE_HPP_ #define CROSBOT_RENDER_IMAGE_HPP_ +#include #include #include -#include +#include namespace crosbot { @@ -27,9 +28,9 @@ public: virtual void render(); virtual bool isHidden(); - virtual bool keyPressEvent(QKeyEvent *ke); + virtual bool keyPressEvent(QKeyEvent *e); - void callback(sensor_msgs::ImageConstPtr); + void callback(const sensor_msgs::ImageConstPtr&); protected: ImagePtr image, textureImage; bool hidden; @@ -37,8 +38,9 @@ protected: Colour4f colour; GLuint textureId; - std::string topic; - ros::Subscriber subscriber; + std::string topic, transport; + image_transport::Subscriber subscriber; + }; } // namespace gui diff --git a/crosbot_ui/include/crosbot_ui/renders/robot/simple.hpp b/crosbot_ui/include/crosbot_ui/renders/robot/simple.hpp index c91b6c3..aa3f78f 100644 --- a/crosbot_ui/include/crosbot_ui/renders/robot/simple.hpp +++ b/crosbot_ui/include/crosbot_ui/renders/robot/simple.hpp @@ -60,7 +60,6 @@ protected: std::string topic; ros::Subscriber subscriber; - Colour4f lineColour, fillColour; }; diff --git a/crosbot_ui/package.xml b/crosbot_ui/package.xml index 66a27f8..16d1642 100644 --- a/crosbot_ui/package.xml +++ b/crosbot_ui/package.xml @@ -44,11 +44,13 @@ crosbot_map crosbot_fastslam roscpp + image_transport qt4 crosbot crosbot_map crosbot_fastslam roscpp + image_transport qt4 diff --git a/crosbot_ui/src/renders/robot/image.cpp b/crosbot_ui/src/renders/robot/image.cpp index a2a6dd3..e50bb57 100644 --- a/crosbot_ui/src/renders/robot/image.cpp +++ b/crosbot_ui/src/renders/robot/image.cpp @@ -31,14 +31,16 @@ ImageRender::ImageRender(RobotPanel& panel, ConfigElementPtr config) : topic = config->getParam(PARAM_TOPIC); topic = config->getParam(RENDER_IMAGE, topic); topic = config->getParam(PARAM_NAME, topic); + transport = config->getParam("transport", "raw"); } void ImageRender::start() { if (topic != "") { ros::NodeHandle nh("~"); - subscriber = nh.subscribe(topic, 1, &ImageRender::callback, this); + image_transport::ImageTransport it(nh); + image_transport::TransportHints hint(transport); + subscriber = it.subscribe(topic, 1, &ImageRender::callback, this, hint); } - } void ImageRender::stop() { @@ -59,8 +61,11 @@ bool ImageRender::keyPressEvent(QKeyEvent *ke) { return false; } -void ImageRender::callback(sensor_msgs::ImageConstPtr rosImage) { +void ImageRender::callback(const sensor_msgs::ImageConstPtr& rosImage) { ImagePtr image = new Image(rosImage); + if (image->encoding == Image::Unknown) { + ERROR("crosbot::Image: Unknown encoding %s\n", rosImage->encoding.c_str()); + } this->image = image; } diff --git a/crosbot_ui/src/renders/robot/simple.cpp b/crosbot_ui/src/renders/robot/simple.cpp index f3c232d..ed7d6b3 100644 --- a/crosbot_ui/src/renders/robot/simple.cpp +++ b/crosbot_ui/src/renders/robot/simple.cpp @@ -96,7 +96,7 @@ void SpeedRender::render() { #define MOUSE_DELTA 120 bool SpeedRender::wheelEvent(QWheelEvent *we) { float currentSpeed, currentTurnRate; - panel.getCurrentSpeeds(currentSpeed, currentTurnRate); + panel.getThrottle(currentSpeed, currentTurnRate); if(we->modifiers() != 0) { float newTurnRate = currentTurnRate; @@ -120,7 +120,7 @@ bool SpeedRender::wheelEvent(QWheelEvent *we) { } currentSpeed = newSpeed; } - panel.setCurrentSpeeds(currentSpeed, currentTurnRate); + panel.setThrottle(currentSpeed, currentTurnRate); return true; } -- GitLab