Skip to content

Commit f3d1c44

Browse files
committed
add:ros2 framework build
1 parent b370dd2 commit f3d1c44

3 files changed

Lines changed: 46 additions & 38 deletions

File tree

example/GigeCam/CMakeLists.txt

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,18 +34,39 @@ if (NOT rclcpp_FOUND)
3434
message(STATUS "rclcpp not found. ros2 demo will not be built")
3535
else ()
3636
message(STATUS "rclcpp found. ros2 demo will be built")
37+
find_package(ament_cmake REQUIRED)
38+
find_package(std_msgs REQUIRED)
39+
find_package(sensor_msgs REQUIRED)
40+
find_package(image_transport REQUIRED)
41+
find_package(OpenCV REQUIRED)
42+
find_package(cv_bridge REQUIRED)
3743
add_executable(${PROJECT_NAME}_ros2
3844
main_ros2.cpp
3945
mv_cam.cpp
4046
mv_cam.h
4147
)
4248
target_link_directories(${PROJECT_NAME}_ros2 PRIVATE ${MVCAM_LIB_DIR})
43-
target_include_directories(${PROJECT_NAME}_ros2 PUBLIC mvcam/include)
44-
target_link_libraries(${PROJECT_NAME}_ros2 PRIVATE
49+
target_include_directories(${PROJECT_NAME}_ros2 PUBLIC mvcam/include ${OpenCV_INCLUDE_DIRS})
50+
target_link_libraries(${PROJECT_NAME}_ros2
4551
infinite_sense_core
52+
${OpenCV_LIBRARIES}
4653
MvCameraControl
47-
rclcpp::rclcpp
4854
)
55+
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
56+
set(CMAKE_INSTALL_RPATH ${MVS_LIBRARIES})
57+
ament_target_dependencies(${PROJECT_NAME}_ros2
58+
rclcpp
59+
std_msgs
60+
sensor_msgs
61+
image_transport
62+
OpenCV
63+
cv_bridge
64+
)
65+
install(TARGETS ${PROJECT_NAME}_ros2
66+
DESTINATION lib/${PROJECT_NAME}
67+
)
68+
ament_package()
69+
4970
endif ()
5071
# **************************编译ROS1节点*****************************
5172
find_package(catkin QUIET)

example/GigeCam/main_ros2.cpp

Lines changed: 21 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,27 @@
1-
#include "rclcpp/rclcpp.hpp"
2-
// 加入SDK头文件
31
#include "infinite_sense.h"
4-
// 加入工业相机头文件
5-
#include "mv_cam.h"
6-
using namespace infinite_sense;
7-
// 自定义回调函数
8-
void ImuCallback(const void* msg, size_t) {
9-
const auto* imu_data = static_cast<const ImuData*>(msg);
10-
// 处理IMU数据
11-
}
12-
// 自定义回调函数
13-
void ImageCallback(const void* msg, size_t) {
14-
const auto* cam_data = static_cast<const CamData*>(msg);
15-
// 处理图像数据
16-
}
17-
int main() {
18-
// 1.创建同步器
19-
Synchronizer synchronizer;
20-
synchronizer.SetUsbLink("/dev/ttyACM0", 921600);
2+
#include "rclcpp/rclcpp.hpp"
3+
#include "std_msgs/msg/string.hpp"
4+
#include "sensor_msgs/msg/image.hpp"
5+
#include "sensor_msgs/image_encodings.hpp"
6+
#include <image_transport/image_transport.hpp>
7+
#include "opencv2/highgui/highgui.hpp"
8+
#include <opencv2/imgproc.hpp>
9+
class InfiniteSenseGigeDriver : public rclcpp::Node {
10+
public:
11+
InfiniteSenseGigeDriver() : Node("gige_driver"),node_handle_(),transport_(node_handle_),img_pub_(transport_.advertise("camera/image_raw", 1)) {
2112

22-
// 2.配置同步接口
23-
auto mv_cam = std::make_shared<MvCam>();
24-
mv_cam->SetParams({{"camera_1", CAM_1}});
25-
synchronizer.UseSensor(mv_cam);
13+
}
14+
private:
15+
rclcpp::Node::SharedPtr node_handle_ ;
16+
image_transport::ImageTransport transport_;
17+
image_transport::Publisher img_pub_;
18+
};
2619

27-
// 3.开启同步
28-
synchronizer.Start();
20+
int main(int argc, char* argv[])
21+
{
22+
23+
rclcpp::init(argc, argv);
24+
rclcpp::shutdown();
2925

30-
// 4.接收数据
31-
Messenger::GetInstance().SubStruct("imu_1", ImuCallback);
32-
Messenger::GetInstance().SubStruct("camera_1", ImageCallback);
33-
// 阻塞线程
34-
while (true) {
35-
std::this_thread::sleep_for(std::chrono::milliseconds(100));
36-
}
37-
// 5.停止同步
38-
synchronizer.Stop();
3926
return 0;
4027
}

example/GigeCam/package.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<name>gige_cam</name>
44
<version>1.0.0</version>
55
<description>The infinite sense camera package</description>
6-
<maintainer email="">infinite sense</maintainer>
6+
<maintainer email="www.qq837374741@foxmail.com">infinite sense</maintainer>
77
<license>BSD</license>
88
<buildtool_depend>ament_cmake</buildtool_depend>
99

0 commit comments

Comments
 (0)