​Jetson Nano 2G ROS 调用 CSI摄像头

在这里插入图片描述



1.安装ROS的CSI摄像头软件包

TX2推荐安装jetson_csi_cam,而Nano推荐安装jetson_nano_csi_cam



1.1 jetson_csi_cam

注意:与下面的jetson_nano_csi_cam二选一。
参考:GitHub - peter-moran/jetson_csi_cam: A ROS package making it simple to use CSI cameras on the Nvidia Jetson TK1, TX1, or TX2 with ROS.

1.1.1安装 GStreamer-1.0

sudo add-apt-repository universe
sudo add-apt-repository multiverse
sudo apt-get update
sudo apt-get install gstreamer1.0-tools gstreamer1.0-alsa \
 gstreamer1.0-plugins-base gstreamer1.0-plugins-good \
 gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly \
 gstreamer1.0-libav
sudo apt-get install libgstreamer1.0-dev \
 libgstreamer-plugins-base1.0-dev \
 libgstreamer-plugins-good1.0-dev \
 libgstreamer-plugins-bad1.0-dev

查看 GStreamer-1.0 版本

gst-inspect-1.0 --version

1.1.2下载包jetson_csi_camgscam

cd ~/ccmslam_ws/src
git clone https://github.com/peter-moran/jetson_csi_cam.git
git clone https://github.com/ros-drivers/gscam.git

修改gscamMakefile

gedit ~/ccmslam_ws/gscam/Makefile

第一行后面加上-DGSTREAMER_VERSION_1_x=On变成:

EXTRA_CMAKE_FLAGS = -DUSE_ROSBUILD:BOOL=1 -DGSTREAMER_VERSION_1_x=On

保存退出,返回工作空间编译:

cd ../..
catkin_make

如果catkin_make失败,则用

catkin_make_isolated

测试:

roscore
roslaunch jetson_csi_cam jetson_csi_cam.launch

若出现错误:gst_element_make_from_uri: assertion 'gst_uri_is_valid (uri)' failed
解决方法转自:https://github.com/peter-moran/jetson_csi_cam/issues/1

修改jetson_csi_cam.launch

gedit ~/ccmslam_ws/src/jetson_csi_cam/jetson_csi_cam.launch

把关于GSCAM_CONFIG的那一段改为:

<env name="GSCAM_CONFIG" value="nvarguscamerasrc sensor-id=$(arg sensor_id) ! video/x-raw(memory:NVMM),
    width=(int)$(arg width), height=(int)$(arg height), format=(string)I420, framerate=(fraction)$(arg fps)/1 ! 
    nvvidconv flip-method=2 ! video/x-raw, format=(string)BGRx ! videoconvert" />

1.1.3 再运行roslaunch:

roslaunch jetson_csi_cam jetson_csi_cam.launch

如果出现错误:Error generated. /dvs/git/dirty/git-master_linux/multimedia/nvgstreamer/gst-nvarguscamera/gstnvargus
则终端运行:

sudo systemctl restart nvargus-daemon

再运行roslaunch

查看ROS话题:

rostopic list

发现出现了/csi_cam_0/image_raw
查看捕获的图像:

rqt_image_view

如果能正确显示图像,则成功了。




1.2 jetson_nano_csi_cam

注意:与上面的jetson_csi_cam二选一。
参考:https://github.com/rt-net/jetson_nano_csi_cam_ros

1.2.1安装 GStreamer-1.0

sudo add-apt-repository universe
sudo add-apt-repository multiverse
sudo apt-get update
sudo apt-get install gstreamer1.0-tools gstreamer1.0-alsa \
 gstreamer1.0-plugins-base gstreamer1.0-plugins-good \
 gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly \
 gstreamer1.0-libav
sudo apt-get install libgstreamer1.0-dev \
 libgstreamer-plugins-base1.0-dev \
 libgstreamer-plugins-good1.0-dev \
 libgstreamer-plugins-bad1.0-dev

查看 GStreamer-1.0 版本

gst-inspect-1.0 --version

1.2.2下载包jetson_nano_csi_camgscam

cd ~/ccmslam_ws/src
git clone https://github.com/rt-net/jetson_nano_csi_cam_ros.git 
git clone https://github.com/ros-drivers/gscam.git

修改gscam的Makefile:

gedit ~/ccmslam_ws/gscam/Makefile

第一行后面加上-DGSTREAMER_VERSION_1_x=On变成:

EXTRA_CMAKE_FLAGS = -DUSE_ROSBUILD:BOOL=1 -DGSTREAMER_VERSION_1_x=On

保存退出,返回工作空间编译:

cd ../..
catkin_make

1.2.3 运行roslaunch:

roslaunch jetson_nano_csi_cam jetson_nano_csi_cam.launch

查看ROS话题:

rostopic list

发现出现了/csi_cam_0/image_raw

查看捕获的图像:

rqt_image_view

如果能正确显示图像,则成功了。




2.修改Client0_euroc.launch

gedit ~/ccmslam_ws/src/ccm_slam/cslam/launch/EuRoC/Client0_euroc.launch

将参数cam更改为新相机文件的路径:
即,将

 <param name="~TopicNameCamSub" type="string" value="/cam0/image_raw" />

改为:

 <param name="~TopicNameCamSub" type="string" value="/csi_cam_0/image_raw" />



3.编写启动文件

编写ccm-csi.sh

gnome-terminal -t "cam" -x bash -c "roslaunch jetson_csi_cam jetson_csi_cam.launch;exec bash;"

sleep 3
gnome-terminal -t "server" -x bash -c "roslaunch ccmslam Server.launch;exec bash;"
sleep 3

gnome-terminal -t "agent0" -x bash -c "roslaunch ccmslam Client0_euroc.launch;exec bash;"

sleep 3 
gnome-terminal -t "rviz" -x bash -c "roscd ccmslam ;rviz -d conf/rviz/ccmslam.rviz ;exec bash;"

如果上面用的是jetson_nano_csi_cam包,则:

gnome-terminal -t "cam" -x bash -c "roslaunch jetson_nano_csi_cam jetson_nano_csi_cam.launch;exec bash;"

sleep 3
gnome-terminal -t "server" -x bash -c "roslaunch ccmslam Server.launch;exec bash;"
sleep 3

gnome-terminal -t "agent0" -x bash -c "roslaunch ccmslam Client0_euroc.launch;exec bash;"

sleep 3 
gnome-terminal -t "rviz" -x bash -c "roscd ccmslam ;rviz -d conf/rviz/ccmslam.rviz ;exec bash;"



4.启动

命令行输入:

chmod +x ccm-csi.sh
sh ccm-csi.sh

在这里插入图片描述
在这里插入图片描述
如果出现错误:Error generated. /dvs/git/dirty/git-master_linux/multimedia/nvgstreamer/gst-nvarguscamera/gstnvargus
则终端运行:

sudo systemctl restart nvargus-daemon

转载:Jetson Nano 调用CSI摄像头运行CCMSLAM_不能再吃了OvO的博客-CSDN博客

附录:

1、另外一个2g+sci+ros的教程:

机器人视觉(二) ROS Melodic + CSI 摄像头 + jetson Nano 2GB_smallEngineer的博客-CSDN博客

2、上面的程序使用之后摄像头可能画面需要翻转
官方给的修改方式如下:

$ cd ~/jetson-inference/utils/camera/
$ gedit gstCamera.cpp

目标修改代码片段:

#if NV_TENSORRT_MAJOR > 1 && NV_TENSORRT_MAJOR < 5 // if
JetPack 3.1-3.3 (different flip-method)
const int flipMethod = 0; // Xavier (w/TRT5) camera is mounted inverted
#else
const int flipMethod = 2;
#endif


官方的说明是将其中的filpMethod=2修改为filpMethod=0

其实这个方法,我进行了尝试,但是发现这个里面有一个漏洞,使用gedit编辑器进行编辑,发现目标代码片段不存在。

正确修改方法:

在这里插入图片描述

将其中的进行180度旋转的代码进行注释掉

但是一定要重新进行make编译链接,才能使得修改生效,最终再次执行,发现摄像头已经完成了反转!

3、运行ros之后rqt_image_view打开摄像头画面

4、Camera feed frame_id - ROS Answers: Open Source Q&A Forum

  • 5
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: Jetson Nano在打开CSI摄像头时可能会遇到一些问题。首先,需要确保在开机之前已经正确安装好摄像头,因为CSI接口不支持即插即用功能。如果在开机后测试发现摄像头无法打开,可以尝试关机后检查是否有安装不正确或接触不良的问题。此外,Jetson NanoCSI摄像头相对于USB摄像头来说不太方便,因为它不具备USB摄像头的即插即用功能。\[1\] 在配置无外设模式时,如果遇到无法启动CSI摄像头的问题,可以参考官方教程中的hello_camera/csi_camera.ipynb代码进行调试。\[2\] 另外,需要注意的是,一些代码可能只适用于Python2,而Jetson Nano默认使用的是Python3。如果遇到代码无法运行的问题,可能是因为Gstreamer管道只适用于Python2。如果找到了适用于Python3的解决方案,可以尝试更新代码以解决问题。\[3\] #### 引用[.reference_title] - *1* [Jetson NanoCSI摄像头操作方法](https://blog.csdn.net/zong596568821xp/article/details/124436538)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Jeston Nano无法启动CSI相机](https://blog.csdn.net/Jasonx001/article/details/119133291)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Jetson Nano使用CSI摄像头以及USB摄像头CSI摄像头打开失败,USB摄像头打不开)](https://blog.csdn.net/Callme_TeacherPi/article/details/123991996)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值