Skip to content

Commit e2b11ab

Browse files
authored
Merge pull request #311 from firesurfer/ros2
Resolve Symlinks
2 parents f5d3e5b + ca58339 commit e2b11ab

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

src/ros2/usb_cam_node.cpp

+11-2
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
#include <sstream>
3131
#include <string>
3232
#include <vector>
33-
33+
#include <filesystem>
3434
#include "usb_cam/usb_cam_node.hpp"
3535
#include "usb_cam/utils.hpp"
3636

@@ -121,6 +121,15 @@ void UsbCamNode::service_capture(
121121
}
122122
}
123123

124+
std::string resolve_device_path(const std::string & path)
125+
{
126+
if (std::filesystem::is_symlink(path)) {
127+
// For some reason read_symlink only returns videox
128+
return "/dev/" + std::string(std::filesystem::read_symlink(path));
129+
}
130+
return path;
131+
}
132+
124133
void UsbCamNode::init()
125134
{
126135
while (m_parameters.frame_id == "") {
@@ -246,7 +255,7 @@ void UsbCamNode::assign_params(const std::vector<rclcpp::Parameter> & parameters
246255
} else if (parameter.get_name() == "av_device_format") {
247256
m_parameters.av_device_format = parameter.value_to_string();
248257
} else if (parameter.get_name() == "video_device") {
249-
m_parameters.device_name = parameter.value_to_string();
258+
m_parameters.device_name = resolve_device_path(parameter.value_to_string());
250259
} else if (parameter.get_name() == "brightness") {
251260
m_parameters.brightness = parameter.as_int();
252261
} else if (parameter.get_name() == "contrast") {

0 commit comments

Comments
 (0)