Jetson系列在conda虚拟环境配置ros_tensorflow功能包

安装虚拟环境可以看我前面写的文章 这里不再重复
此处依旧列出涉及的环境版本
ROS:melodic版本(默认适配py2.7)
Ubuntu:18.04
conda环境python:python3
TensorFlow:TensorFlow2

ros_tensorflow官方包下载地址——github(https://github.com/cong/ros_tensorflow

1.虚拟环境配置

首先由于虚拟环境缺少一些依赖 或者是跟ros相关的依赖 我们需要先安装一些python的库
我配置的时候需要进行的安装有:

pip install pyyaml
pip install rospkg
pip install opencv-python

安装完成后运行ros_tensorflow 里的功能包正常来说是能通过前半部分的 但是吧 总有那么些不顺利的地方
有碰到一个情况是 安装完opencv-python库之后 import tensorflow直接core dumped了
筛查了很久发现是numpy的问题
解决方法有点奇妙:

pip uninstall numpy
conda install numpy

讲道理我也不知道这个pip install和conda install在虚拟环境里有什么区别 后续可能需要探究一下

实际运行到某个launch的时候还需要安装一下matplotlib(pip install或者conda install都可以)

ok 其实正常来说到这里就结束虚拟环境的配置了 但是后面你会发现运行cv_bridge报错 噢 万恶的python
ros中的cv_bridge是用的py2 但是我们的虚拟环境是py3 这怎么整呢
好吧 这里讲下我成功了的一个比较复杂的方法

2.cv_bridge源码编译

这里参考了https://blog.csdn.net/lovely_yoshino/article/details/107288433
我们要在非虚拟环境执行以下指令:

# 安装相关依赖包
sudo apt-get install python-catkin-tools python3-dev python3-catkin-pkg-modules python3-numpy python3-yaml ros-melodic-cv-bridge
# 创建一个用于编译源码的工作空间
mkdir -p catkin_workspace/src
cd catkin_workspace
# 该处需要根据你原本自带的系统python版本设定 因为使用arm64架构还需要修改下索引库的路径为aarch64-linux-gnu
catkin config -DPYTHON_EXECUTABLE=/usr/bin/python3 -DPYTHON_INCLUDE_DIR=/usr/include/python3.6m -DPYTHON_LIBRARY=/usr/lib/aarch64-linux-gnu/libpython3.6m.so
# 下面这步不用也行 不过我是跟着操作的了
catkin config --install
# git获取源码
git clone https://github.com/ros-perception/vision_opencv.git src/vision_opencv
# 编译
catkin build

正常来说编译完成就好了 如果有报错要检查下上面catkin config的时候路径是否都是存在且正确的
然后在bashrc里加上环境变量配置

source ~/catkin_workspace/install/setup.bash --extend

修改完bashrc记得source一下再用哦!
ok 成功进入下一关

3.功能运行

把包放进工作空间src编译这种应该不用讲了吧 咱就是说懂的都懂
然后就进入配置好tensorflow的虚拟环境中开始探险(狗头.jpg)
A.ros_tensorflow_classify——物体识别功能

roslaunch ros_tensorflow ros_tensorflow_classify.launch

虚拟环境下运行launch文件
正常情况下在前面一系列东西加载完毕后就会开始打印识别到的物体和置信度
在这里插入图片描述
B.ros_tendorflow_detect——目标检测功能

roslaunch ros_tensorflow ros_tensorflow_detect.launch

虚拟环境下运行launch文件
然后使用工具查看/result_ripe图像话题 这里我选择使用rqt中的image_view工具 注意该功能默认发布的检测结果为图像类型 只能通过图像的形式查看检测的结果
在这里插入图片描述
这里我做了图像压缩 但是还是卡到爆…… whatever能用就行 本身用的主控性能也有限 咱没办法有啥追求 粗略的翻了下源码也没找到能让图像承受压力小一点的点 随便了
目标检测部分我遇到了一个很奇怪的问题 花了我两天时间翻源码(好几个函数和好几个参数在好几个python里反复横跳 我真的会谢)最后发现其实一下就解决了……
先说说我碰到的问题 目标检测的时候识别到除了人以外 识别其他物体都是框选后显示N/A和置信度
就很玄乎 能框选能出置信度证明其实他知道是什么东西了啊 那怎么还打印类别名N/A 是哪里出了叛徒(挠头)
问题不大 我们先看看怎么会出现打印N/A的情况
在这里插入图片描述
噢好家伙这一通ifelse看下来差点没给我整晕(原来我之前写的代码用的ifelse还不算多……)
check了一下是因为种类的那个id不在category的键值范围内
此时我产生了一个怀疑 既然除了人其他都打印N/A 该不会……
在这里插入图片描述
哈哈 猜中了(开始骂人)
意思是这个id取到大于1就会打印N/A呗 好 行 算你狠 这玩意取值范围在哪设定的?!
经过我在代码里遨游之后 发现 它其实就在那个launch直接打开的python文件里
在这里插入图片描述
哈哈 哈哈哈哈 就这花了我两天啊 无语 真的好无语 我甚至以为是什么比较深层的问题 结果只是一个小小变量在捣鬼
ok搞定 这样就能顺利打印除了人以外识别到的其他物体的名称
C.手写数字识别功能
说起这个mnist咱就是说也是有过几面之缘了 毕竟是深度学习界的hello world
同样运行launch 然后让相机看着你手写的数字

roslaunch ros_tensorflow ros_tensorflow_mnist.launch

在这里插入图片描述
终端会疯狂刷识别到的数字 试了所有的数字发现我写的3它识别不出来 我明明写的很标准应该很好辨识啊

ok 以上就是全过程 又是一篇清坑记录 tensorflow我谢谢你

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Jetson Xavier是一款高性能的嵌入式计算平台,能够实现深度学习人工智能应用的部署。而darknet_ros是一个用于目标检测和识别的开源软件,结合了YOLO算法和ROS框架。下面是在Jetson Xavier上部署darknet_ros的相关步骤。 首先,确保Jetson Xavier上已经安装好了ROS和CUDA。ROS是一个机器人操作系统,CUDA是一种用于并行计算的GPU加速库。 接下来,需要先将darknet_ros的源代码克隆到你的开发环境中。可以在GitHub上找到该项目,并按照说明进行克隆。 然后,进入darknet_ros的文件夹,并执行以下命令来编译代码: ``` $ catkin_make ``` 编译过程可能会需要一些时间,请耐心等待。 接着,将Jetson Xavier与ROS连接,运行ROS Master节点。 ``` $ roscore ``` 然后,在新的终端窗口中,进入darknet_ros文件夹,并运行以下命令来启动darknet_ros节点: ``` $ rosrun darknet_ros darknet_ros ``` 该命令将根据配置文件中的设置,开始目标检测和识别。 最后,你可以在另一个终端窗口中,使用以下命令来查看检测到的目标: ``` $ rostopic echo /darknet_ros/bounding_boxes ``` 该命令将以ROS通信的方式,显示darknet_ros检测到的目标的信息,例如目标位置、类别和置信度等。 这样,你就成功在Jetson Xavier上部署了darknet_ros,可以开始进行目标检测和识别任务了。请注意,部署过程中可能会遇到一些问题,需要根据具体情况进行调试和解决。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值