【ROS】ros-noetic和anaconda联合使用(1)

news2025/2/22 4:58:56

【ROS】ros-noetic和anaconda联合使用(1)

文章目录

  • 【ROS】ros-noetic和anaconda联合使用(1)
    • 1. 安装anaconda
    • 2. 创建虚拟环境
    • 3. 查看python解释器路径
    • 4. 在虚拟环境中使用任意的包
    • 5. 创建工作空间和ros功能包进行测试
    • Reference

1. 安装anaconda

在Ubuntu20.04中安装anaconda可以参考博主的这篇博客,这里就不再赘述。下面简要介绍下博主使用的环境

2. 创建虚拟环境

Anaconda基本环境管理语法如下

  • 创建虚拟环境
conda create -n <your-virtualenv-name> python=3.8
  • 激活虚拟环境
conda activate <your-virtualenv-name>

激活虚拟环境后使用pip install rospkg rospy catkin_tools来安装ros依赖

#in your virtual env
pip install rospkg rospy catkin_tools

3. 查看python解释器路径

笔者使用的是ros-noetic版本,安装的anaconda3,在ros-noetic中的原生python版本为python3.8.10,如果使用的ros-melodic版本,那么原生python应该三是python2.7

下面我们验证一下基本信息是否正确,打开一个terminal

which python3
Image

默认的python3解释器路径是/usr/bin/python3

然后,查看anaconda虚拟环境中的python3解释器路径

conda activate <your_virtualenv_name>
which python3

比如笔者的虚拟环境名字是metaRL,查看的结果如下

Image

4. 在虚拟环境中使用任意的包

笔者在这个环境中配置了torch-v2.0.1具体教程参考这篇博客,这个所需要的包可以是任何你想使用的包。我们验证一下是否能顺利导入

conda activate <your_virtualenv_name>
python
import rospy
print(rospy.__file__)
import torch
print(torch.__file__)

如下所示,我们顺利导入了rospytorch并且查看了其存放路径

Image

5. 创建工作空间和ros功能包进行测试

mkdir -p ~/test_ws/src
cd ~/test_ws/src/
catkin_init_workspace
catkin_create_pkg test_ros_python std_msgs rospy
cd ..
catkin_make
echo "source ~/test_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc

然后创建一个测试脚本

roscd test_ros_python
mkdir scripts
touch test_node.py
chmod +x test_node.py

然后在test_node中编写以下内容

#! /usr/bin/env python
# coding :utf-8

print('\n*****************************************\n\t[test libraries]:\n')
import rospy
import torch

print(' - rospy.__file__ = %s'%rospy.__file__)
print(' - scipy.__file__ = %s'%torch.__file__)
# check cuda is ready or not
print('cuda is {}'.format('ready' if torch.cuda.is_available() else 'not ready'))
print('\n*****************************************\n\t[finish test]\n')


if __name__ == "__main__":
    rospy.init_node('test_node', anonymous=True)
    rospy.loginfo('>>>>> hello world >>>>>')

这样进行测试之后发现,并不能顺利导入我所需要的torch包,如下图所示

Image

这个结果与我们之前在终端中的结果相违背,那么可以详细查看一下python包的搜索路径,利用sys

#! /usr/bin/env python
# coding :utf-8

print('\n*****************************************\n\t[test libraries]:\n')
import rospy
import sys
for p in sys.path:
    print(p)

# print()
# import torch

print(' - rospy.__file__ = %s'%rospy.__file__)
# print(' - scipy.__file__ = %s'%torch.__file__)
# # check cuda is ready or not
# print('cuda is {}'.format('ready' if torch.cuda.is_available() else 'not ready'))
print('\n*****************************************\n\t[finish test]\n')


if __name__ == "__main__":
    rospy.init_node('test_node', anonymous=True)
    rospy.loginfo('>>>>> hello world >>>>>')

查看的搜索路径如下

Image

奇怪的是这里并没有我们之前在终端中得到的路径

Image

我们可以手动将这个路径添加到python的搜索路径当中

/home/<your-user-name>/anaconda3/envs/<your-virturalenv-name>/lib/python3.8/site-packages

得到如下的脚本文件

#! /usr/bin/env python
# coding :utf-8

print('\n*****************************************\n\t[test libraries]:\n')
import rospy
import sys
sys.path.append('/home/sjh/anaconda3/envs/metaRL/lib/python3.8/site-packages')
for p in sys.path:
    print(p)

print()
import torch

print(' - rospy.__file__ = %s'%rospy.__file__)
print(' - scipy.__file__ = %s'%torch.__file__)
# check cuda is ready or not
print('cuda is {}'.format('ready' if torch.cuda.is_available() else 'not ready'))
print('\n*****************************************\n\t[finish test]\n')


if __name__ == "__main__":
    rospy.init_node('test_node', anonymous=True)
    rospy.loginfo('>>>>> hello world >>>>>')

成功导入了torch

Image

Reference

【Linux】Ubuntu20.04版本配置pytorch环境2023.09.05【教程】

【ROS】如何在ROS中使用anaconda虚拟环境?

ROS图像的Deeplab v3+实时语义分割(ROS+Pytorch)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1088300.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Liunx系统管理的引导过程与服务控制

引导过程&#xff1a; liunx系统的开机过程&#xff1a; 开机自检(BIOS):linux主机开机之后&#xff0c;根据主板BIOS中的设备&#xff0c;对CPU内存 显卡 键盘等等设备进行初步检测 检测成功之后&#xff0c;根据预设的启动柜顺序进行系统控制权的移交 一般情况下&#xf…

阿里云云安全中心详细介绍(原态势感知)功能价格说明

阿里云云安全中心&#xff08;原态势感知&#xff09;是一个实时识别、分析、预警安全威胁的服务器主机安全管理系统&#xff0c;云安全中心功能支持漏洞扫描与修复、基线检查、防勒索、防病毒、防篡改、威胁检测模型等功能&#xff0c;云安全中心基础版免费、防病毒班432元一年…

网络安全—小白学习笔记

1.网络安全是什么 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 2.网络安全市场 一、是市场需求量高&#xff1b; 二、则是发展相对成熟入…

水库大坝安全监测是什么和主要作用?

水库大坝安全监测是指通过仪器观测和巡视检查对水利水电工程主体结构、地基基础、两岸边坡、相关设施以及周围环境所作的测量及观察。大坝安全监测是作为水库大坝安全管理的重要组成部分&#xff0c;是掌握水库大坝安全性态的重要手段&#xff0c;是科学调度、安全运行的前提。…

Java进阶 之 再论面向对象(3)——构造方法Constructors 以及 调用的分析 JavaBean的概念 构造函数中this关键字

前言 在前面博客中&#xff0c;我们从面向过程和面向对象的编程思想谈起&#xff0c;阐述了类和对象在Java中的编程中的应用&#xff0c;此外&#xff0c;对于对象的内存&#xff0c;变量作用域&#xff0c;参数传递等进行了阐述。 Java进阶 之 再论面向对象&#xff08;1&am…

配电房监测系统:智能化电力管理的关键

随着社会的发展和科技的进步&#xff0c;电力设施的重要性日益凸显。其中&#xff0c;配电房作为电能分配的核心设施&#xff0c;其运行状态直接影响到电力系统的稳定性和可靠性。为了确保配电房的高效运行&#xff0c;采用配电房监测系统成为关键。此类系统利用先进的智能电力…

企业数字化转型的必选项:集成自动化

NO.1 将“不可能”变成“可能”的自动化工作流 在智能化时代&#xff0c;我们经常会听到“工作流”这个词&#xff0c;但很多人并不清晰它真正的含义&#xff0c;简单来说&#xff0c;它是一个与其他场景流程集成的应用程序&#xff0c;目标是自动化各应用之间的流程&#xf…

【ivX】低调且强大的低代码平台

目录 前言 一、低代码那么多 为什么选择iVX&#xff1f; 二、“拼”出来的低代码平台&#xff0c;真的好用吗&#xff1f; 前言 首先我们应该明白自动编程突破可能是&#xff1a;领域内Mini LLM 现在的思路都是搞LLM&#xff0c;几乎像“大跃进”一样全民都在修炼“大模型”…

来自小魔推的八大优势应用场景,这些你都了解吗?

进入2023年&#xff0c;大多数在做短视频宣传的实体商家都在考虑新的推广方式&#xff0c;而近期商家宣传工具已经逐渐被小魔推所种草&#xff0c;今天就把小魔推的应用场景与八大优势&#xff0c;统一给大家讲清楚&#xff01; 1&#xff1a;员工专属推广码&#xff0c;商家可…

基于RuoYi-Flowable-Plus的若依ruoyi-nbcio支持自定义业务表单流程(一)

原先不支持自定义业务表单的流程流转&#xff0c;因为这样对很多用户就更加方便&#xff0c;流程还是用现有的流程&#xff0c;但表单可以自己单独设计&#xff0c;满足各种不同的业务需求。 1、增加一个接口传入当前设计的流程应用类型 /*** 获取流程分类详细信息* param cod…

CustomTabBar 自定义选项卡视图

1. 用到的技术点 1) Generics 泛型 2) ViewBuilder 视图构造器 3) PreferenceKey 偏好设置 4) MatchedGeometryEffect 几何效果 2. 创建枚举选项卡项散列&#xff0c;TabBarItem.swift import Foundation import SwiftUI//struct TabBarItem: Hashable{ // let ico…

CV2对图像做渐变模糊

一段小代码&#xff0c;供参考&#xff0c;在CV2中做一些边缘渐变的功能。 主要流程&#xff1a; 生成一个随机的mask&#xff0c;并归一化&#xff0c;使其作为另一张图片的权重。对mask做高斯模糊&#xff0c;实现边缘渐变。将加权mask与原始图片相乘。 import os import cv…

HelloKitty 代码 Python

话不多说直接上代码,绘制速度慢,录屏之后调倍速 import math import turtle as t# 计算长度、角度 t1:画笔对象 r:半径 angle:扇形(圆形)的角度 def myarc(t1, r, angle):arc_length = 2 * math.pi * r * angle

树莓派安装.NET 6.0

首先安装.Net Core依赖&#xff08;未使用&#xff09; sudo apt install -y libunwind8 libunwind8-dev gettext libicu-dev liblttng-ust-dev libcurl4 libcurl4-openssl-dev libssl-dev uuid-dev unzip libgdiplus libc6-dev libkrb5-3 需要安装的依赖微软官方文档已经列出…

想要精准获客? 必看企业软文的写作技巧

信息碎片化时代下&#xff0c;企业获客的常用方式就是软文营销&#xff0c;因为软文相比于一般的营销方式成本更低&#xff0c;效果持续时间长&#xff0c;但是有许多企业在写软文时没有掌握好方法&#xff0c;认为文章只要发了就行&#xff0c;导致宣传效果不明显&#xff0c;…

字符串的左旋和判断一个字符串是否为另外一个字符串旋转之后的字符串。(C语言实现)

目录 1. 字符串的左旋 2. 判断一个字符串是否为另外一个字符串旋转之后的字符串 1. 字符串的左旋 题目&#xff1a; 实现一个函数&#xff0c;可以左旋字符串中的k个字符。 例如&#xff1a; ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB 解析&#xff1a;该题有…

怎么把电影中的声音保存下来?

怎么把电影中的声音保存下来&#xff1f;当我们欣赏电影时&#xff0c;常常会遇到喜欢的片段、精彩的台词或优美的音乐。这时候&#xff0c;我们可能会有一个念头&#xff0c;希望能够将电影中的声音留存下来&#xff0c;以供将其作为手机铃声或背景音乐使用。 要实现这个目标&…

盘点:数字人直播系统源码部署哪家好?

数字人直播克隆系统是一种利用人工智能技术&#xff0c;将真实人物的形象、声音、表情、动作等特征转化为数字化的虚拟人物&#xff0c;通过网络进行实时互动的新型媒体形式。数字人直播克隆系统源码部署是指将数字人直播系统的核心代码和模型安装在自己的服务器上&#xff0c;…

【OAuth】OAuth2.0四种授权模式

什么是OAuth&#xff1f; 开放授权&#xff08;OAuth&#xff09;是一个开放标准&#xff0c;允许用户让第三方应用访问该用户在某一网站上存储私密的资源&#xff08;如照片&#xff0c;视频&#xff0c;联系人列表&#xff09;&#xff0c;而无需将用户名和密码提供给第三方…

和为 K 的子数组

题目链接 和为 K 的子数组 题目描述 注意点 -1000 < nums[i] < 1000子数组是数组中元素的连续非空序列 解答思路 最初想到的思路是使用递归&#xff0c;遍历整个数组&#xff0c;当访问到idx位置处的元素时&#xff0c;可以根据idx - 1作为末尾元素的子数组和推出id…