This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具与软件:
您好、我想在 sk-tda4vm 上启用摄像机 arducam PTZ 摄像机(github.com/.../master 在哪里可以找到与此相机相关的 dtbo 文件?
我正在使用 SD 卡映像 tisdk-edgeai-image-j721e-evm.wic (版本10.X)
非常感谢
尊敬的 Mariem:
您能否说明您要启用的 Arducam PTZ 摄像机型号? 我们尚未使用我们的设备测试或验证任何 PTZ 摄像机、因此开箱即用后不支持此功能。 有关 SK-TDA4VM 支持的传感器列表、请参阅以下内容: https://software-dl.ti.com/jacinto7/esd/processor-sdk-linux-sk-tda4vm/10_00_00/exports/edgeai-docs/devices/TDA4VM/linux/getting_started.html#hardware-setup
谢谢!
Fabiana
Fabiana、您好!
感谢您的回答。 我正在使用摄像机 PTZ Arducam 8 MP (链接如下: https://www.arducam.com/product/b01678mp-arducam-8mp-pan-tilt-zoom-ptz-camera-for-raspberry-pi/ )
无法将其集成并用于我正在实施的自定义模型。 它是一个模型,可以检测人的脸,然后继续跟踪它。
如果可能、您能否 建议我遵循正确的方法?
非常感谢、
Mariem
尊敬的 Mariem:
链接的传感器基于该器件支持的8MP IMX219传感器。 此处概述了启用此传感器的说明: https://software-dl.ti.com/jacinto7/esd/processor-sdk-linux-sk-tda4vm/10_00_00/exports/edgeai-docs/devices/TDA4VM/linux/getting_started.html#rpiv2-imx219-raw-sensor
进行所需更改后、您应该会通过重新启动设备(运行./init_script.sh 或./scripts/setup_cameras.sh)来看到传感器信息、如下所示: https://software-dl.ti.com/jacinto7/esd/processor-sdk-linux-sk-tda4vm/10_00_00/exports/edgeai-docs/common/configuration_file.html#camera-sources-v4l2
在您的自定义模型中、使用提供的传感器信息作为输入源。 浏览 SDK 文档中的演示和教程、了解如何实现这一点。 如果您有任何其他问题、请告诉我。
谢谢!
Fabiana
Fabiana、您好!
非常感谢:)我成功地连接了相机,我可以看到传感器信息时启动脚本: Setup_cameras.sh。
但是、当我尝试测试时、我遇到了一些错误。
在目标侧、我成功运行 ROS 节点:
ros2启动 gscam2 v4l_imx219_launch.py cam_id:=X subdev_id:=Y
但从 PC 端看、我无法直观地看到摄像头的输出。 我使用了以下命令:
ros2启动 ti_viz_nodes gscam_nv12_launch.py 宽度:=1280高度:=720
出现以下错误:
你有想法吗?
非常感谢、
Mariem
你好
我们负责处理此线程的专家 Fabiana 在9月25日之前不在办公室。 请预计回复将延迟。
谢谢。
您好!
感谢您提供的信息。
尊敬的 Mariem:
您能否验证是否能够运行其中一个 IMX219 TI 演示应用并在 PC 上查看结果?
谢谢!
Fabiana
Fabiana、您好!
遗憾的是、示例不起作用。
启动 IMX219的物体检测示例时、RVIZ 中未检测到图像(在 PC 上)
在下面的屏幕截图中、您可以看到我的摄像头已被检测到:
在接下来的屏幕截图中、将在目标上启动 ROS 节点并在 PC 上显示结果:
您是否知道它为什么不起作用? 在执行示例时、我可以看到一个错误:[ERROR][1727446820.197511301][CAMER_CALIBRATION_parserser]:无法打开摄像头校准文件[camera_calibration]/opt/imaging/imx390/imx390_35244_equidistant_1280x720_rect.yaml
如果是问题的原因、我该如何解决? 因为我找不到 YAML 文件。
非常感谢、
Mariem
尊敬的 Mariem:
您是否遵循了机器人 SDK 设置说明? 如果没有、请按照以下页面中概述的步骤操作、如果您有任何问题、请告诉我。
https://software-dl.ti.com/jacinto7/esd/robotics-sdk/10_00_00/TDA4VM/docs/source/docker/README.html
谢谢!
Fabiana
Fabiana、您好!
是的、我按照机器人 SDK 说明进行了操作。
运行示例时:ros2启动 ti_vision_cnn gscam_objdet_cnn_imx219_launch.py cam_id:=X subdev_id:=Y
我得到此错误: [致命][1727859184.979048301][camer.gscap_publisher]:无法暂停流,检查 gscap_config
和从 PC 端运行:ros2启动 ti_viz_nodes rviz_objdet_cnn_launch.py。 但我收到了 RVIZ 中的消息:"没有图像"。
我尝试了使用连接电路板时屏幕上显示的边缘 AI 库示例来测试摄像头。 我使用了自定义选项、并选择了摄像机作为输入。 我可以使用摄像头作为输入来运行边缘 AI 模型。
我仍然忽略在尝试 ROS 示例时为什么它不起作用。 你有想法吗?
非常感谢、
Mariem
尊敬的 Mariem:
gscam ROS 节点使用下面的 Gstreamer。 因此、让我们首先看看我们是否可以直接创建不带 ROS 的 GStreamer 流水线。
使用 setup_camerases_v3link.sh 设置摄像机后、运行以下命令时会看到什么?
gst-launch-1.0 v4l2src device=/dev/video-imx219-cam0 io-mode=5 DO-timestamp=true! \
video/x-bayer、宽度=1920、高度=1080、格式=rggb! \
tiovxisp sink_0::device=V4L-imx219-subdev0 dcc-isp-file=/opt/imaging/imx219/linear/dcc_viss_10b_1640x1232.bin \
sink_0:::dcc-2a-file=/opt/imaging/imx219/linear/dcc_2a_10b_1640x1232.bin format-msb=7 sensor-name=sensor_Sony_IMX219_rpi ! \
video/x-raw、格式=NV12! \
tiovxmultiscaler! \
tiovxdlcolorconvert target=1 out-pool-size=4! autovideosink
此致、
Takuma
你好、Takuma、
感谢您的回答。
命令的输出如下:
root@tda4vm-sk:/opt/edgeai-gst-apps/scripts #./setup_cameras_v3link.sh
无法设置格式:参数无效(22)
检测到 IMX219摄像头0
器件=/dev/video-imx219-cam0
名称= imx219
格式=[fmt:SRGGB8_1X8/1920x1080字段:none]
subdev_id =/dev/v4l-imx219-subdev0
ISP_必需=是
LDC_required = yes
无法设置路由:参数无效(22)
无法设置格式:参数无效(22)
无法设置路由:参数无效(22)
无法设置格式:参数无效(22)
无法设置路由:参数无效(22)
无法设置格式:参数无效(22)
root@tda4vm-sk:/opt/edgeai-gst-apps/scripts gst-launch-1.0 v4l2src device=/dev/video-imx219-cam0 io-mode=5 DO-timestamp=true! \
> video/x-bayer、宽度=1920、高度=1080、格式=rggb! \
> tiovxisp sink_0::device=v4l-imx219-subdev0 dcc-isp-file=/opt/imaging/imx219/linear/dcc_viss_10b_1640x1232.bin \
> sink_0:::dcc-2a-file=/opt/imaging/imx219/linear/dcc_2a_10b_1640x1232.bin format-msb=7 sensor-name=sensor_sony_imx219_rpi ! \
> video/x-raw、格式=NV12! \
> tiovxmultiscaler! \
> tiovxdlcolorconvert target=1 out-pool-size=4! autovideosink
应用程序:初始化...!!!
114.316295 s:内存:初始化...!!!
114.316331s:MEM:初始化 DMA 堆(FD=8)!!!
114.316437 s:内存:初始化...完成!!!
114.316446 s:IPC:初始化...!!!
114.378727 s:IPC:初始化...完成!!!
remote_servic: init…!!
Remote_servic:初始化...完成!!!
114.386335 s:GTC 频率= 200 MHz
应用程序:初始化...完成!!!
114.390541 s: vx_zone_init:Enabled
114.390569 s: vx_zone_error:Enabled
114.390577 s: vx_zone_warning:Enabled
114.402203 s: vx_zone_init:[tivxPlatformCreateTargetId:124]添加了目标 MPU-0
114.402409 s: vx_zone_init:[tivxPlatformCreateTargetId:124]添加了目标 MPU-1
114.402491 s: vx_zone_init:[tivxPlatformCreateTargetId:124]添加了目标 MPU-2
114.402565 s: vx_zone_init:[tivxPlatformCreateTargetId:124]添加了目标 MPU-3
114.402576 s: vx_zone_init:[tivxInitLocal:136]初始化已完成!!
114.405448 s: vx_zone_init:[tivxHostInitLocal:106]主机初始化已完成!!!
警告:错误的管道:无法将元素"tiovxdlcolorconverter"中的属性"target"设置为"1"
尊敬的 Mariem:
抱歉、您能从脚本中删除 target=1吗?
此外、我可能会将硬件设置与本常见问题解答中使用的 Arducam V3Link 摄像头套件相混淆: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1328512/faq-sk-am68-enabling-arducam-v3link-camera-kit-on-sk-am68-and-sk-am69
您是否可以尝试使用的原始 setup_cameras.sh 脚本并共享日志?
此致、
Takuma
你好、Takuma、
"对不起,我不能接受。"
日志如下:
root@tda4vm-sk:/opt/edgeai-gst-apps/scripts #./setup_cameras.sh
检测到 IMX219摄像头0
器件=/dev/video-imx219-cam0
名称= imx219
格式=[fmt:SRGGB8_1X8/1920x1080]
subdev_id =/dev/v4l-imx219-subdev0
ISP_必需=是
root@tda4vm-sk:/opt/edgeai-gst-apps/scripts gst-launch-1.0 v4l2src device=/dev/video-imx219-cam0 io-mode=5 DO-timestamp=true! \
> video/x-bayer、宽度=1920、高度=1080、格式=rggb! \
> tiovxisp sink_0::device=v4l-imx219-subdev0 dcc-isp-file=/opt/imaging/imx219/linear/dcc_viss_10b_1640x1232.bin \
> sink_0:::dcc-2a-file=/opt/imaging/imx219/linear/dcc_2a_10b_1640x1232.bin format-msb=7 sensor-name=sensor_sony_imx219_rpi ! \
> video/x-raw、格式=NV12! \
> tiovxmultiscaler! \
> tiovxdlcolorconvert out-pool-size=4! autovideosink
应用程序:初始化...!!!
142.016677 s:内存:初始化...!!!
142.016722 s:MEM:初始化 DMA 堆(FD=8)!!
142.016827 s:内存:初始化...完成!!
142.016837 s:IPC:初始化...!!!
142.075694 s:IPC:初始化...完成!!!
remote_servic: init…!!
Remote_servic:初始化...完成!!!
142.084894s:GTC 频率= 200 MHz
应用程序:初始化...完成!!!
142.089222 s: vx_zone_init:Enabled
142.089254 s: vx_zone_error:Enabled
142.089261 s: vx_zone_warning:Enabled
142.099711 s: vx_zone_init:[tivxPlatformCreateTargetId:124]添加了目标 MPU-0
142.099856 s: vx_zone_init:[tivxPlatformCreateTargetId:124]添加了目标 MPU-1
142.099935 s: vx_zone_init:[tivxPlatformCreateTargetId:124]添加了目标 MPU-2
142.100005 s: vx_zone_init:[tivxPlatformCreateTargetId:124]添加了目标 MPU-3
142.100015 s: vx_zone_init:[tivxInitLocal:136]初始化已完成!!
142.102948 s: vx_zone_init:[tivxHostInitLocal:106]主机初始化已完成!!!
正在将管道设置为暂停...
[134.866177] kauditd_printk_skb:抑制5次回调
[134.866184] 审核: type=1006审核(1728987872.910:23): pid=1622 uid=0 old-auid=4294967295 auid=1000 tty=(none) old-ses=4294967295 ses=4 res=1
[ 134.884537]审核:type=1300审核(1728987872.910:23):arch=c00000b7 syscall=64 sucall=yes exit=4 a0=8 a1=ffd1904b98 a2=4 a3=1项=0 psid=1 fid=1622 auid=1000 uid=0 exe=0 euid=0 suid=0 suid=0 sid=0sid=gid=0 /usr/lib sucid=0 sucid=0 sid=0 sid=gid=0
systemd/systemd-executor" key=(null)
[134.911658] audit : type=1327 audit (1728987872.910:23): proctitle="( systemd)"
[135.151148] 审核: type=1006审核(1728987873.194:24 ): pid=1619 uid=0 old-auid=4294967295 auid=1000 tty=tty7 old-ses=4294967295 ses=5 res=1
[ 135.163980]审核:type=1300审核(1728987873.194:24):arch=c00000b7 syscall=64成功=yes exit=4 a0=8 a1=ffffccbcd5b8 a2=4 a3=1项=0 pid=1 pid=1619 auid=1000 uid=0 euid=0 euid=0 euid=0 euid=0 sucbid=0 sucbcd5b8 a2=4 gid=0s=0"did=gid=0 /usr/lib/sys sucgid=0
temd/systemd-executor" key=(null)
[135.190576] 审核: type=1327审核(1728987873.194:24 ): proctitle="( Weston )"
警告:仍连接代理时队列0xffffff88000be0已销毁:
XDG_WM_BASE@7仍连接
WL_SEAT@6仍然连接
WL_subcomposator@5仍处于连接状态
WL_COMPOSER@4仍处于连接状态
WL_REGISTRY@2仍附加
管道处于活动状态、不需要 PREROLL ...
从元素"autovideosink0"获得的上下文:gst.gl.GLDisplay=context、gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplayWayland\)\ gldisplaywayland0";
管道是 PREROLLED ...
正在将管道设置为播放...
新时钟:GstSystemClock
已尝试将事件添加到销毁的队列
[143.087662] audit:type=1701 audit (1728987881.134:25):auid=4294967295 uid=0 gid=0 ses=4294967295 pid=1606 comm="gstglcontext" exe"/usr/bin/gst-launch-1.0 sig =6 res=1
[143.1336]审核: type=1334审核(1728987881.178:26 ): prog-id=21 op=load
[143.142632]审核:type=1334审核(1728987881.186:27):prog-id=22 op=load
[143.149559] audit : type=1334 audit (1728987881.186:28): prog-id=23 op=load
已中止(已转储内核)
root@tda4vm-sk:/opt/edgeai-gst-apps/scripts #[ 144.668191]审核:type=1334审核(1728987882.714:29):prog-id=23 op=unload
[144.675161] audit : type=1334 audit (1728987882.714:30): prog-id=22 op=unload
[144.682121]审核: type=1334审核(1728987882.714:31): prog-id=21 op=unload
尊敬的 Mariem:
欢迎回来! 我很抱歉听到有关疾病的消息,但很高兴听到你的回复。
现在、对于流水线、您可以将两个"...1640x1232.bin"更改为1920x1080.bin 并重试吗?
如果这样可行、那么最可能的问题是 Robotics SDK 示例具有一些硬编码的文件名、由于在这个新示例中、我们使用的摄像头模块略有不同、因此分辨率与示例预期的分辨率不同。
此致、
Takuma
你好、Takuma、
非常感谢。
我尝试按照您的建议更改命令。
我看不到摄像头工作正常、但出现了一个黑色窗口。
运行。
再次感谢、
Mariem
root@tda4vm-sk:/opt/edgeai-gst-apps/scripts #./setup_cameras.sh
检测到 IMX219摄像头0
器件=/dev/video-imx219-cam0
名称= imx219
格式=[fmt:SRGGB8_1X8/1920x1080]
subdev_id =/dev/v4l-imx219-subdev0
ISP_必需=是
root@tda4vm-sk:/opt/edgeai-gst-apps/scripts gst-launch-1.0 v4l2src device=/dev/video-imx219-cam0 io-mode=5 DO-timestamp=true! \
> video/x-bayer、宽度=1920、高度=1080、格式=rggb! \
> tiovxisp sink_0::device=v4l-imx219-subdev0 dcc-isp-file=/opt/imaging/imx219/linear/dcc_viss_10b_1920x1080.bin \
> sink_0:::dcc-2a-file=/opt/imaging/imx219/linear/dcc_2a_10b_1920x1080.bin format-msb=7 sensor-name=sensor_sony_imx219_rpi ! \
> video/x-raw、格式=NV12! \
> tiovxmultiscaler! \
> tiovxdlcolorconvert out-pool-size=4! autovideosink
应用程序:初始化...!!!
264.455141 s:内存:初始...!!
264.455186 s:MEM:已初始化的 DMA 堆(FD=8)!!
264.455292 s:内存:初始化...完成!!
264.455301 s:IPC:初始化...!!
264.521745 s:IPC:初始化...完成!!
remote_servic: init…!!
Remote_servic:初始化...完成!!!
264.531648 s:GTC 频率= 200 MHz
应用程序:初始化...完成!!!
264.535372 s: vx_zone_init:Enabled
264.535397 s: vx_zone_error:Enabled
264.535403 s: vx_zone_warning:Enabled
264.545945 s: vx_zone_init:[tivxPlatformCreateTargetId:124]添加了目标 MPU-0
264.546069 s: vx_zone_init:[tivxPlatformCreateTargetId:124]添加了目标 MPU-1
264.546152 s: vx_zone_init:[tivxPlatformCreateTargetId:124]添加了目标 MPU-2
264.546222 s: vx_zone_init:[tivxPlatformCreateTargetId:124]添加了目标 MPU-3
264.546333 s: vx_zone_init:[tivxInitLocal:136]初始化已完成!!
264.548755 s: vx_zone_init:[tivxHostInitLocal:106]主机初始化已完成!!!
正在将管道设置为暂停...
[257.231774] 审核:type=1006审核(1729164022.147:23):pid=1734 uid=0 old-auid=4294967295 auid=1000 tty=(none) old-ses=4294967295 ses=4 res=1
[ 257.244677]审核:type=1300审核(1729164022.147:23):arch=c00000b7 syscall=64 sucall=yes exit=4 a0=8 a1=ffd69fdec8 a2=4 a3=1 ites=0 psid=1 pid=1734 auid=1000 uid=0 gid=0 euid=0 suid=0 suid=0 sid=0 suid=0 sid=0 sucid=0"d=0 sucid=0)/usr/lib
systemd/systemd-executor" key=(null)
[257.271723] audit : type=1327 audit (1729164022.147:23): proctitle="(systemd)"
[257.553047] 审核:type=1006审核(1729164022.467:24):pid=1731 uid=0 old-auid=4294967295 auid=1000 tty=tty7 old-ses=4294967295 ses=5 res=1
[ 257.565713]审核:type=1300审核(1729164022.467:24):arch=c00000b7 syscall=64 sucall=yes exit=4 a0=8 a1=ffe4b52d98 a2=4 a3=1项=0 pid=1 pid=1731 auid=1000 uid=0 exe=0 euid=0 euid=0 suid=0 suid=0 suid=0 sucid=4 a2id=gid=0 /usr/lib/sys 上 sucyid=gid=0
temd/systemd-executor" key=(null)
[257.592696] 审计:类型=1327审计(1729164022.467:24 ): proctitle="( Weston )"
警告:仍连接代理时队列0xffffff90000be0已销毁:
XDG_WM_BASE@7仍连接
WL_SEAT@6仍然连接
WL_subcomposator@5仍处于连接状态
WL_COMPOSER@4仍处于连接状态
WL_REGISTRY@2仍附加
管道处于活动状态、不需要 PREROLL ...
从元素"autovideosink0"获得的上下文:gst.gl.GLDisplay=context、gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplayWayland\)\ gldisplaywayland0";
管道是 PREROLLED ...
正在将管道设置为播放...
新时钟:GstSystemClock
重新分配延迟...
266.010709 s: vx_zone_error:[vxMapUserDataObject:457]无可用用户数据对象映射
266.010765s: vx_zone_error:[vxMapUserDataObject:458]可能需要在 tiovx/include/TI/tivx_config.h 中增加 TIVX_USER_DATA_object_MAX_maps 的值
266.010775 s: vx_zone_error:[vxMapUserDataObject:457]无可用用户数据对象映射
266.010782 s: vx_zone_error:[vxMapUserDataObject:458]可能需要在 tiovx/include/TI/tivx_config.h 中增加 TIVX_USER_DATA_OBJECT_MAX_MAPLES 的值
捕获到 SIGSEGV
在/usr/lib/libc.so.6的轮询()中的#0 0x0000ffaa75906c
#1 0x0000ffaa91ac20在?? ()来自/usr/lib/libglib-2.0.so.0
/usr/lib/libglib-2.0.so.0上 g_main_loop_run ()中的#2 0x0000ffaa91b734
#3 0x000000000040509c 输入? ()
#4 0x0000ffaa6a84b4 输入?? ()来自/usr/lib/libc.so.6
#5 0x0000ffaa6a858c 输入:/usr/lib/libc.so.6中的_libc_start_main ()
#6 0x0000000000403c30 in?? ()
软件。 请运行"gdb gst-launch-1.0 171717"以继续调试、运行 Ctrl-C 退出、或运行 Ctrl-\转储内核。
尝试将事件添加到已销毁队列[ 261.601011]审核:type=1701审核(1729164026.515:25):auid=4294967295 uid=0 gid=0 ses=4294967295 pid=1717 comm="gstglcontext" exe="/usr/bin/gst-launch-1.0 sig =6 res=1
[261.630866] 审核: type=1334审核(1729164026.543:26 ): prog-id=21 op=load
[261.638796] 审核: type=1334审核(1729164026.551:27 ): prog-id=22 op=load
[ 261.645741]审核:type=1334审核(1729164026.551:28):prog-id=23 op=load
已中止(已转储内核)
root@tda4vm-sk:/opt/edgeai-gst-apps/scripts #[ 263.335639] audit:type=1334 audit (1729164028.251:29):prog-id=23 op=unload
[ 263.342647]审核:type=1334审核(1729164028.251:30):prog-id=22 op=unload
[263.349604] audit:type=1334 audit (1729164028.251:31):prog-id=21 op=unload
Ctrl-A Z 获取帮助| 115200 8N1 | NOR | Minicom 2.8 | VT102 |离线| ttyUSB2
尊敬的 Mariem:
好的和坏的。 很高兴看到流水线已启动、而且能够通过消除 ROS 因素来缩小问题。 摄像头传感器驱动程序或摄像头硬件似乎存在问题。
我的建议、以便于检查:
此致、
Takuma
尊敬的 Mariem:
很高兴我能提供帮助! 不取下镜头盖比预期更频繁,但 好消息,因为这是一个简单的解决方法。
至于绿色阴影、这有点复杂。 绿色图像是 ISP 调优问题的迹象、 因为来自摄像头的原始图像包含一个额外的绿色像素(rggb)。 由于这是新摄像头、因此 ISP 调优二进制文件可能不兼容(许多原因之一、我们仅支持 SDK 中的几个摄像头、因为每个没有摄像头 ISP 的摄像头模块都需要调优)。
作为我们调优指南(https://www.ti.com/lit/an/sprad86a/sprad86a.pdf):)的示例
在任何情况下、我都建议创建新的 E2E 论坛帖子、以便它会通知我们的 ISP 工程师。
此致、
Takuma
你好、Takuma、
感谢您的解释。
更换摄像头是否可以解决绿色图像的问题? 我有一个 USB 摄像头、所以可以尝试使用它。
ROS 节点呢? 当我尝试示例时、我在 RVIZ 中看不到摄像头的任何输出。 您认为问题可能出在摄像头本身吗?
谢谢、祝大家愉快。
Mariem
尊敬的 Mariem:
是的、USB 摄像头很可能没有绿色图像。
基本上、任何具有摄像头内 ISP 的摄像头都可以正常工作。 USB 摄像头 通常 具有摄像头内置 ISP、因为它们主要面向消费者用例、 在这些用例中、目标受众 没有专业知识也没有时间进行 ISP 调优(它们比没有 ISP 的摄像头模块价格稍高、但易于使用、值得)。
对于 ROS 节点,我们的脚本使用 gscam 节点,这是 ROS 将 GStreamer 管道与 ROS 集成的方式。 因此、如果您能够使用 GStreamer 查看摄像头流、则应该可以使用 ROS 查看。 如果仍然没有图像出现:
此致、
Takuma
尊敬的 Mariem:
在事后、如果摄像头驱动程序将红色和蓝色增益公开给 V4L2驱动器、则可以手动调整这些增益。
可表示为:
注意、我复制并粘贴了笔记、因此需要更改 DEVICE 参数、不能保证您的特定摄像头存在这些旋钮。
此致、
Takuma
尊敬的 Mariem:
我认为它是 tiovxdlcolorconvert 元素中的"target=1"。 您能否删除此文件?
我发送给您的第一个 GStreamer 流水线已从 ROS 启动文件中移除、因此我们在 GStreamer 流水线中遇到的任何问题都将通过 ROS 遇到。
此致、
Takuma
你好、Takuma、
我已经 在/opt/robotics_sdk/ros2/drivers/gscam2/launch/v4l_imx219_launch.py.中删除了 target=1
root@tda4vm-sk:/opt/robotics_sdk/ros2/drivers/gscam2/launch# vi v4l_imx219_launch.py root@tda4vm-sk:/opt/robotics_sdk/ros2/drivers/gscam2/launch# cat v4l_imx219_launch.py """ Launch gscam2 node with parameters and remappings. """ import os import subprocess from ament_index_python.packages import get_package_share_directory from launch import LaunchDescription from launch.actions import DeclareLaunchArgument from launch.substitutions import LaunchConfiguration from launch.actions import OpaqueFunction from launch_ros.actions import Node # run setup_cameras.sh to configure IMX219 camera with 10-bit 1640x1232 # Alternatively, the following can be run in the command line (preferably on the host Linux): # IMX219_CAM_FMT="[fmt:SRGGB10_1X10/1640x1232]" /opt/edgeai-gst-apps/scripts/setup_cameras.sh command = "/opt/edgeai-gst-apps/scripts/setup_cameras.sh" env = {"IMX219_CAM_FMT": "[fmt:SRGGB10_1X10/1640x1232]"} subprocess.run(command, env={**os.environ, **env}, shell=True) def finalize_node(context, *args, **kwargs): """ Following setup for IMX219 camera is included in entrypoint.sh: IMX219_CAM_FMT="[fmt:SRGGB10_1X10/1640x1232]" /opt/edgeai-gst-apps/scripts/setup_cameras.sh You can check the cam_id and subdev_id for the IMX219 camera (RPi v2) attached by running /opt/edgeai-gst-apps/scripts/setup_cameras.sh on the target host Linux. Accordingly please update the parameters or pass as launch arguments. """ # Video device device = "/dev/video-imx219-cam" + LaunchConfiguration('cam_id').perform(context) # Subdev subdev = "/dev/v4l-imx219-subdev" + LaunchConfiguration('subdev_id').perform(context) # Width and height of the image width = int(LaunchConfiguration('width').perform(context)) height = int(LaunchConfiguration('height').perform(context)) # Framerate framerate = LaunchConfiguration('framerate') # Image encoding: "yuv420" - publishes in "NV12" (default), "rgb8" image_encoding = LaunchConfiguration('image_encoding') # Name of the gscam2 node node_name = LaunchConfiguration('node_name') # sensor_name sensor_name = 'SENSOR_SONY_IMX219_RPI' # DCC VISS binary file dcc_isp_file = '/opt/imaging/imx219/linear/dcc_viss_10b_1920x1080.bin' # DCC 2A binary file dcc_2a_file = '/opt/imaging/imx219/linear/dcc_2a_10b_1920x1080.bin' # GStreamer pipeline specified in gscam_config was tested with IMX219 camera. # Assumes 'edgeai-tiovx-modules' and 'edgeai-gst-plugins' are already installed in target ROS container. # Following pipleline center-crops 1640 x 1232 to 1632 x 918, then resizes to 1280 x 720. gscam_config = 'v4l2src device={} io-mode=5 do-timestamp=true ! '.format(device) \ + 'video/x-bayer, width=1640, height=1232, format=rggb10 ! ' \ + 'tiovxisp sink_0::device={} dcc-isp-file={} '.format(subdev, dcc_isp_file) \ + 'sink_0::dcc-2a-file={} format-msb=9 sensor-name={} ! '.format(dcc_2a_file, sensor_name) \ + 'video/x-raw, format=NV12, width=1640, height=1232 ! ' \ + 'tiovxmultiscaler src_0::roi-startx=4 src_0::roi-starty=157 src_0::roi-width=1632 src_0::roi-height=918 ! ' \ + 'video/x-raw, format=NV12, width={}, height={} ! '.format(width, height) \ + 'tiovxdlcolorconvert out-pool-size=4' print(gscam_config) # Camera namespace camera_name = LaunchConfiguration('camera_name').perform(context) image_topic_name = LaunchConfiguration('image_topic_name').perform(context) # Camera calibration file # config_dir = os.path.join(get_package_share_directory('gscam2'), 'config') # camera_config = 'file://' + os.path.join(config_dir, 'IMX219_HD_camera_info.yaml') camera_config = 'file:///opt/robotics_sdk/tools/camera_info/IMX219_HD_camera_info.yaml' print(camera_config) node = Node( package = 'gscam2', executable = 'gscam_main', output = 'screen', name = node_name, namespace = camera_name, parameters = [ { 'gscam_config': gscam_config, 'camera_name': camera_name, 'image_topic_name': image_topic_name, 'camera_info_url': camera_config, 'image_encoding': image_encoding, 'appsink_width': width, 'appsink_height': height, 'appsink_framerate': framerate, 'sync_sink': False, 'preroll': False, 'use_gst_timestamps': False, 'frame_id': camera_name, }, ], ) return [node] def generate_launch_description(): cam_id_arg = DeclareLaunchArgument( 'cam_id', default_value='0', description='ID of the video device to use.' ) subdev_id_arg = DeclareLaunchArgument( 'subdev_id', default_value='0', description='ID of subdev to use.' ) width_arg = DeclareLaunchArgument( 'width', default_value='1280', description='width of the image, not larger than 1632' ) height_arg = DeclareLaunchArgument( 'height', default_value='720', description='height of the image, not larger than 918' ) framerate_arg = DeclareLaunchArgument( 'framerate', default_value='30', description='Frame rate of the camera' ) image_encoding_arg = DeclareLaunchArgument( 'image_encoding', default_value='yuv420', description='Encoding of the camera image' ) node_name_arg = DeclareLaunchArgument( 'node_name', default_value='gscam_publisher', description='Name of the gscam2 node' ) camera_name_arg = DeclareLaunchArgument( 'camera_name', default_value='camera', description='Name of the camera namespace' ) image_topic_name_arg = DeclareLaunchArgument( 'image_topic_name', default_value='image_raw', description='Name of the image topic' ) # Create the launch description and add the arguments ld = LaunchDescription() ld.add_action(cam_id_arg) ld.add_action(subdev_id_arg) ld.add_action(width_arg) ld.add_action(height_arg) ld.add_action(framerate_arg) ld.add_action(image_encoding_arg) ld.add_action(node_name_arg) ld.add_action(camera_name_arg) ld.add_action(image_topic_name_arg) ld.add_action(OpaqueFunction(function=finalize_node))
但我仍将获得相同的结果。
好的、
Mariem
你好、Takuma、
我尝试使用 USB 摄像头(Logitech c270)。 我尝试运行以下 ROS 节点来测试摄像机:
ros2启动 mono_capture mono_capture_launch.py
在 PC 端、我可以看到节点和主题:
root@PC-docker:~/j7ros_home/ros_ws/install/ti_viz_nodes/share/ti_viz_nodes/launch$ ros2主题列表
/camera/camera_info
/camera/image_raw
/camera/image_raw/compressed
/camera/image_raw/compressedDepth
/camera/image_raw/theora
/参数事件
/rosout
root@PC-docker:~/j7ros_home/ros_ws/install/ti_viz_nodes/share/ti_viz_nodes/launch$ ros2节点列表
/mono_capture
但是、我无法显示来自摄像头的图像。 我尝试了几种方法,但徒劳:
root@PC-docker:~/j7ros_home/ros_ws/install/ti_viz_nodes/share/ti_viz_nodes/launch$ ros2 run rqt_image_view rqt_image_view
root@PC-docker:~/j7ros_home/ros_ws/install/ti_viz_nodes/share/ti_viz_nodes/launch$ ros2运行 rviz2 rviz2 (我通过添加显示图像和图像主题/camera/image_raw 配置了 RVIZ2)
我还检查了数据是否正在发布: root@PC-docker:~/j7ros_home/ros_ws/install/ti_viz_nodes/share/ti_viz_nodes/launch$ ros2主题 echo /camera/image_raw
但没有出现任何情况、这意味着摄像头节点本身存在问题。
在目标端、我将获得:Fullscreen12345678910111213141516root@j7-docker:~/j7ros_home/ros_ws$ ros2 launch mono_capture mono_capture_launch.py[INFO] [launch]: All log files can be found below /root/.ros/log/2024-10-25-13-14-37-697169-tda4vm-sk-2767[INFO] [launch]: Default logging verbosity is set to INFO[INFO] [mono_capture-1]: process started with pid [2768][mono_capture-1] [INFO] [1729862084.265588015] [mono_capture]: Initialize the Webcam[ 779.815741] usb 1-1.1: reset high-speed USB device number 3 using xhci-hcd[ 784.859639] usb 1-1.1: reset high-speed USB device number 3 using xhci-hcd[mono_capture-1] [ WARN:0] global ./modules/videoio/src/cap_gstreamer.cpp (2075) handleMessage OpenCV | GStreamer warning: Embedded video playback halted; module source reported: Could not read from resource.[mono_capture-1] [ WARN:0] global ./modules/videoio/src/cap_gstreamer.cpp (1053) open OpenCV | GStreamer warning: unable to start pipeline[mono_capture-1] [ WARN:0] global ./modules/videoio/src/cap_gstreamer.cpp (616) isPipelinePlaying OpenCV | GStreamer warning: GStreamer: pipeline have not been created[mono_capture-1] [INFO] [1729862090.021137253] [MonoCamera]: YUV422[mono_capture-1] [INFO] [1729862090.021287366] [MonoCamera]: Stereo Camera Mode HD, width 1280, height 720[mono_capture-1] [INFO] [1729862090.134871761] [mono_capture]: Loading camera info from yaml files[mono_capture-1] [INFO] [1729862090.136074586] [mono_capture]: camera calibration URL: file:///opt/robotics_sdk/ros1/drivers/mono_capture/config/C920_HD_camera_info.yaml[mono_capture-1] [INFO] [1729862092.259540871] [mono_capture]: Successfully found the monocam[mono_capture-1] [ERROR] [1729862408.658282416] [compressed_depth_image_transport]: Compressed Depth Image Transport - Compression requires single-channel 32bit-floating point or 16bit raw depth images (input format is: yuv422).XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXroot@j7-docker:~/j7ros_home/ros_ws$ ros2 launch mono_capture mono_capture_launch.py [INFO] [launch]: All log files can be found below /root/.ros/log/2024-10-25-13-14-37-697169-tda4vm-sk-2767 [INFO] [launch]: Default logging verbosity is set to INFO [INFO] [mono_capture-1]: process started with pid [2768] [mono_capture-1] [INFO] [1729862084.265588015] [mono_capture]: Initialize the Webcam [ 779.815741] usb 1-1.1: reset high-speed USB device number 3 using xhci-hcd [ 784.859639] usb 1-1.1: reset high-speed USB device number 3 using xhci-hcd [mono_capture-1] [ WARN:0] global ./modules/videoio/src/cap_gstreamer.cpp (2075) handleMessage OpenCV | GStreamer warning: Embedded video playback halted; module source reported: Could not read from resource. [mono_capture-1] [ WARN:0] global ./modules/videoio/src/cap_gstreamer.cpp (1053) open OpenCV | GStreamer warning: unable to start pipeline [mono_capture-1] [ WARN:0] global ./modules/videoio/src/cap_gstreamer.cpp (616) isPipelinePlaying OpenCV | GStreamer warning: GStreamer: pipeline have not been created [mono_capture-1] [INFO] [1729862090.021137253] [MonoCamera]: YUV422 [mono_capture-1] [INFO] [1729862090.021287366] [MonoCamera]: Stereo Camera Mode HD, width 1280, height 720 [mono_capture-1] [INFO] [1729862090.134871761] [mono_capture]: Loading camera info from yaml files [mono_capture-1] [INFO] [1729862090.136074586] [mono_capture]: camera calibration URL: file:///opt/robotics_sdk/ros1/drivers/mono_capture/config/C920_HD_camera_info.yaml [mono_capture-1] [INFO] [1729862092.259540871] [mono_capture]: Successfully found the monocam [mono_capture-1] [ERROR] [1729862408.658282416] [compressed_depth_image_transport]: Compressed Depth Image Transport - Compression requires single-channel 32bit-floating point or 16bit raw depth images (input format is: yuv422).
dmesg 日志包括:Fullscreen123456789101112131415[ 16.079116] usb 1-1.2: Found UVC 1.00 device HD WebCam C270 (046d:0825)[ 16.086855] usb 1-1.2: Failed to query (GET_INFO) UVC control 12 on unit 2: 0 (exp. 1).[ 16.095777] usb 1-1.2: Failed to query (GET_INFO) UVC control 13 on unit 2: 0 (exp. 1).[ 16.103996] usb 1-1.2: Failed to query (GET_INFO) UVC control 14 on unit 2: 0 (exp. 1).[ 16.112336] usb 1-1.2: Failed to query (GET_INFO) UVC control 15 on unit 2: 0 (exp. 1).[ 16.120566] usb 1-1.2: Failed to query (GET_INFO) UVC control 1 on unit 1: 0 (exp. 1).[ 16.129012] usb 1-1.2: Failed to query (GET_INFO) UVC control 5 on unit 1: 0 (exp. 1).[ 16.137282] usb 1-1.2: Failed to query (GET_INFO) UVC control 12 on unit 1: 0 (exp. 1).[ 16.145618] usb 1-1.2: Failed to query (GET_INFO) UVC control 14 on unit 1: 0 (exp. 1).[ 16.162271] usbcore: registered new interface driver uvcvideo[ 16.328509] usb 1-1.2: 3:1: cannot get freq at ep 0x84[ 16.368570] usb 1-1.2: set resolution quirk: cval->res = 384[ 16.376417] usbcore: registered new interface driver snd-usb-audio[ 17.157470] am65-cpsw-nuss 46000000.ethernet eth0: Link is Up - 1Gbps/Full - flow control rx/tx[ 19.540738] usb 1-1.2: reset high-speed USB device number 3 using xhci-hcdXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX[ 16.079116] usb 1-1.2: Found UVC 1.00 device HD WebCam C270 (046d:0825) [ 16.086855] usb 1-1.2: Failed to query (GET_INFO) UVC control 12 on unit 2: 0 (exp. 1). [ 16.095777] usb 1-1.2: Failed to query (GET_INFO) UVC control 13 on unit 2: 0 (exp. 1). [ 16.103996] usb 1-1.2: Failed to query (GET_INFO) UVC control 14 on unit 2: 0 (exp. 1). [ 16.112336] usb 1-1.2: Failed to query (GET_INFO) UVC control 15 on unit 2: 0 (exp. 1). [ 16.120566] usb 1-1.2: Failed to query (GET_INFO) UVC control 1 on unit 1: 0 (exp. 1). [ 16.129012] usb 1-1.2: Failed to query (GET_INFO) UVC control 5 on unit 1: 0 (exp. 1). [ 16.137282] usb 1-1.2: Failed to query (GET_INFO) UVC control 12 on unit 1: 0 (exp. 1). [ 16.145618] usb 1-1.2: Failed to query (GET_INFO) UVC control 14 on unit 1: 0 (exp. 1). [ 16.162271] usbcore: registered new interface driver uvcvideo [ 16.328509] usb 1-1.2: 3:1: cannot get freq at ep 0x84 [ 16.368570] usb 1-1.2: set resolution quirk: cval->res = 384 [ 16.376417] usbcore: registered new interface driver snd-usb-audio [ 17.157470] am65-cpsw-nuss 46000000.ethernet eth0: Link is Up - 1Gbps/Full - flow control rx/tx [ 19.540738] usb 1-1.2: reset high-speed USB device number 3 using xhci-hcd
启动时可以识别摄像机:
检测到 USB 摄像头0
器件=/dev/video-usb-cam0
格式= jpeg
检测到 USB 摄像头1
器件=/dev/video-usb-cam1
格式= jpeg
提前感谢您的帮助!
好的、
Mariem
尊敬的 Mariem:
您能否针对 IMX219进行类似的实验、在该实验中、您直接使用 GST-LAUNCH-1.0运行 GStreamer 流水线?
usb/roboted_sdk/ros1 (或 ros2、具体取决于哪个版本)/drivers/gscam/launch 文件夹应具有一个用于启动 src 摄像头流水线的文件、因此您可以采用该流水线并将其通过管道传输到 autovideosink 中、以显示到连接的显示器。
此致、
Takuma
你好、Takuma、
感谢您的回答和建议。
使用 gst-launch-1.0命令可以正常运行 USB 摄像头。
我使用过: gst-launch-1.0 v4l2src device=/dev/video-usb-cam0 io-mode=2 do-timestamp=true ! image/jpeg! jpegdec! tiovxdlcolorconvert ! autovideosink
我可以看到相机的输出使用 autovideosink。
现在如何才能成功运行摄像头 ROS 节点?
谢谢!
Mariem
尊敬的 Mariem:
USB 摄像头上出现同样的情况有点出乎意料、但看起来 ROS 本身有问题、而不是摄像头侧的问题。 自线程开始已有一段时间、因此我不记得我们是否检查过、但您能否在 Docker 容器内的 PC 端运行以下操作:
应在开始启动 viz 节点之前立即运行该命令。 应该会列出一系列主题。 如果没有、则可能是网络问题、或其他一些设置问题。
然后、您是否可以运行以下命令:
ROS_IP 应该是 PC 的 IP 地址、ROS_MASTER_URI 应该是电路板的 IP 地址。
此致、
Takuma
尊敬的 Mariem:
很高兴再次见到您! 没问题、只要它对您最方便、就进行响应。
[报价 userid="595639" url="~/support/processors-group/processors/f/processors-forum/1411493/sk-tda4vm-enable-arducam-ptz-camera-on-sk-tda4vm/5553255 #5553255"]当我尝试打印 ROS IP 和 ROS_MASTER_URI 时、不显示任何内容:
root@PC-docker:~/j7ros_home/ros_ws$ echo $ROS_IP
root@PC-docker:~/j7ros_home/ros_ws$ echo $ROS_MASTER_URI
我认为这可能是问题。 在运行演示之前、您是否可以在 PC 的 Docker 容器中设置 ROS_IP 和 ROS_MASTER_URI 环境变量? 命令如下所示:
例如、假设您的 PC 的 IP 地址为128.3.42.12、而您的 SK-TDA4VM 的 IP 地址为128.3.42.6。
此致、
Takuma