将pytorch和ros同时使用——将深度学习的结果发布成rostopic

系统中的环境变量是ros的,anaconda创建的虚拟环境每次都要用命令行打开。

这是一个悲伤的故事,因为我本来想一个用python3,一个用python2,这两个环境怎么统一呢?想想就很复杂,查了很多地方,都提到py3中使用cv_bridge遇到的问题,但对怎么在pytorch虚拟环境下发布ros话题这个问题没有解决。

 
后来忽然尝试在anaconda创建的pytorch虚拟环境中pip list查看,发现里面也有ros相关的包。
然后输入roscore也可以正常启动ros节点。

 
所以根本不必担心那么多,正常在深度学习的.py文件中写入ros头文件,发布节点就可以啦!

 


环境配置

需要注意的就是最好先安装ROS再安装Anaconda深度学习环境,然后注意修改.bashrc文件

具体基础环境配置过程可以参考:Ubuntu18配置与ROS兼容的深度学习环境(Anaconda3+PyTorch1.10+python3.8+cuda10.2)

进入Anaconda虚拟环境,安装rospkg包

pip install rospkg

运行程序

可以直接python运行

python yolo.py

也可以使用rosrun运行,但注意在文件开头加上以下注释
(注,下述环境通过which python获得)

#!/home/guyue/anaconda3/envs/mytorch/bin/python

然后正常rosrun运行即可

rosrun my_yolo yolo.py

错误排查过程

  1. 装好基本环境后,创建ros功能包,然后创建.py文件,写入简单的节点发布程序

    guyue@guyue:~/ur_ws/src$ catkin_create_pkg my_yolo std_msgs rospy roscpp
    Created file my_yolo/CMakeLists.txt
    Created file my_yolo/package.xml
    Created folder my_yolo/include/my_yolo
    Created folder my_yolo/src
    Successfully created files in /home/guyue/ur_ws/src/my_yolo. Please adjust the values in package.xml.
    guyue@guyue:~/ur_ws/src$ cd my_yolo
    guyue@guyue:~/ur_ws/src/my_yolo$ mkdir scripts
    guyue@guyue:~/ur_ws/src/my_yolo$ cd scripts
    guyue@guyue:~/ur_ws/src/my_yolo/scripts$ touch yolo.py
    guyue@guyue:~/ur_ws/src/my_yolo/scripts$ sudo chmod +x yolo.py
    
  2. 使用python yolo.py运行,报错:

    (mytorch) guyue@guyue:~/ur_ws/src/my_yolo/scripts$ python yolo.py
    Traceback (most recent call last):
      File "yolo.py", line 1, in <module>
        import rospy
      File "/opt/ros/melodic/lib/python2.7/dist-packages/rospy/__init__.py", line 49, in <module>
        from .client import spin, myargv, init_node, \
      File "/opt/ros/melodic/lib/python2.7/dist-packages/rospy/client.py", line 52, in <module>
        import roslib
      File "/opt/ros/melodic/lib/python2.7/dist-packages/roslib/__init__.py", line 50, in <module>
        from roslib.launcher import load_manifest  # noqa: F401
      File "/opt/ros/melodic/lib/python2.7/dist-packages/roslib/launcher.py", line 42, in <module>
        import rospkg
    ModuleNotFoundError: No module named 'rospkg'
    

    解决:
    在anaconda虚拟环境中安装rospkg

    pip install rospkg
    
  3. 使用rosrun my_yolo yolo.py,报错

    (mytorch) guyue@guyue:~/ur_ws/src/my_yolo/scripts$ rosrun my_yolo yolo.py
    import-im6.q16: not authorized `rospy' @ error/constitute.c/WriteImage/1037.
    from: can't read /var/mail/std_msgs.msg
    /home/guyue/ur_ws/src/my_yolo/scripts/yolo.py: 行 4: 未预期的符号 `(' 附近有语法错误
    /home/guyue/ur_ws/src/my_yolo/scripts/yolo.py: 行 4: `def talker():'
    

    解决:
    在虚拟环境中运行 which python,查找python编译器的位置
    在yolo.py文件首行加入下述语句:

    #!/home/guyue/anaconda3/envs/mytorch/bin/python
    
  • 13
    点赞
  • 120
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
红外和可见图像融合是将红外图像和可见光图像进行融合,以提取出两者的共有特征,使得融合后的图像在信息丰富度和识别性能上都得到提升。 使用深度学习框架PyTorch进行红外和可见图像融合,可以通过以下步骤进行: 1. 数据准备:收集足够的红外图像和可见光图像的数据集,并且将它们进行配准,以保证两者的像素对应一致。 2. 构建深度学习模型:使用PyTorch搭建一个深度学习模型,常用的融合模型包括卷积神经网络(CNN)和生对抗网络(GAN)等。在模型的设计中,需要同时考虑两者的不同特征和融合后图像的质量。 3. 数据预处理:将数据集进行分割,一部分作为训练集,一部分作为测试集。对训练集中的图像进行数据增强操作,如旋转、平移、缩放等,以增加数据样本的多样性和模型的鲁棒性。 4. 模型训练:使用训练集对深度学习模型进行训练,采用反向传播算法更新模型参数,以使得模型能够更好地学习到两个传感器图像的特征,并进行有效融合。 5. 模型评估:使用测试集对训练好的模型进行评估,计算融合后图像的评价指标,如均方误差(MSE)、结构相似性指数(SSIM)等,用于比较融合效果的好坏。 6. 模型优化:根据模型评估的结果,采取相应的调整措施来优化深度学习模型,比如调整网络结构、损失函数的权重等。 7. 融合应用:将优化后的模型应用到实际的红外和可见光图像融合应用中,实现红外和可见光图像的融合,以提高目标检测、目标跟踪等任务的性能。 总结来说,使用深度学习框架PyTorch进行红外和可见图像融合,将红外和可见光图像通过深度学习模型进行融合,能够提取出两者的共有特征,以改善融合后图像的质量和可用性。
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值