机器人操作系统R O S典型功能实现方法详解 Pleasure Group Office【T985AB-B866SYT-B182C-BS682T-STT18】机器人操作系统ROS: 典型功能实现方法详解李宝全ROS体系版本:Hydro 2013-09-04Groovy 2012-12-31Fuerte 2012-04-23ElectricDiamondbackROS是一种分布式的处理框架。
文件系统:在硬盘上查看的ROS源代码的组织形式包 Package:含有或比如下文中的turtlebot_teleop,turtlebot_bringup。
堆:Stack包的集合含有编译方法:catkin:Groovy及以后版本rosbuild:用于Fuerte及以前版本常用命令: rostopic list;列出系统中的所有Topicrosdep:安装依赖包,例如 rosdep install rosaria安装时,需要先建一个工作空间,然后把gitgub网站上相应的包下载到src文件夹下,再执行该语句。
具体见“ROSARIA配置与运行”一节。
环境变量设置:export例如:export ROS_HOSTNAME=marvinexport ROS_MASTER_URI=Bulks给的一些有用的命令rosnode info /rosaria_teleop_key_1rosrun rqt_robot_steering rqt_robot_steeringrosrun rqt_gui rqt_guirostopic helprosnode helprosnode info /RosAriarosnode info /rosaria_teleop_key_1rosnode listecho $ROS_HOSTNAMEROS安装安装教程:安装keys安装使Debian包为最新:sudo apt-get updateFull安装:sudo apt-get install ros-hydro-desktop-full会出现一个界面,利用Tab选择Yes即可成功则提示:ldconfig deferred processing now taking place找到可以使用的包:apt-cache search ros-hydro初始化rosdepsudo rosdep initrosdep update环境设置echo "source /opt/ros/hydro/" >> ~/.bashrcsource ~/.bashrc得到rosintallsudo apt-get install python-rosinstallTurtleBot 配置与运行介绍TurtleBot的主页面(安装&运行):TurtleBot包(Package)的安装过程安装(/// ):按照Debs Installation按照方法来安装:1.首先安装:> sudo apt-get install ros-hydro-turtlebot ros-hydro-turtlebot-apps ros-hydro-turtlebot-viz ros-hydro-turtlebot-simulator ros-hydro-kobuki-ftdi2.之后加入sourse的bash中:> . /opt/ros/hydro/. 说明:a)在终端中输入这一行后很快就结束.b)效果是在.bashrc(Home中的隐藏文件)的最后一行加入了"source /opt/ros/hydro/",c)效果等效于命令> echo "source /opt/ros/hydro/" >> ~/.bashrc. 这样的话就不用每次启动都输入命令“source /opt/ros/hydro/”了.d)这个好像在安装ROS时已经执行过了,不需要再执行一次吧3.之后加入kobuki的udev规则:> rosrun kobuki_ftdi create_udev_rules安装完之后还需要加入网络时间控制(/// ), 否则与kokuki无法通讯.1.首先安装chrony:sudo apt-get install chrony问题:我重装系统后再安装turtlebot后,连接不上kokuki,但能正常连接Kinect。
在命令行中,提示到bad callback,因此说明有很多件没有安装成功。
需要将其卸载重装,可以网上搜索Uninstall turtlebot来卸载并重装。
运行:a.首先打开机器人核心服务程序:打开一个终端:键入: roscore2.应用视觉传感器kinect并启动rviz界面:a.New Terminal: > roslaunch turtlebot_bringup ;3.SLAM:与之前的两项无关. 需要重新开始, 否则就报错了.a.New Terminal:开启ROS服务: roscoreb.New Terminal:启动kobuki:roslaunch turtlebot_bringupc.New Terminal:运行gmapping Demo:roslaunch turtlebot_navigationd.启动RVIZ的navigation:New Terminal: roslaunch turtlebot_rviz_launcherse.保存建图的结果:rosrun map_server map_saver -f /tmp/my_mapf.说明:该例程只用到kobuki, 没有用到Kinect.4.退出:ctrl+cROS基础的学习ROS Tutorials:Installing and Configuring Your ROS Environment创建:$ mkdir -p ~/catkin_ws/src .package_n/-- file for package_n-- Package manifest for package_nNavigating the ROS Filesystem1.查找某一包(package):使用命令(例如)$ rospack find roscpp. 则会返回路径:/opt/ros/hydro/share/roscpp2.利用命令$ roscd roscpp, 则直接进入/opt/ros/hydro/share/roscpp文件夹.1.$ pwd $ catkin_create_pkg beginner_tutorials std_msgs rospy roscpp:创建包a.beginner_tutorials为产生的包的名称,b.std_msgs, roscpp, rospy为依赖项(dependencies)Building a ROS Package1.上接 cd ~/catkin_ws/ : 首先返回工作空间文件夹.2.$ ls src: 查看src文件夹中的内容,a)结果为beginner_tutorials .b)链接一直存在c)命令ls为列出当前文件夹下的东西$ catkin_make. a ROS msg and srv产生一个消息:1.创建一个消息a)cd ~/catkin_ws/src/beginner_tutorials首先进入文件夹.b)再创建一个文件夹$ mkdir msg.c)$ echo "int64 num" > msg/: 创建一文件, 并写入一行话int64 num, 当然还可以多加入几行.2.对(beginner_tutorials中的)添加下面两行:a)<build_depend>message_generation</build_depend>b)<run_depend>message_runtime</run_depend>3.对(beginner_tutorials中的)做如下修改 :a)在原有的find_package(xxx)中加入“message_generation”b)在catkin_package()中添加CATKIN_DEPENDS message_runtimec)取消add_message_files()的注释, 并修改为add_message_files(FILESd)取消generate_messages(DEPENDENCIES std_msgs)的注释使用rosmsg$ rosmsg show beginner_tutorials/Num. 应该输出int64 num但但提示找不到该消息使用查找命令$ rosmsg show Num, 应该输出[beginner_tutorials/Num]:int64 num. 但还是找不到创建一个srv1.创建一个srv$ roscd beginner_tutorials应该输出int64 a int64 b --- int64 sum. 但提示找不到该消息使用查找命令 $ rossrv show AddTwoInts, 也只能查找到[rospy_tutorials/AddTwoInts]中的, 找不到[beginner_tutorials/AddTwoInts]中的.与srv共同的下一步在中, 取消generate_messages(DEPENDENCIES std_msgs)的注释(创建msg阶段已经完成)在catkin_ws工作空间下输入命令: $ catkin_make结果是生成了针对不同语言的头文件: msg的C++头文件在~/catkin_ws/devel/include/beginner_tutorials/. Python脚本在~/catkin_ws/devel/lib/dist-packages/beginner_tutorials/msg. 列表处理语言文件在~/catkin_ws/devel/share/common-lisp/ros/beginner_tutorials/msg/. 对于.srv, 生成的结果也类似. 生成成功!上接,不需要经过生成msg与srv的过程进入包cd ~/catkin_ws/src/beginner_tutorials1.1创建Publisher Node:src/ 文件(在该包的src文件夹下)2.1创建Subscriber Node:src/ 文件(在该包的src文件夹下)3.1Building your nodes 生成可执行文件a)在文件中(包的目录下面的)最后面加入(已经在之前msg&srv中生成并处理了,若没经过上面的msg&srv阶段的处理, 也能正常编译生成)b)add_executable(talker src该过程使用了. 生成的结果为在:devel/lib/beginner_tutorials下有talker与listener节点(可执行文件).并有提示:[100%] Built target talker;[100%] Built target listener1.打开ros服务:roscore2.运行talkera.另开一个terminal,进入$ cd ~/catkin_ws,b.再执行命令$ source ./devel/ . 该命令等效于source ~/catkin_ws(工作空间名)/devel/。