ROS_melodic与python3兼容

项目场景:

Ubuntu18.04的ros版本是melodic,一般只能兼容python2.7;实际使用中,需要rosrun运行python3的程序。


问题描述

这里是一个使用socket库实现can通讯的程序,直接rosrun出现报错

('Unable to Connect to Socket Specified: ', ('can0',))
('Error:', AttributeError("'module' object has no attribute 'AF_CAN'",))
Unable to Send CAN Frame.
('Error: ', AttributeError("'NoneType' object has no attribute 'send'",))
Unable to Receive CAN Frame.
('Error: ', AttributeError("'NoneType' object has no attribute 'recvfrom'",))
Error Enabling Motor!


原因分析:

代码编写的时候使用的是python3的socket库,可能导致部分代码错误


解决方案:

通过anaconda建立一个python3虚拟环境,在虚拟环境中rosrun该程序(下面省略了一些可能存在的source步骤)

1、安装anaconda:

官网或镜像源下载安装包

相关链接方法很多,不在此赘述。我安装的是anaconda2,对应系统默认python版本为2.7

bash Anaconda2-2019.10-Linux-x86_64.sh
(或sh Anaconda2-2019.10-Linux-x86_64.sh) 

2、创建虚拟环境,激活虚拟环境

conda create -n env3.6 python=3.6
#激活虚拟环境
conda activate env3.6
#退出虚拟环境
conda deactivate
#删除虚拟环境
conda remove -n envx.x(虚拟环境名称) --all
#查看安装了哪些包
conda list

3、安装需要的包以及ros的一些依赖

安装自己需要的包:(例如本例程需要用的python-can,bitstring等)

conda install [pkgname]

卸载包:

conda uninstall [pkgname]

注意一定要安装ros的一些依赖包,否则rosrun会报错:

conda install numpy pyyaml rospkg

4、配置完成后激活虚拟环境,应该可以rosrun python版本为3.x的程序了

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值