autowarefoundation / lucid_vision_driver Goto Github PK
View Code? Open in Web Editor NEWLucid Vision Camera ROS2 Driver with Arena SDK
License: Apache License 2.0
Lucid Vision Camera ROS2 Driver with Arena SDK
License: Apache License 2.0
All my LiDARs and PCs are under 192.168.0.1/24 subnet, the default lucid camera IP is under 169.254.0.1/16 if i am not wrong. If i only got one PC to run both perception and Autoware.universe, how can I reroute the lucid camera IP under the 192.168.0.1 subnet?
Environment:
Camera model: TRI032S-CC
Reproduce:
Error messages:
Starting >>> arena_camera
--- stderr: arena_camera
In file included from /home/ros/lucid_camera_ws/src/lucid_vision_driver/arena_camera/src/arena_camera_node.cpp:20:
/home/ros/lucid_camera_ws/src/lucid_vision_driver/arena_camera/include/arena_camera/arena_camera_node.h:28:10: fatal error: camera_info_manager/camera_info_manager.hpp: No such file or directory
28 | #include <camera_info_manager/camera_info_manager.hpp>
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [CMakeFiles/arena_camera_node.dir/build.make:63: CMakeFiles/arena_camera_node.dir/src/arena_camera_node.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [CMakeFiles/Makefile2:134: CMakeFiles/arena_camera_node.dir/all] Error 2
make: *** [Makefile:141: all] Error 2
---
Failed <<< arena_camera [4.42s, exited with code 2]
Summary: 0 packages finished [4.59s]
1 package failed: arena_camera
1 package had stderr output: arena_camera
On top of that question:
Inside the param file, camera_info_url: "file:///home/zeys/projects/main_autoware/autoware/src/sensor_component/external/arena_camera/config/camera0_info.yaml"
is being called for camera param file. What is this file used for? How can I modify it to fit my camera?
I want to load 2 cameras simultaneously, but the second camera throws an error:
ros2 launch lucid_vision_driver test_node_container.launch.py [INFO] [launch]: All log files can be found below /home/vwp/.ros/log/2023-04-20-11-04-32-212034-datalynx-8259 [INFO] [launch]: Default logging verbosity is set to INFO [INFO] [component_container-1]: process started with pid [8271] [component_container-1] [INFO] [1681981472.596805394] [perception.object_detection.lucid_camera_node_container]: Load Library: /home/vwp/autoware/install/arena_camera/lib/libarena_camera_node.so [component_container-1] [INFO] [1681981472.694545831] [perception.object_detection.lucid_camera_node_container]: Found class: rclcpp_components::NodeFactoryTemplate<ArenaCameraNode> [component_container-1] [INFO] [1681981472.695266744] [perception.object_detection.lucid_camera_node_container]: Instantiate class: rclcpp_components::NodeFactoryTemplate<ArenaCameraNode> [component_container-1] Camera readed from yaml file. Camera Name:camera_1 Frame id:camera_top/camera_link Serial no:231301220 Pixel_format:bgr8 FPS:19 [component_container-1] [WARN] [1681981474.116701298] [ARENA_CAMERA_HANDLER]: Not possible to set exposure value when auto exposure is enabled. [component_container-1] [WARN] [1681981474.120789087] [ARENA_CAMERA_HANDLER]: Not possible to set gain value when auto gain is enabled. [component_container-1] Camera:1852729698 is created. [component_container-1] [INFO] [1681981474.126826927] [arena_camera_node_right]: camera calibration URL: file:///home/vwp/autoware/src/vwp/external/lucid_vision_driver/config/test.yaml [component_container-1] Camera idx:1852729698 acquisition thread. [component_container-1] [INFO] [1681981474.150741900] [ARENA_CAMERA]: Not possible to use hardware based binning for horizontal binning:4 , software binning will be used. [component_container-1] [INFO] [1681981474.167400934] [ARENA_CAMERA]: Not possible to use hardware based binning for vertical binning:4 , software binning will be used. [INFO] [launch_ros.actions.load_composable_nodes]: Loaded node '/arena_camera_node_right' in container '/perception/object_detection/lucid_camera_node_container' [component_container-1] [INFO] [1681981474.393411868] [perception.object_detection.lucid_camera_node_container]: Found class: rclcpp_components::NodeFactoryTemplate<ArenaCameraNode> [component_container-1] [INFO] [1681981474.393524752] [perception.object_detection.lucid_camera_node_container]: Instantiate class: rclcpp_components::NodeFactoryTemplate<ArenaCameraNode> [component_container-1] Camera readed from yaml file. Camera Name:camera_2 Frame id:camera_top/camera_link Serial no:231301251 Pixel_format:bgr8 FPS:19 [component_container-1] [ERROR] [1681981474.604538974] [perception.object_detection.lucid_camera_node_container]: Component constructor threw an exception [ERROR] [launch_ros.actions.load_composable_nodes]: Failed to load node 'arena_camera_node_left' of type 'ArenaCameraNode' in container '/perception/object_detection/lucid_camera_node_container': Component constructor threw an exception
Here from my launch file:
`def generate_launch_description():
launch_arguments = []
context = LaunchContext()
camera_param_path = os.path.join(
FindPackageShare("arena_camera").perform(context),
"param/test.param.yaml"
)
with open(camera_param_path, "r") as f:
camera_yaml_param = yaml.safe_load(f)["/**"]["ros__parameters"]
nodes = []
nodes.append(
ComposableNode(
package="arena_camera",
plugin="ArenaCameraNode",
name="arena_camera_node_right",
parameters=[{"camera_name": camera_yaml_param['camera_name'],
"frame_id": camera_yaml_param['frame_id'],
"pixel_format": camera_yaml_param['pixel_format'],
"serial_no": 231301220, #camera_yaml_param['serial_no'],
"camera_info_url": camera_yaml_param['camera_info_url'],
"fps": camera_yaml_param['fps'],
"horizontal_binning": camera_yaml_param['horizontal_binning'],
"vertical_binning": camera_yaml_param['vertical_binning'],
"use_default_device_settings": camera_yaml_param['use_default_device_settings'],
"exposure_auto": camera_yaml_param['exposure_auto'],
"exposure_target": camera_yaml_param['exposure_target'],
"gain_auto": camera_yaml_param['gain_auto'],
"gain_target": camera_yaml_param['gain_target'],
"gamma_target": camera_yaml_param['gamma_target'],
}],
remappings=[
],
extra_arguments=[
{"use_intra_process_comms": True}
],
)
)
nodes.append(
ComposableNode(
package="arena_camera",
plugin="ArenaCameraNode",
name="arena_camera_node_left",
parameters=[{"camera_name": "camera_2",#camera_yaml_param['camera_name'],
"frame_id": "camera_top/camera_link",#camera_yaml_param['frame_id'],
"pixel_format": camera_yaml_param['pixel_format'],
"serial_no": 231301251, #camera_yaml_param['serial_no'],
"camera_info_url": camera_yaml_param['camera_info_url'],
"fps": camera_yaml_param['fps'],
"horizontal_binning": camera_yaml_param['horizontal_binning'],
"vertical_binning": camera_yaml_param['vertical_binning'],
"use_default_device_settings": camera_yaml_param['use_default_device_settings'],
"exposure_auto": camera_yaml_param['exposure_auto'],
"exposure_target": camera_yaml_param['exposure_target'],
"gain_auto": camera_yaml_param['gain_auto'],
"gain_target": camera_yaml_param['gain_target'],
"gamma_target": camera_yaml_param['gamma_target'],
}],
remappings=[
],
extra_arguments=[
{"use_intra_process_comms": True}
],
)
)
container = ComposableNodeContainer(
name="lucid_camera_node_container",
namespace="/perception/object_detection",
package="rclcpp_components",
executable="component_container",
composable_node_descriptions=nodes,
output="both",
)
return LaunchDescription(
[
*launch_arguments,
container
]
)
Do i miss something here?
Hi,
I can't see any parameter folders on my installation.
Is the repo up to date? Or, we should create a new yml file for it?
If you have only one camera work on this param file : <your_ws>/src/arena_camera/param/lucid_vision_camera.param.yml If you have more than one camera work on this param file : <your_ws>/src/arena_camera/param/multi_camera.param.yml
This issue is fairly old but it seems to be the root cause of a problem building this package with iron. The declare_parameter function behavior has changed slightly.
ros2/rclcpp#1691 (comment)
ros2/rclcpp#1522
Should be a relatively easy (and backwards compatible I think?) fix to add default values or add rclcpp::PARAMETER_STRING
etc to the Camera Setting constructor to allow unset values.
/home/workspace/src/lucid_vision_driver/src/arena_camera_node.cpp:57:26: error: no matching function for call to ‘ArenaCameraNode::declare_parameter(const char [12])’
57 | this->declare_parameter("camera_name");
| ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~
(and)
In file included from /opt/ros/iron/include/camera_info_manager/camera_info_manager/camera_info_manager.hpp:45,
from /home/workspace/src/lucid_vision_driver/include/arena_camera/arena_camera_node.h:24,
from /home/workspace/src/lucid_vision_driver/src/arena_camera_node.cpp:17:
/opt/ros/iron/include/rclcpp/rclcpp/node.hpp:479:3: note: candidate: ‘template<class ParameterT> auto rclcpp::Node::declare_parameter(const string&, const ParameterT&, const ParameterDescriptor&, bool)’
479 | declare_parameter(
| ^~~~~~~~~~~~~~~~~
/opt/ros/iron/include/rclcpp/rclcpp/node.hpp:479:3: note: template argument deduction/substitution failed:
/home/workspace/src/lucid_vision_driver/src/arena_camera_node.cpp:57:26: note: candidate expects 4 arguments, 1 provided
I installed the package following instructions but I see the package name is lucid_vision_driver
while readme
file says another. However, I am now using correct package name in the launch file and got this error:
zillur@trc:~$ ros2 launch lucid_vision_driver test_node_container.launch.py
[INFO] [launch]: All log files can be found below /home/zillur/.ros/log/2023-06-18-12-40-10-272274-trc-4375
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [component_container-1]: process started with pid [4388]
[component_container-1] [INFO] [1687117210.670763303] [perception.object_detection.camera_node_right]: Load Library: /home/zillur/ros2_ws/install/lucid_vision_driver/lib/libarena_camera_node.so
[component_container-1] [INFO] [1687117210.751479257] [perception.object_detection.camera_node_right]: Found class: rclcpp_components::NodeFactoryTemplate<ArenaCameraNode>
[component_container-1] [INFO] [1687117210.751533363] [perception.object_detection.camera_node_right]: Instantiate class: rclcpp_components::NodeFactoryTemplate<ArenaCameraNode>
[component_container-1] Camera readed from yaml file. Camera Name:camera_1 Frame id:camera_top/camera_link Serial no:221202855 Pixel_format:bgr8 FPS:15
[component_container-1] ~ArenaCamerasHandler()
[ERROR] [component_container-1]: process has died [pid 4388, exit code -11, cmd '/opt/ros/humble/lib/rclcpp_components/component_container --ros-args -r __node:=camera_node_right -r __ns:=/perception/object_detection'].
^C[WARNING] [launch]: user interrupted with ctrl-c (SIGINT)
[WARNING] [launch_ros.actions.load_composable_nodes]: Abandoning wait for the '/perception/object_detection/camera_node_right/_container/load_node' service response, due to shutdown.
zillur@trc:~$
First of all, I did what was mentioned in the readme file and build the workspace correctly. I replaced my own calibration parameters with those in the test_full_res.yaml file. I visualized via Rviz2 and there was no problem. But when I watch the bandwidths of the topics, I realized that the rectified image use much bw. Is it normal?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.