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

2023-05-16

在这里插入图片描述



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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

​Jetson Nano 2G ROS 调用 CSI摄像头 的相关文章

  • 思岚RPLIDAR A2 在ubuntu 16.04上的测试

    1 下载雷达ROS包 首先在github上下载rplidar的ros包 下载指令为 默认安装了git git clone https github com Slamtec rplidar ros git 在ubuntu上创建工作空间 并将该
  • ros+arduino学习(六):重构ros_lib库文件

    前言 ros lib是arduino程序和ros连接的库文件 通过使用这些库文件和相关函数 可以在arduino上通过编程使得arduino硬件开ros节点程序 这样arduino硬件就可以与上位机通过话题进行通讯 从而把arduino从传
  • SLAM-hector_slam 简介与使用

    hector slam功能包使用高斯牛顿方法 不需要里程计数据 只根据激光信息便可构建地图 所以他的总体框架如下 hector slam功能包 hector slam的核心节点是hector mapping 它订阅 scan 话题以获取SL
  • 无人驾驶论坛

    1 百度Apollo论坛 http www 51apollo com 2 人工智能中文资讯网 http www ailab cn
  • rosrun 和 roslaunch 的时候 TAB 的自动补全出现问题

    rosrun 和 roslaunch 的时候 TAB 的自动补全出现问题 rospack Warning error while crawling home sun boost filesystem status Permission de
  • Ubuntu镜像下载地址

    镜像地址https launchpad net ubuntu cdmirrors
  • 线速度和角速度

    转自 https baike baidu com item E7 BA BF E9 80 9F E5 BA A6 1532652 fr aladdin https baike baidu com item E8 A7 92 E9 80 9F
  • Ubuntu16.04安装ROS Kinetic详细步骤

    文章目录 ROS安装 配置Ubuntu软件仓库 设置sources list 设置密钥 更新Debian软件包索引 安装ROS 初始化 rosdep 环境配置 构建工厂依赖 测试安装 开发环境 ROS安装 ROS Kinetic只支持Wil
  • Ubuntu下vscode配置ROS环境

    摘要 最近准备放弃用clion开发ROS使用更主流的vscode 整理一下在ubuntu18 04下的VSCode安装和ROS环境配置流程 安装 方法一 软件商店安装 个人还是推荐使用ubuntu软件下载vscode 简单不容易出错 方法二
  • 《学习篇》学会这18个常用ROS命令集合就能入门ROS了

    常用ROS命令概述 ROS常用命令可以按照其使用场景分为ROSshell命令 ROS执行命令 ROS信息命令 ROS catkin命令与ROS功能包命令 虽然很难从一开始就很熟练地使用所有的命令 但是随着使用的次数增多 你会发现常用的几个R
  • ROS1 ROS2学习

    ROS1 ROS2学习 安装 ROS ROS1 ROS2 命令行界面 ROS2 功能包相关指令 ROS 命令行工具 ROS1 CLI工具 ROS2 CLI工具 ROS 通信核心概念 节点 Node 节点相关的CLI 话题 Topic 编写发
  • 如何将从 rospy.Subscriber 数据获得的数据输入到变量中?

    我写了一个示例订阅者 我想将从 rospy Subscriber 获得的数据提供给另一个变量 以便稍后在程序中使用它进行处理 目前 我可以看到订阅者正在运行 因为当我使用 rospy loginfo 函数时 我可以看到打印的订阅值 虽然我不
  • 在 CLion 中设置 ROS 包

    我正在使用 CLion C IDE 来编辑 ROS 包 我可以通过打开CMakeLists txt文件 但是 我收到一个错误 FATAL ERROR find package catkin 失败 在工作区和 CMAKE PREFIX PAT
  • 无法加载 LZ4 支持的 Python 扩展。 LZ4 压缩将不可用

    我是 ROS 新手 我刚刚打开终端并输入roscore和另一个终端并键入rostopic node我收到这个错误 上面写着 无法加载 LZ4 支持的 Python 扩展 LZ4 压缩将不可用 我搜索并去了https pypi org pro
  • 从 pcl::PointCloud 中删除点

    我是 PCL 新手 我正在使用 PCL 库 并且正在寻找一种从点云中提取点或将特定点复制到新点的方法 我想验证每个点是否符合条件 并且我想获得仅包含优点的点云 谢谢 使用 ExtractIndices 类 将要删除的点添加到 PointIn
  • catkin_make后找不到ROS包

    我根据 ROS 的 Wiki 页面创建了一个 ROS 工作区 我还使用创建了一个包catkin create pkg在我刚刚创建的工作区下 然后 按照 ROS Wiki 中的步骤使用以下命令构建包catkin make 构建包后 我插入命令
  • Python - 保存在 GNU Nano 2.2.4 中编辑的文件[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我对编程 使用 Raspberry
  • 如何从里程计/tf数据获取投影矩阵?

    我想将视觉里程计的结果与 KITTI 数据集提供的事实进行比较 对于地面中的每一帧 我都有一个投影矩阵 例如 1 000000e 00 9 043683e 12 2 326809e 11 1 110223e 16 9 043683e 12
  • 无法在 Ubuntu 20.04 上安装 ROS Melodic

    我正在尝试使用这些命令在 Ubuntu 20 04 上安装 ROS Melodic sudo sh c echo deb http packages ros org ros ubuntu lsb release sc main gt etc
  • ROS中spin和rate.sleep的区别

    我是 ROS 新手 正在尝试了解这个强大的工具 我很困惑spin and rate sleep功能 谁能帮助我了解这两个功能之间的区别以及何时使用每个功能 ros spin and ros spinOnce 负责处理通信事件 例如到达的消息

随机推荐