Skip to content

Commit ed4d33f

Browse files
committed
Added a camera_reader node that reads the raw camera data coming from /wrist_camera/image_raw topic
1 parent 48ff834 commit ed4d33f

File tree

3 files changed

+69
-0
lines changed

3 files changed

+69
-0
lines changed

sasc/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
log/

sasc/CMakeLists.txt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ find_package(cv_bridge REQUIRED)
1414
find_package(image_transport REQUIRED)
1515
find_package(moveit_core REQUIRED)
1616
find_package(moveit_ros_planning_interface REQUIRED)
17+
find_package(OpenCV REQUIRED)
1718

1819
if(BUILD_TESTING)
1920
find_package(ament_lint_auto REQUIRED)
@@ -30,5 +31,19 @@ endif()
3031
install(DIRECTORY worlds
3132
DESTINATION share/${PROJECT_NAME}
3233
)
34+
add_executable(camera_reader src/camera_reader.cpp)
35+
36+
ament_target_dependencies(camera_reader
37+
rclcpp
38+
sensor_msgs
39+
cv_bridge
40+
image_transport
41+
)
42+
43+
target_link_libraries(camera_reader ${OpenCV_LIBRARIES})
44+
45+
install(TARGETS
46+
camera_reader
47+
DESTINATION lib/${PROJECT_NAME})
3348

3449
ament_package()

sasc/src/camera_reader.cpp

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
#include "rclcpp/rclcpp.hpp"
2+
#include "sensor_msgs/msg/image.hpp"
3+
#include "cv_bridge/cv_bridge.h"
4+
#include "opencv2/highgui/highgui.hpp"
5+
6+
using namespace std;
7+
8+
class CameraReader : public rclcpp::Node {
9+
public:
10+
CameraReader() : Node("camera_reader_node"){
11+
subscription_ = this -> create_subscription<sensor_msgs::msg::Image>(
12+
"/wrist_camera/image_raw",
13+
10,
14+
std::bind(&CameraReader::topic_callback, this, std::placeholders::_1)
15+
);
16+
17+
RCLCPP_INFO(this-> get_logger(), "waiting for camera data....");
18+
}
19+
20+
private:
21+
void topic_callback(const sensor_msgs::msg::Image::SharedPtr msg) const {
22+
cv_bridge::CvImagePtr cv_ptr;
23+
try{
24+
cv_ptr = cv_bridge::toCvCopy(msg, sensor_msgs::image_encodings::BGR8);
25+
26+
}catch (cv_bridge::Exception& e) {
27+
RCLCPP_ERROR(this->get_logger(), "cv_bridge exception: %s", e.what());
28+
return;
29+
}
30+
31+
int height = cv_ptr->image.rows;
32+
int width = cv_ptr->image.cols;
33+
34+
static int count = 0;
35+
if (count%30 == 0){
36+
RCLCPP_INFO(this->get_logger(), "Received Image: %dx%d pixels", width, height);
37+
38+
}
39+
count++;
40+
}
41+
rclcpp::Subscription<sensor_msgs::msg::Image>::SharedPtr subscription_;
42+
43+
};
44+
45+
46+
int main(int argc, char*argv[]){
47+
rclcpp::init(argc, argv);
48+
rclcpp::spin(std::make_shared<CameraReader>());
49+
50+
rclcpp::shutdown();
51+
return 0;
52+
}
53+

0 commit comments

Comments
 (0)