ROS官方文档学习记录(一)

安装完ROS系统后对官方例程进行了学习:
http://wiki.ros.org/ROS/Tutorials
在学习到运行服务和客户端时遇到了一些麻烦,简单做一下记录,以备以后再学习时忘记。

编写简单的服务和客户端(Python)

描述:本教程介绍如何在python中编写服务和客户机节点。

1.编写服务节点

打开在之前教程中创建的beginner_tutorials包
roscd beginner_tutorials
在beginner_tutorials包中创建scripts/add_two_ints_server.py文件,并在其中粘贴下方代码

#add_two_ints_server.py
#!/usr/bin/env python

from beginner_tutorials.srv import *
import rospy

def handle_add_two_ints(req):
    print "Returning [%s + %s = %s]"%(req.a, req.b, (req.a + req.b))
    return AddTwoIntsResponse(req.a + req.b)

def add_two_ints_server():
    rospy.init_node('add_two_ints_server')
    s = rospy.Service('add_two_ints', AddTwoInts, handle_add_two_ints)
    print "Ready to add two ints."
    rospy.spin()

if __name__ == "__main__":
    add_two_ints_server()

2.编写客户端节点

在beginner_tutorials包中创建scripts / add_two_ints_client.py文件,并在其中粘贴以下内容:

#add_two_ints_client.py
#!/usr/bin/env python

import sys
import rospy
from beginner_tutorials.srv import *

def add_two_ints_client(x, y):
    rospy.wait_for_service('add_two_ints')
    try:
        add_two_ints = rospy.ServiceProxy('add_two_ints', AddTwoInts)
        resp1 = add_two_ints(x, y)
        return resp1.sum
    except rospy.ServiceException, e:
        print "Service call failed: %s"%e

def usage():
    return "%s [x y]"%sys.argv[0]

if __name__ == "__main__":
    if len(sys.argv) == 3:
        x = int(sys.argv[1])
        y = int(sys.argv[2])
    else:
        print usage()
        sys.exit(1)
    print "Requesting %s+%s"%(x, y)
    print "%s + %s = %s"%(x, y, add_two_ints_client(x, y))

然后,不要忘记给两个文件权限:
$chmod +x scripts/add_two_ints_server.py
$chmod +x scripts/add_two_ints_client.py

构建节点

$cd~ / catkin_ws
$catkin_make

检查简单服务和客户端

$rosrun beginner_tutorials add_two_ints_server.py(Python)
$rosrun beginner_tutorials add_two_ints_client.py 1 3(Python)
但是 正常按照官方流程做到这一步会报错:
cannot fount package:from beginner_tutorials.srv import *
报错原因 没有将~/catkin_ws/devel/lib/python2.7/dist-packages加入PYTHONPATH
解决方法:
$sudo vim ~/.brashrc

export PYTHONPATH=~/catkin_ws/devel/lib/python2.7/dist-packages:$PYTHONPATH

$source ~./brashrc
$echo $PYTHONPATH
看到自己添加成功的路径即可解决

问题一:运行runcd beg..+Tab不能补全代码

经过几次尝试之后,每次要运行时先打开终端,运行ROS
$runcore
等待运行成功后 重新打开一个终端(以官方创建的工作空间为例)
$cd~ / catkin_ws
$catkin_make
(PS:以上是在运行完之前官方教程前面的步骤没有报错以后执行的)
在构建工作空间之后,它在devel子文件夹中创建了一个类似的结构,就像您在/ opt / ros / $ ROSDISTRO_NAME下找到的一样。

要将工作区添加到ROS环境,您需要获取生成的安装文件:
$. ~/catkin_ws/devel/setup.bash
运行完这一步以后 再运行
runcd beg+Tab键就可以补全啦。
小伙伴们有了解原理或者其他简单方法的欢迎留言区告知一声哦,我英语不是很好,看官方的文档理解的不是很清晰,就按这种笨办法先解决啦。(时间原因,细节下次补齐,大家圣诞快乐)

你可能感兴趣的:(ROS官方文档学习记录(一))