收藏 分享(赏)

机器人操作系统ros_典型功能实现方法详解.doc

上传人:天天快乐 文档编号:1279570 上传时间:2018-06-21 格式:DOC 页数:28 大小:1.92MB
下载 相关 举报
机器人操作系统ros_典型功能实现方法详解.doc_第1页
第1页 / 共28页
机器人操作系统ros_典型功能实现方法详解.doc_第2页
第2页 / 共28页
机器人操作系统ros_典型功能实现方法详解.doc_第3页
第3页 / 共28页
机器人操作系统ros_典型功能实现方法详解.doc_第4页
第4页 / 共28页
机器人操作系统ros_典型功能实现方法详解.doc_第5页
第5页 / 共28页
点击查看更多>>
资源描述

1、1机器人操作系统 ROS: 典型功能实现方法详解李宝全 ROS 体系 .2ROS 安装 .3TurtleBot 配置与运行 .3ROS 基础的学习 .4P3-AT/DX.8ROSARIA 配置与运行 .8ROSARIA 键盘控制 : .10ROSARIA 程序控制方式: .11Android 遥控 .11TurtleBot 的键盘控制 : .12配置 USB 转串口 .12CmakeList.txt 的制作 .13图像的发布与接收 .13图像的接收,处理与显示 .13Kinect 端获取图像 .14内置 USB 摄像头图像获取 .15外接 USB 摄像头图像获取 .17KinectSkelet

2、on .17TF Listener(综合实现人体跟踪 ) .19Voice .22语言识别 pocketsphinx .22识别结果的接收与显示 .23语言发布 .23综合: 捕获 String 并发声 .25两主机通讯 ROS_Network .25ROS_OpenTLD.27ROS 学习材料 .272ROS 体系版本:Hydro 2013-09-04Groovy 2012-12-31Fuerte 2012-04-23ElectricDiamondbackROS 是一种分布式的处理框架。文件系统: 在硬盘上查看的 ROS 源代码的组织形式包 Package:含有 manifest.xml 或

3、 package.xml?比如下文中的 turtlebot_teleop,turtlebot_bringup 。堆:Stack包的集合含有 stack.xml编译方法:catkin:Groovy 及以后版本rosbuild:用于 Fuerte 及以前版本常用命令: rostopic list;列出系统中的所有 Topicrosdep: 安装依赖包, 例如 rosdep install rosaria安装时, 需要先建一个工作空间,然后把 gitgub 网站上相应的包下载到 src 文件夹下,再执行该语句。具体见 “ROSARIA 配置与运行”一节。环境变量设置:export例如:export

4、ROS_HOSTNAME=marvinexport ROS_MASTER_URI=http:/hal:11311Bulks 给的一些有用的命令rosnode info /rosaria_teleop_key_1 rosrun rqt_robot_steering rqt_robot_steering rosrun rqt_gui rqt_guirostopic helprosnode helprosnode info /RosAriarosnode info /rosaria_teleop_key_1rosnode listecho $ROS_HOSTNAME3ROS 安装安装教程:http:

5、/wiki.ros.org/hydro/Installation/Ubuntu sudo sh -c echo “deb http:/packages.ros.org/ros/ubuntu precise main“ /etc/apt/sources.list.d/ros-latest.list1.3 安装 keyswget http:/packages.ros.org/ros.key -O - | sudo apt-key add -1.4 安装使 Debian 包为最新:sudo apt-get updateFull 安装:sudo apt-get install ros-hydro-de

6、sktop-full会出现一个界面,利用 Tab 选择 Yes 即可成功则提示:ldconfig deferred processing now taking place找到可以使用的包:apt-cache search ros-hydro1.5 初始化 rosdepsudo rosdep initrosdep update 1.6 环境设置echo “source /opt/ros/hydro/setup.bash“ /.bashrcsource /.bashrc1.7 得到 rosintallsudo apt-get install python-rosinstallTurtleBot 配

7、置与运行介绍 TurtleBot 的主页面(安装 /将 3Dsensor 加入到系统中, 初始化 kinect 传感器/kinect 最好插到 USB2.0 上b. 启动 rviz 的 view_robot : New Terminal: roslaunch turtlebot_rviz_launchers view_robot.launch / rviz 中也整合了上一步的 kobuki 的运动控制c. 这个也可以在 p3at 上的 kinect 上运行. 5. SLAM: 与之前的两项无关. 需要重新开始, 否则就报错了. a. New Terminal: 开启 ROS 服务: rosco

8、reb. New Terminal: 启动 kobuki:roslaunch turtlebot_bringup minimal.launchc. New Terminal: 运行 gmapping Demo:roslaunch turtlebot_navigation gmapping_demo.launchd. 启动 RVIZ 的 navigation:New Terminal: roslaunch turtlebot_rviz_launchers view_navigation.launche. 保存建图的结果:rosrun map_server map_saver -f /tmp/my

9、_mapf. 说明: 该例程只用到 kobuki, 没有用到 Kinect. 6. 退出:ctrl+cROS 基础的学习ROS Tutorials:http:/wiki.ros.org/ROS/Tutorials 1.1.1 Installing and Configuring Your ROS Environment创建 catkin workspace: 1. $ mkdir -p /catkin_ws/src /产生工作空间 Workspace 文件夹, 并产生源空间 src 文件夹2. $ cd /catkin_ws/src3. $ catkin_init_workspace /a.

10、初始化工作空间/b. 在 src 中仅生成一指向/opt/ros/hydro/share/catkin/cmake/toplevel.cmake 的CMakeLists.txt 的链接,即 CMakeLists.txt 的内容与 toplevel.cmake 的内容一样4. $ cd /catkin_ws/ /回到工作空间中5. $ catkin_make /build 工程?a. 要在工作空间目录下输入该命令b. /会产生 build,devel 文件夹6. $ source devel/setup.bash /在当前 bash 环境下读取并执行 devel/setup.bash 中的命令工

11、作空间的结构(包含包的):workspace_folder/ - WORKSPACEsrc/ - SOURCE SPACECMakeLists.txt /怎么没有这个呢 - Toplevel CMake file, provided by catkin5package_1/CMakeLists.txt - CMakeLists.txt file for package_1package.xml - Package manifest for package_1.package_n/CMakeLists.txt - CMakeLists.txt file for package_npackage.

12、xml - Package manifest for package_n1.1.2 Navigating the ROS Filesystem1. 查找某一包(package): 使用命令(例如)$ rospack find roscpp. 则会返回路径: /opt/ros/hydro/share/roscpp2. 利用命令$ roscd roscpp, 则直接进入/opt/ros/hydro/share/roscpp 文件夹.3. $ pwd /报告当前位置1.1.3 Creating a ROS Package上接 1.1.11. $ cd /catkin_ws/src: 首先进入 src

13、 文件夹.2. $ catkin_create_pkg beginner_tutorials std_msgs rospy roscpp:创建包a. beginner_tutorials 为产生的包的名称, b. std_msgs, roscpp, rospy 为依赖项(dependencies )1.1.4 Building a ROS Package上接 1.1.31. $ cd /catkin_ws/ : 首先返回工作空间文件夹.2. $ ls src: 查看 src 文件夹中的内容, a) 结果为 beginner_tutorials CMakeLists.txt. b) 链接 CMa

14、keLists.txt 一直存在c) 命令 ls 为列出当前文件夹下的东西3. $ catkin_make. /builda) 需要在工作空间目录下运行该命令b) 若在 src 文件夹下运行该命令,会有错误提示 The specified base path “/home/listname/catkin_ws_wmr/src“ contains a CMakeLists.txt but “catkin_make“ must be invoked in the root of workspace.1.1.10 Creating a ROS msg and srv2.1 产生一个消息:1. 创建一

15、个消息a) cd /catkin_ws/src/beginner_tutorials 首先进入文件夹. b) 再创建一个文件夹$ mkdir msg. c) $ echo “int64 num“ msg/Num.msg: 创建一文件 Num.msg, 并写入一行话 int64 num, 当然还可以多加入几行. 2. 对(beginner_tutorials 中的)package.xml 添加下面两行: a) message_generationb) message_runtime3. 对(beginner_tutorials 中的)CMakeList.txt 做如下修改 :a) 在原有的 fi

16、nd_package(xxx)中加入“message_generation”b) 在 catkin_package()中添加 CATKIN_DEPENDS message_runtimec) 取消 add_message_files()的注释, 并修改为 add_message_files(FILES Num.msg)d) 取消 generate_messages(DEPENDENCIES std_msgs)的注释62.2 使用 rosmsg$ rosmsg show beginner_tutorials/Num. 应该输出 int64 num但但提示找不到该消息?使用查找命令$ rosmsg

17、 show Num, 应该输出beginner_tutorials/Num:int64 num. 但还是找不到?3.1 创建一个 srv1. 创建一个 srva) $ roscd beginner_tutorials/输入这行命令后, 提升找不到 beginner_tutorials 文件夹呢. /只能手动进入该文件夹了b) $ mkdir srv /创建一个 srv 文件夹c) $ roscp rospy_tutorials AddTwoInts.srv srv/AddTwoInts.srv 把 ROS 系统文件中的rospy_tutorials 包复制文件到 srv 文件夹下 2. 对 b

18、eginner_tutorials 中的 CMakeList.txt 做如下修改: a) 在原有的 find_package(xxx)中加入“message_generation” (在创建 msg 过程中已添加)b) 取消 add_serivce_files( )的注释, 并修改为 add_serivce_files(FILES AddtwoInts.srv)3.2 使用 rossrv:使用命令:$ rossrv show beginner_tutorials/AddTwoInts. 应该输出 int64 a int64 b - int64 sum. 但提示找不到该消息?使用查找命令 $ r

19、ossrv show AddTwoInts, 也只能查找到rospy_tutorials/AddTwoInts中的, 找不到beginner_tutorials/AddTwoInts中的. ?4.msg 与 srv 共同的下一步在 CMakeList.txt 中, 取消 generate_messages(DEPENDENCIES std_msgs)的注释(创建 msg阶段已经完成)在 catkin_ws 工作空间下输入命令: $ catkin_make结果是生成了针对不同语言的头文件: msg 的 C+头文件在 /catkin_ws/devel/include/beginner_tutori

20、als/. Python 脚本在 /catkin_ws/devel/lib/python2.7/dist-packages/beginner_tutorials/msg. 列表处理语言文件在 /catkin_ws/devel/share/common-lisp/ros/beginner_tutorials/msg/. 对于.srv, 生成的结果也类似. 生成成功!1.1.11 cc Writing a Simple Publisher and Subscriber (C+)上接 1.1.4,不需要经过生成 msg 与 srv 的过程1.0 进入包 cd /catkin_ws/src/begin

21、ner_tutorials1.1 创建 Publisher Node:src/listener.cpp 文件(在该包的 src 文件夹下)2.1 创建 Subscriber Node:src/talker.cpp 文件(在该包的 src 文件夹下)3.1 Building your nodes 生成可执行文件a) 在 CMakeLists.txt 文件中(包的目录下面的)最后面加入( CMakeLists.txt 已经在之前 msg INFO 1394710671.682339580: sending back response: 4进一步的服务器客户端例程:https:/ 1.1.17 Re

22、cording and playing back data? http:/wiki.ros.org/ROS/Tutorials/Recording%20and%20playing%20back%20data P3-AT/DXROSARIA 配置与运行网站主页 http:/wiki.ros.org/ROSARIA How to use ROSARIA:http:/wiki.ros.org/ROSARIA/Tutorials/How%20to%20use%20ROSARIA 1.2 创建 ROS 工作空间之前若没有加入启动命令. /opt/ros/hydro/setup.bash 的话, 则加入.

23、 为了创建一个关于 ROSARIA 的工作空间, 将学习 ROS 基础阶段的 catkin_ws 文件夹重命名为 catkin_ws_Base, 再新建一个工作空间 catkin_ws:mkdir -p /catkin_ws/srccd /catkin_ws/srccatkin_init_workspace/cd /catkin_wscatkin_make/build /这后几步是需要做的,因为在 1。4 中要运行 devel/setup。dash1.3 下载 ROSARIA 到该工作空间中 . 首先进入 src 文件夹, 之后运行命令 git clone https:/ /这次使用 gith

24、ub 网站就没有问题, 结果是在 src文件夹下得到了 rosaria 包. 包中包含 RosAria.cpp 文件在安装 ARIA 后再下载该包应该也可以?1.4 安装 ARIA 以及 Build ROSARIA1. source /catkin_ws/devel/setup.basha) /在当前 bash 环境下执行文件/catkin_ws/devel/setup.bash 中的命令. b) 或者把这项添加到.bashrc 文件中再执行.bashrc 文件:echo “source /catkin_ws/devel/setup.bash“ /.bashrc - source /.bash

25、rc2. 得到包之后, 编译它们:a) rosdep update/更新b) rosdep install rosaria/运行完提示 ARIA has been installed in /usr/local/Aria,installation successful, 再等会,就有 All required rosdeps installed successfullyi. 这个应该与 1.3 中的 rosaria 包没有关系, 应该是从 ROS 网站上安装 rosariaii. 看看是不是安装在了/usr/local/Aria 中?iii. 重装系统后再次安装时,出现问题:apt: comm

26、and sudo apt-get install checkinstall failed。 运行 sudo apt-get update 时出现问题 Some index files failed to download. They have been ignored, or old ones used instead. 解决方法:9sudo rm /var/lib/apt/lists/* -vf 删除相应文件c) catkin_make/与上次的 catkin_make 显示出不同的结果;/ 该命令要在该工作空间中/i.对于包来讲, 名称不区分大小写, 比如当有两个包 rosaria 与 R

27、OSARIA 时, 会有如下提示:Multiple packages found with the same name “rosaria“:- rosaria- ROSARIA”ii.当在 catkin_ws 文件夹下使用命令 catkin_make 时, 会用到文件src/rosaria/CMakeList.txtiii.是这一步在 devel/lib 下生成了 rosaria 可执行文件?关于 CMakeList.txt 文件( 不用改) :add_executable(RosAria RosAria.cpp)add_dependencies(RosAria rosaria_gencfg)

28、add_dependencies(RosAria rosaria_gencpp)target_link_libraries(RosAria $catkin_LIBRARIES $Boost_LIBRARIES Aria pthread dl rt)set_target_properties(RosAria PROPERTIES COMPILE_FLAGS “-fPIC“)generate_messages( DEPENDENCIES geometry_msgs std_msgs)/要包括 geometry_msgs1.5 运行 roscore: 运行 roscore1.6 运行 RosAria

29、 节点1. source /RosAria/devel/setup.bash. 若不在第一步运行该命令,则会报错rospack Error: stack/package rosaria not found2. 运行启动该节点的命令: rosrun rosaria RosAriaa) 不需要到 catkin_ws 文件夹下. b) 命令 rosrun 允许直接运行一个包里面的节点( 可执行程序): rosrun package_name node_name.c) 节点的位置为catkin_wsdevellibrosariaRosAria3. (从运行下面 4 可知不需要这一步 )设置网络地址 e

30、xport ROS_IP=172.22.243.177. 4. 配置好 USB 转串口后就可以连接了, 连接成功时输出的提示信息为( 退出连接的话, 直接 Ctrl+C 就可以了 .): INFO 1394765069.684460124: RosAria: using port: /dev/ttyUSB0Could not connect to simulator, connecting to robot through serial port /dev/ttyUSB0.Syncing 0Syncing 1Syncing 2Connected to robot.Name: RoboticsW

31、orld_4129Type: PioneerSubtype: p3at-shArConfig: Config version: 2.0Loaded robot parameters from p3at-sh.pArRobotConnector: Connecting to MTX batteries (if neccesary).ArRobotConnector: Connecting to MTX sonar (if neccesary). INFO 1394765070.477106453: Setting TicksMM from robot EEPROM: 138 INFO 13947

32、65070.480042783: Setting DriftFactor from robot EEPROM: 0 INFO 1394765070.483254729: Setting RevCount from robot EEPROM: 32550 INFO 1394765070.526489547: RosAria: publishing new recharge state 0. INFO 1394765070.526596408: RosAria: publishing new motors state 0. INFO 1394765072.184292718: RosAria: p

33、ublishing new motors state 1.说明:1. 一问题的解决:在运行后面连接 Android 时, 再回头运行此命令, 则就去 src/rosaria 找该可执行文件了, 因此从路径上就错了, 不知是那一步影响了该命令的执行. 不过用 1.4 中的 catkin_make 命令重新编译一下就又能正常连接了. 2. 若 USB 转串口没有配置好, 则会出现下方的错误提示, 配置方法请见下方的 USB 转串口配置. INFO 1394760211.482514856: RosAria: using port: /dev/ttyUSB010/这说明使用的 COM 编号为 tty

34、USB0Could not connect to simulator, connecting to robot through serial port /dev/ttyUSB0.ArSerialConnection:open: Could not open serial port /dev/ttyUSB0 | ErrorFromOSNum: 2 ErrorFromOSString: No such file or directoryCould not connect, because open on the device connection failed.Failed to connect

35、to robot.ERROR 1394760211.511075792: RosAria: ARIA could not connect to robot! (Check port parameter is correct, and permissions on port device.)FATAL 1394760211.511173101: RosAria: ROS node setup failed. 1.9 Topics and Commands1. 获得姿态: rostopic echo /RosAria/pose / 可以在另一 terminal 的根命令a) /RosAria/po

36、se 为 Topic 名称b) .echo 应该是请求输出的命令c)运行结果:2. 线速度控制量的设置(0.1m/s):rostopic pub -1 /RosAria/cmd_vel geometry_msgs/Twist linear: x: 0.1, y: 0.0, z: 0.0, angular: x: 0.0, y: 0.0, z: 0.0a) /RosAria/cmd_vel 指话题名字 Topic , 不能是/cmd_vel 或者 cmd_velb) geometry_msgs/Twist 为数据类型 Messagec) linear: x: 0.1, y: 0.0, z: 0.

37、0, angular: x: 0.0, y: 0.0, z: 0.0 合成一个消息d) 运行结果:机器人做相应运动并提升 publishing and latching message for 3.0 seconds。以及 INFO 1395025704.461141760: new speed: 100.00,-0.30(1395025704.461)3. 角速度控制量的设置(0.1rad/s?):rostopic pub -1 /RosAria/cmd_vel geometry_msgs/Twist linear: x: 0.1, y: 0.0, z: 0.0, angular: x: 0

38、.0, y: 0.0, z: 0.14. 也可以把 2,3 合成起来. 5. 其他的? sonar, bumpers, acceleration parameters?如何用?更多 ROS API 请见:http:/wiki.ros.org/ROSARIA ROSARIA 键盘控制:1. mkdir -p /RosAriaKeyboard/src2. 创建包 catkin_create_pkg RosAriaKeyboard std_msgs rospy roscpp编写程序:3. 编写 rosaria_teleop_key.cpp 文件在 CMakeList.txt 文件夹下加入如下几行命令 (Bluks 给我的程序是用 rosbuild 编译方法。需要做相应借鉴并修改)1.find_package(PkgConfig REQUIRED)/若无此 ncurses 相关编译命令 , 会报错 initscr 未定义pkg_check_modules ( ncurses+ REQUIRED ncurses+)/ncurses 相关add_executable(rosaria_teleop_key src/rosaria_teleop_key.cpp)target_link_libraries(rosaria_teleop_key $catki

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报