运行环境:Ubuntu20.04 (64-Bit)
运行软件:pylon Viewer 64-Bit,pylon Release 6.3.0
相机型号:acA 1920-25gc (GigE接口)
触发电平源:单片机
0 准备工作
调试外部硬触发前,已经成功读取图像,并且实现了相机的简单功能。
Windows10下pylon Viewer读取basler相机图像_abanchao的博客-_pylon viewer使用教程
Ubuntu20.04 ROS读取basler相机图像步骤。_abanchao的博客-CSDN博客_basler ubuntu
1 软件设置
1.1 获取图像参数设置
- acquisitionframecount: n 触发一次采集n张图像
- trigger selector: acquisition start(采集开始)frame start一个信号只能拍一张
- trigger mode: on 开启外触发模式
- trigger source: line 1
- trigger activation: rising edge 电平上升沿触发,下降沿也可以
1.2 保存图像设置
窗口-> 录制设置
- 输出格式和录制缓冲区大小:默认即可
- 帧录制间隔:1帧,否则会出现好多张照片
- 输出文件夹:图片保存位置。
2 硬件触发
建议用0-5V触发,24V触发的话需要加2k电阻,以降低电流,否则会烧坏相机。
用单片机的电压输出引脚,有3.3V,也有5V。
关键一步!!点击一下连拍!!手持触发I/O线即可触发。
点击录制即可将图像按照前面的设置自动保存到指定路径。
3 硬触发图像发送到话题topic
截至上一步,实现了相机的硬触发功能,我做多传感器融合,还需要把硬触发的图像统一到ROS下,与GPS,INS,LiDAR统一数据保存形式,即rosbag。但是basler官方的ROS驱动包属于软触发,那么就得根据相机的函数库进行二次开发。
官网有产品文档,介绍了二次开发的函数,以及示例代码。
Trigger Selector | Basler (baslerweb.com)
本人没有做过相机的二次开发工作,不知从何下手,感谢有大佬的博客教程,实现了ROS下的硬触发,但是没有发送到话题topic。
Basler ace 相机软件设置、 硬件连接、软件触发,程序硬件触发全套详细资料_贵在坚持,不忘初心的博客-CSDN博客_basler相机软件使用手册
进一步地,为实现保存的rosbag,增加了图像格式转换和发布topic两个内容。
在hardwaretrigger.cpp增加以下代码
ros::NodeHandle nh;
ros::Publisher pub = nh.advertise<sensor_msgs::Image>("camera_raw", 2000);
sensor_msgs::Image msg;
ros::Rate loop_rate(10);
sensor_msgs::ImagePtr msg = cv_bridge::CvImage(std_msgs::Header(), "bgr8", cv_img).toImageMsg();
pub.publish(msg);
loop_rate.sleep();
调试这个程序包时,有以下注意事项:
- 现在官方软件pylon viewer配置参数并成功硬触发后,再launch这个程序包。
- 编译之后,要把上级目录的build文件夹复制的子目录下,即与launch文件夹同级,重要修改时,最好把子目录的build文件夹删了重新复制。
- 不转换一次格式的话,不完全符合ROS的image格式,可以录包,但是无法提取,无法查看。