您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 综合/其它 > 机器人操作系统ROS_现状与应用实例 李宝全
机器人与信息自动化研究所InstituteofRobotics&AutomaticInformationSystem每周工作报告南开大学机器人与信息自动化研究所1ROS-RobotOperatingSystem:现状与应用实例李宝全南开大学:2014-7-3南开大学首届机器人学博士生论坛InstituteofRoboticsandAutomaticInformationSystem2ROS-RobotOperatingSystemWhat&Why现状How&Results几个应用例程Sum-mary综合实例:体感远程控制InstituteofRoboticsandAutomaticInformationSystem3应用火爆的ROS•ROSRepositories(50)Map:InstituteofRoboticsandAutomaticInformationSystem4应用火爆的ROS•Robotics&AutomationMagazine,IEEE•该杂志上设立了专题讨论区:ROSTopics•下方图片是在最新一期中ROSTopics的论文InstituteofRoboticsandAutomaticInformationSystem5应用火爆的ROS•新加坡南洋理工大学(NTU)机器人相关实验室大家都在用,已经形成了全民一起上的局面•所见的应用设备:–Pioneer3AT/DX–Kinect–AR.Drone–TurtleBotInstituteofRoboticsandAutomaticInformationSystem6ROS体系•Main:由WillowGarage公式维护核心部分程序•Universe:全球范围的代码,由其它个人/组织维护相关知识库(Repository),即功能包(例如先锋机器人的ROSARIA,Kinect的openni_tracker,语言识别pocketsphinx)InstituteofRoboticsandAutomaticInformationSystem7几点说明•虽然ROS的名字为“机器人操作系统”,但不是真正的操作系统,只是说它可以提供类似于操作系统的一些服务,比如底层通讯,分布式控制。•对于机器人的相关功能,不使用ROS也能实现.但ROS使得机器人软件搭建的工作更方便,效率更高。InstituteofRoboticsandAutomaticInformationSystem8ROS的程序的核心•节点–即可执行文件–由.cpp文件编译生成而来(指C++)•节点之间的通讯–节点间信息的发布与接收–Publish–SubscribeInstituteofRoboticsandAutomaticInformationSystem9节点•将整个工程(Project)模块化,每个节点即为一个模块。•每个节点都可以单独维护,比如现在有N个节点已经在运行了,用户可以再编写第N+1个节点,然后编译,然后运行,即有N+1个节点共同运行。•每个节点有唯一的名字•节点之间可借助网络跨主机共同运行.InstituteofRoboticsandAutomaticInformationSystem10节点之间的通讯•发布者Publisher•订阅者Subscriber•话题:发布者与订阅者之间的通讯方式–话题的名称:Topic:发布者与订阅者之间数据传输“管道”的名字,为一字符串–消息:Message:传输数据的类型,例如int,char,自定义类型。InstituteofRoboticsandAutomaticInformationSystem11ROS-RobotOperatingSystemWhat&Why现状How&Results几个应用例程Sum-mary综合实例:体感远程控制InstituteofRoboticsandAutomaticInformationSystem12ROS的几个例程•Helloworld•图像•先锋机器人P3AT/P3DX•KinectSkeleton•Voice•Network通讯InstituteofRoboticsandAutomaticInformationSystem13HelloWorld程序•节点:2个–节点talker(talker.cpp):包含一个发布者–节点listener(listener.cpp):包含一个接收者•节点间的通讯:–Topic(话题的名称):“chatter”–Message(传递的数据类型):std_msgs::String•String为ROS自定义的数据类型•String中包含唯一变量为std::stringdataInstituteofRoboticsandAutomaticInformationSystem14HelloWorld程序InstituteofRoboticsandAutomaticInformationSystem15HelloWorld程序InstituteofRoboticsandAutomaticInformationSystem16HelloWorld程序InstituteofRoboticsandAutomaticInformationSystem17HelloWorld程序InstituteofRoboticsandAutomaticInformationSystem18ROS的几个例程•Helloworld•图像•先锋机器人P3AT/P3DX•KinectSkeleton•Voice•Network通讯InstituteofRoboticsandAutomaticInformationSystem19ROS的几个例程:图像•图像的发布:对应ROS中的Publisher.以如下三个图像源举例:–Kinect的RGB摄像头–笔记本内置摄像头–外接USB摄像头•图像的接收:对应ROS中的Subscriber•图像的处理:–可以与OpenCV相结合(OpenCV与ROS均属于WillowGarage公司,所以….)–用户可以在该步骤中进行任意的图像处理操作(“soyoucandoeverythinginthisstep”)•图像的显示:与OpenCV相结合InstituteofRoboticsandAutomaticInformationSystem20图像的发布:Kinect的RGB摄像头•首先对Kinect设备进行配置,并进行初始化–由于Kinect与ROS相互支持,因此配置过程非常简便•初始化Kinect的过程就是发布一些列Topic的过程,这些Topic包括:–/camera/rgb/image_color:•该话题即对应于我们需要的RGB图像数据•至此图像发布的任务完毕•若想把图像显示出来,需要进行下一节“图像的接收与显示”–/camera/rgb/image_raw:RGB图像的原始数据–/camera/grey:这是灰度图像–/camera/depth:这是场景深度图像InstituteofRoboticsandAutomaticInformationSystem21图像的发布:Kinect的RGB摄像头图:Rviz中显示出的Kinect发布的点云信息InstituteofRoboticsandAutomaticInformationSystem22图像的发布:笔记本内置摄像头•对于笔记本内置USB摄像头的图像获取,要比Kinect复杂.这是由于ROS对Kinect的支持包括了图像Topic的发布,而对于计算机的内置/外置USB摄像头,需要我们自己做些操作•下载usb_cam包:包含如下3个文件–//usb_cam.h–//usb_cam.cpp:由于是在Ubuntu(12.04)系统下进行的,因此里面用到了Linux的V4L2视频驱动与服务–//usb_cam_node.cpp摄像头的图像在此节点中发布InstituteofRoboticsandAutomaticInformationSystem23图像的发布:笔记本内置摄像头InstituteofRoboticsandAutomaticInformationSystem24图像的发布:外置USB摄像头•也需要利用包usb_cam•由于外接USB摄像头的设备名为video1,因此将设备名的语句修改为•除此之外,其它操作与上一节的内置摄像头图像发布一致InstituteofRoboticsandAutomaticInformationSystem25图像的接收,处理与显示•ROS的图像数据使用sensor_msgs/Image的消息格式•CvBridge:属于ROS的库,在vision_opencv(堆stack)/cv_bridge(包package)/image_geometry中.用以转换sensor_msgs/Image至cv::Mat•该部分功能:–从相应Topic中获得sensor_msgs::Image图像信息(接收者),并将其转化为cv::Mat的形式,并显示图像。–当然,该部分首先需要图像源来发布一个图像Topic,例如上节的①Kinect,②内置USB摄像头,③外接USB摄像头InstituteofRoboticsandAutomaticInformationSystem26图像的接收,处理与显示InstituteofRoboticsandAutomaticInformationSystem27图像的接收,处理与显示InstituteofRoboticsandAutomaticInformationSystem28图像的接收,处理与显示•上页的image_converter节点对应于图像发布源为Kinect,若想要获得外置/内置摄像头的图像时,将订阅者的Topic改为“/image_raw”即可.–改为•因此将该节点修改后重新编译并运行,便可以继续获取另一个图像源的图像.这也体现了ROS的代码维护非常灵活.InstituteofRoboticsandAutomaticInformationSystem29图像的接收,处理与显示InstituteofRoboticsandAutomaticInformationSystem30ROS的几个例程•Helloworld•图像•先锋机器人P3AT/P3DX•KinectSkeleton•Voice•Network通讯InstituteofRoboticsandAutomaticInformationSystem31先锋机器人P3AT/P3DX•P3AT/P3DX的配置•角速度和线速度控制量的发布–控制量发布的节点:对应Publisher•控制量的接收–控制量接收的节点:对应Subscriber–即控制机器人的运动InstituteofRoboticsandAutomaticInformationSystem32P3AT/P3DX的配置•由于P3AT是串口通讯,我的笔记本上仅有USB口,因此首先需要配置USB转串口.•安装ROSARIA–ARIA是ActivMedia公司为先锋机器人提供的驱动与服务–由于该公司也支持ROS,因此发布了ROSARIA版本InstituteofRoboticsandAutomaticInformationSystem33角速度和线速度控制量的发布•话题名称/RosAria/cmd_vel“–该话题名称要与下一节接收节点中的一致•消息类型为ROS自定义的:geometry_msgs::Twist–在该Twist数据结构中,包括了角速度控制量与线速度控制量InstituteofRoboticsandAutomaticInformationSystem34角速度和线速度控制量的发布InstituteofRoboticsandAutomaticInformationSystem35控制量的接收•首先下载包rosaria:–
本文标题:机器人操作系统ROS_现状与应用实例 李宝全
链接地址:https://www.777doc.com/doc-7013315 .html