一、ros环境
官网按照对应的Ubuntu版本进行安装,Ubuntu18.04下安装如果遇到问题,先检查是否是Python 2.7
更改Python版本:
sudo cp /usr/bin/python /usr/bin/python_bak
sudo rm /usr/bin/python
sudo ln -s /usr/bin/python3.6 /usr/bin/python #设置为python3.6
//sudo ln -s /usr/bin/python2.7 /usr/bin/python #设置为python2.7
作者:57a5e7fd0ee6
链接:https://www.jianshu.com/p/153c86976d5d
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
如果Python版本没有问题,尝试卸载重新安装一下,这个时候还有问题一般是安装流程问题。
二、自定义消息+自定义服务
如何自定义服务和消息:ros Wiki 里面有详细的教程
问题1:自定义消息的时候,注意自己定义的类型一定是要小写的,不然的话在编译的时候会报错,找不到std_msgs包
问题2:自己定义的服务和消息在rosrun的时候找不到,是没有给Python文件添加可执行权限 chmod +x ***.py
问题3:pycharm的坑1:不能在桌面添加快捷方式,添加快捷方式每次启动的时候会提示找不到rospy相关的包,解决方式,控制台通过./ pycharm.sh 进行启动(这个最简单,其他方法自己尝试)
坑2:自己写的消息和服务不能import,解决办法:在 ./ pycharm.sh 前,先source一下ros的环境 (source ~/catkin_ws/devel/setup.bash)
问题4:
#!/usr/bin/env python
import rospy
from my_srvs.srv import AddTwoInts, AddTwoIntsResponse
rospy.init_node("add_two_ints_srv")
def handle_add_two_ints(req):
return AddTwoIntsResponse(req.a + req.b)
s = rospy.Service("add_two_ints", AddTwoInts, handle_add_two_ints)
rospy.spin()
自定义的服务,注意return的对象(AddTwoIntsResponse),如果不小心写错成AddTwoIntsRequest,会在传参的时候报错参数个数不对