当前位置: 首页 > news >正文

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

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

文章目录

  • 【ROS】ros-noetic和anaconda联合使用
    • 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-8print('\n*****************************************\n\t[test libraries]:\n')
import rospy
import torchprint(' - 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-8print('\n*****************************************\n\t[test libraries]:\n')
import rospy
import sys
for p in sys.path:print(p)# print()
# import torchprint(' - 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-8print('\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 torchprint(' - 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)

相关文章:

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

【ROS】ros-noetic和anaconda联合使用 文章目录 【ROS】ros-noetic和anaconda联合使用1. 安装anaconda2. 创建虚拟环境3. 查看python解释器路径4. 在虚拟环境中使用任意的包5. 创建工作空间和ros功能包进行测试Reference 1. 安装anaconda 在Ubuntu20.04中安装anaconda可以参考…...

【MySQL】聚合查询与分组查询

我们先重建一个test库&#xff0c;在test库里新建一个people表&#xff08;包含序列号&#xff0c;姓名&#xff0c;工资&#xff09;&#xff0c;再往表该表里新增六条数据&#xff1a; mysql> drop database if exists test; Query OK, 1 row affected (0.07 sec)mysql>…...

RFID技术在锂电池生产线自动化应用

随着电动汽车和能源储存系统市场的不断扩大&#xff0c;锂离子电池作为其核心部件&#xff0c;以其高能量密度、长寿命等优点成为了主流选择。而对于锂电池智能化、高效化生产有着更高的要求&#xff0c;RFID技术的使用&#xff0c;将大幅度提高锂电池的生产产能&#xff0c;从…...

钢筋智能测径仪 光圆与带肋钢筋均可检测!

在一个大规模、高效、连续的工业生产中&#xff0c;制造业正朝着自动化方向快速优化发展&#xff0c;这种自动化的生产需要快速、准确地分析控制生产工艺中的参数&#xff0c;超差及时提示&#xff0c;为操作工对工厂的运行和自我调节做出快速反应&#xff0c;人工操作越来越不…...

docker--在Anaconda jupyter 容器中使用oracle数据源时,Oracle客户端安装配置及使用示例

配置oracle 11.2 客户端 将instantclient-basic-linux.x64-11.2.0.4.0.zip解压至/home/jupyter/oracle/将instantclient-sqlplus-linux.x64-11.2.0.4.0.zip解压/home/jupyter/oracle/【可选&#xff0c;提供sqlplus命令】复制【操作系统一般都有安装libaio.so】 cp /usr/lib64…...

can的波特率/比特率

can控制器只需要进行少量的设置就可以进行通信&#xff0c;就像RS232那样。其中较难设置的部分就是通信波特率的计算。can总线能够在一定范围内容忍总线上can节点的通信波特率的偏差&#xff0c;这种技能使得can总线有很强的容错性&#xff0c;同时也降低了对每个节点的振荡器精…...

项目经理涨薪秘籍!技巧都在这里了

好奇前辈们是如何带好团队、做出成功项目&#xff0c;从而升职加薪&#xff0c;成为高级项目经理或项目管理主管的&#xff1f;这是绝大多数新手PM最关注的事情。今天小编给大家揭秘&#xff01; 一、刚入门如何进阶 从入门的项目管理者发展到中级的项目管理者&#xff0c;重…...

甘特图组件DHTMLX Gantt示例 - 如何有效管理团队工作时间?(一)

如果没有有效的时间管理工具&#xff0c;如工作时间日历&#xff0c;很难想象一个项目如何成功运转。这就是为什么我们的开发团队非常重视项目管理&#xff0c;并提供了多种选择来安排DHTMLX Gantt的工作时间。使用DHTMLX Gantt这个JavaScript库&#xff0c;您可以创建一个强大…...

健效达海豚妈妈儿保项目推介会盛大启幕,聚焦互联网+精准医疗

2023年10月12日&#xff0c;由上海健启星科技发展有限公司和北京安智因生物技术有限公司联合主办的“2023互联网精准医学平台助力基层医疗|海豚妈妈儿保项目推介会”在中国苏州盛大启幕。 本次项目推介会得到国内行业专家、权威学者、国内知名三甲名医教授、头部企业、学术大咖…...

使用XLua在Unity中获取lua全局变量和函数

1、Lua脚本 入口脚本 print("OK") --也会执行重定向 require("Test") 测试脚本 print("TestScript") testNum 1 testBool true testFloat 1.2 testStr "123"function testFun()print("无参无返回") endfunction te…...

springboot项目集成kafka,并创建kafka生成消息线程池

效果图: 步骤1:添加依赖 <!-- kafka依赖 --><dependency><groupId>org.apache.kafka</groupId><<...

PreScan与MATLAB联合仿真报错

一、 问题&#xff1a; Error:Matlab ||和&&运算符的操作数必须能够转换为逻辑标量值 二、解决办法 必须安装VS2013&#xff08;我装的VS2017不行的&#xff09;&#xff0c;然后重启prescan和MATLAB&#xff0c;编译通过&#xff0c;界面如下&#xff1a; 三、VS…...

ros学习笔记(1)Mac本地安装虚拟机,安装Ros2环境

Ros与Linux的关系 Ros环境基于Linux系统内核 我们平时用的是Linux发行版&#xff0c;centos&#xff0c;ubuntu等等&#xff0c;机器人就用了ubunut 有时候我们经常会听到ubunue的版本&#xff0c;众多版本中&#xff0c;有一些是长期维护版TLS&#xff0c;有一些是短期维护…...

史上最强,Jmeter性能测试-性能场景设计实例(详全)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、性能测试需求 …...

【vim 学习系列文章 7-- vim vnormap nnoremap nmap map inoremap 区别】

文章目录 1.1 vim 递归映射和非递归映射1.1.1 vim 可视模式 1.2 map nmap vnormap nnoremap inoremap 区别 1.1 vim 递归映射和非递归映射 递归映射和非递归映射是 Vim 中两种不同的键盘映射方式。 递归映射&#xff08;recursive map&#xff09;是指在定义键盘映射时&#x…...

[ERROR] COLLATION ‘utf8_unicode_ci‘ is not valid for CHARACTER SET ‘latin1‘

[ERROR] COLLATION utf8_unicode_ci is not valid for CHARACTER SET latin1错误来源是&#xff1a; 跟着b站的谷粒商城项目做&#xff0c;前面的视频中设置了数据库的字符集编码&#xff0c;但是后面自己发现了MySQL容器重启报错&#xff0c;不停的在重启 查看log信息可以使用…...

基于rancher安装部署k8s

基础配置 systemctl stop firewalld && systemctl disable firewalld setenforce 0 sed -i s/SELINUXenforcing/SELINUXdisabled/ /etc/selinux/configvi /etc/hosts ip1 node1 ip2 node2 ip3 node3#免密登录 ssh-keygenssh-copy-id -i ~/.ssh/id_rsa.pub 普通用户ip1…...

保姆级微服务部署教程

大家好&#xff0c;我是鱼皮。 项目上线是每位学编程同学必须掌握的基本技能。之前我已经给大家分享过很多种上线单体项目的方法了&#xff0c;今天再出一期微服务项目的部署教程&#xff0c;用一种最简单的方法&#xff0c;带大家轻松部署微服务项目。 开始之前&#xff0c;…...

springboot 定时任务

springboot 定时任务 在Spring Boot中&#xff0c;你可以使用Spring的Scheduled注解来创建定时任务。以下是一个简单的示例&#xff1a; 首先&#xff0c;你需要在Spring Boot的主类上添加EnableScheduling注解以启用定时任务功能。 import org.springframework.boot.Spring…...

【大数据】HBase入门指南

原创不易&#xff0c;注重版权。转载请注明原作者和原文链接 文章目录 HBase特性Hadoop的限制基本概念NameSpaceTableRowKeyColumnTimeStampCell 存储结构HBase 数据访问形式架构体系HBase组件HBase读写流程读流程写流程 MemStore Flush参数说明 StoreFile Compaction参数说明触…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank&#xff1f;由于时间太久&#xff0c;我真忘记了。搜搜发现&#xff0c;还真有人和我一样。见下面的链接&#xff1a;https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935&#xff0c;SRS管理页面端口是8080&#xff0c;可…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

USB Over IP专用硬件的5个特点

USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中&#xff0c;从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备&#xff08;如专用硬件设备&#xff09;&#xff0c;从而消除了直接物理连接的需要。USB over IP的…...

面向无人机海岸带生态系统监测的语义分割基准数据集

描述&#xff1a;海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而&#xff0c;目前该领域仍面临一个挑战&#xff0c;即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解

在 C/C 编程的编译和链接过程中&#xff0c;附加包含目录、附加库目录和附加依赖项是三个至关重要的设置&#xff0c;它们相互配合&#xff0c;确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中&#xff0c;这些概念容易让人混淆&#xff0c;但深入理解它们的作用和联…...

华为OD机考-机房布局

import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...

代码规范和架构【立芯理论一】(2025.06.08)

1、代码规范的目标 代码简洁精炼、美观&#xff0c;可持续性好高效率高复用&#xff0c;可移植性好高内聚&#xff0c;低耦合没有冗余规范性&#xff0c;代码有规可循&#xff0c;可以看出自己当时的思考过程特殊排版&#xff0c;特殊语法&#xff0c;特殊指令&#xff0c;必须…...