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

上传人:b****6 文档编号:14110455 上传时间:2023-06-20 格式:DOCX 页数:33 大小:44.83KB
下载 相关 举报
机器人操作系统ROS典型功能实现方法详解.docx_第1页
第1页 / 共33页
机器人操作系统ROS典型功能实现方法详解.docx_第2页
第2页 / 共33页
机器人操作系统ROS典型功能实现方法详解.docx_第3页
第3页 / 共33页
机器人操作系统ROS典型功能实现方法详解.docx_第4页
第4页 / 共33页
机器人操作系统ROS典型功能实现方法详解.docx_第5页
第5页 / 共33页
机器人操作系统ROS典型功能实现方法详解.docx_第6页
第6页 / 共33页
机器人操作系统ROS典型功能实现方法详解.docx_第7页
第7页 / 共33页
机器人操作系统ROS典型功能实现方法详解.docx_第8页
第8页 / 共33页
机器人操作系统ROS典型功能实现方法详解.docx_第9页
第9页 / 共33页
机器人操作系统ROS典型功能实现方法详解.docx_第10页
第10页 / 共33页
机器人操作系统ROS典型功能实现方法详解.docx_第11页
第11页 / 共33页
机器人操作系统ROS典型功能实现方法详解.docx_第12页
第12页 / 共33页
机器人操作系统ROS典型功能实现方法详解.docx_第13页
第13页 / 共33页
机器人操作系统ROS典型功能实现方法详解.docx_第14页
第14页 / 共33页
机器人操作系统ROS典型功能实现方法详解.docx_第15页
第15页 / 共33页
机器人操作系统ROS典型功能实现方法详解.docx_第16页
第16页 / 共33页
机器人操作系统ROS典型功能实现方法详解.docx_第17页
第17页 / 共33页
机器人操作系统ROS典型功能实现方法详解.docx_第18页
第18页 / 共33页
机器人操作系统ROS典型功能实现方法详解.docx_第19页
第19页 / 共33页
机器人操作系统ROS典型功能实现方法详解.docx_第20页
第20页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

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

《机器人操作系统ROS典型功能实现方法详解.docx》由会员分享,可在线阅读,更多相关《机器人操作系统ROS典型功能实现方法详解.docx(33页珍藏版)》请在冰点文库上搜索。

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

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

PleasureGroupOffice【T985AB-B866SYT-B182C-BS682T-STT18】

 

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

机器人操作系统ROS:

典型功能实现方法详解

李宝全

 

ROS体系

版本:

Hydro2013-09-04

Groovy2012-12-31

Fuerte2012-04-23

Electric

Diamondback

ROS是一种分布式的处理框架。

文件系统:

在硬盘上查看的ROS源代码的组织形式

包Package:

含有或

比如下文中的turtlebot_teleop,turtlebot_bringup。

堆:

Stack

包的集合

含有

编译方法:

catkin:

Groovy及以后版本

rosbuild:

用于Fuerte及以前版本

常用命令:

rostopiclist;列出系统中的所有Topic

rosdep:

安装依赖包,例如rosdepinstallrosaria

安装时,需要先建一个工作空间,然后把gitgub网站上相应的包下载到src文件夹下,再执行该语句。

具体见“ROSARIA配置与运行”一节。

环境变量设置:

export

例如:

exportROS_HOSTNAME=marvin

exportROS_MASTER_URI=

Bulks给的一些有用的命令

rosnodeinfo/rosaria_teleop_key_1

rosrunrqt_robot_steeringrqt_robot_steering

rosrunrqt_guirqt_gui

rostopichelp

rosnodehelp

rosnodeinfo/RosAria

rosnodeinfo/rosaria_teleop_key_1

rosnodelist

echo$ROS_HOSTNAME

ROS安装

安装教程:

安装keys

安装

使Debian包为最新:

sudoapt-getupdate

Full安装:

sudoapt-getinstallros-hydro-desktop-full

会出现一个界面,利用Tab选择Yes即可

成功则提示:

ldconfigdeferredprocessingnowtakingplace

找到可以使用的包:

apt-cachesearchros-hydro

初始化rosdep

sudorosdepinit

rosdepupdate

环境设置

echo"source/opt/ros/hydro/">>~/.bashrc

source~/.bashrc

得到rosintall

sudoapt-getinstallpython-rosinstall

TurtleBot配置与运行

介绍TurtleBot的主页面(安装&运行):

TurtleBot包(Package)的安装过程

安装(///):

按照DebsInstallation按照方法来安装:

1.首先安装:

>sudoapt-getinstallros-hydro-turtlebotros-hydro-turtlebot-appsros-hydro-turtlebot-vizros-hydro-turtlebot-simulatorros-hydro-kobuki-ftdi

2.之后加入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规则:

>rosrunkobuki_ftdicreate_udev_rules

安装完之后还需要加入网络时间控制(///),否则与kokuki无法通讯.

1.首先安装chrony:

sudoapt-getinstallchrony

问题:

我重装系统后再安装turtlebot后,连接不上kokuki,但能正常连接Kinect。

在命令行中,提示到badcallback,因此说明有很多件没有安装成功。

需要将其卸载重装,可以网上搜索Uninstallturtlebot来卸载并重装。

运行:

a.首先打开机器人核心服务程序:

打开一个终端:

键入:

roscore

2.应用视觉传感器kinect并启动rviz界面:

a.NewTerminal:

>roslaunchturtlebot_bringup;

3.SLAM:

与之前的两项无关.需要重新开始,否则就报错了.

a.NewTerminal:

开启ROS服务:

roscore

b.NewTerminal:

启动kobuki:

roslaunchturtlebot_bringup

c.NewTerminal:

运行gmappingDemo:

roslaunchturtlebot_navigation

d.启动RVIZ的navigation:

NewTerminal:

roslaunchturtlebot_rviz_launchers

e.保存建图的结果:

rosrunmap_servermap_saver-f/tmp/my_map

f.说明:

该例程只用到kobuki,没有用到Kinect.

4.退出:

ctrl+c

ROS基础的学习

ROSTutorials:

InstallingandConfiguringYourROSEnvironment

创建:

$mkdir-p~/catkin_ws/src.

package_n/

--fileforpackage_n

--Packagemanifestforpackage_n

NavigatingtheROSFilesystem

1.查找某一包(package):

使用命令(例如)$rospackfindroscpp.则会返回路径:

/opt/ros/hydro/share/roscpp

2.利用命令$roscdroscpp,则直接进入/opt/ros/hydro/share/roscpp文件夹.

1.$pwd$catkin_create_pkgbeginner_tutorialsstd_msgsrospyroscpp:

创建包

a.beginner_tutorials为产生的包的名称,

b.std_msgs,roscpp,rospy为依赖项(dependencies)

BuildingaROSPackage

1.上接cd~/catkin_ws/:

首先返回工作空间文件夹.

2.$lssrc:

查看src文件夹中的内容,

a)结果为beginner_tutorials.

b)链接一直存在

c)命令ls为列出当前文件夹下的东西

$catkin_make.aROSmsgandsrv

产生一个消息:

1.创建一个消息

a)cd~/catkin_ws/src/beginner_tutorials首先进入文件夹.

b)再创建一个文件夹$mkdirmsg.

c)$echo"int64num">msg/:

创建一文件,并写入一行话int64num,当然还可以多加入几行.

2.对(beginner_tutorials中的)添加下面两行:

a)message_generation

b)message_runtime

3.对(beginner_tutorials中的)做如下修改:

a)在原有的find_package(xxx)中加入“message_generation”

b)在catkin_package()中添加CATKIN_DEPENDSmessage_runtime

c)取消add_message_files()的注释,并修改为add_message_files(FILES

d)取消generate_messages(DEPENDENCIESstd_msgs)的注释

使用rosmsg

$rosmsgshowbeginner_tutorials/Num.应该输出int64num

但但提示找不到该消息

使用查找命令$rosmsgshowNum,应该输出[beginner_tutorials/Num]:

int64num.但还是找不到

创建一个srv

1.创建一个srv

$roscdbeginner_tutorials应该输出int64aint64b---int64sum.但提示找不到该消息

使用查找命令$rossrvshowAddTwoInts,也只能查找到[rospy_tutorials/AddTwoInts]中的,找不到[beginner_tutorials/AddTwoInts]中的.

与srv共同的下一步

在中,取消generate_messages(DEPENDENCIESstd_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_tutorials

1.1创建PublisherNode:

src/文件(在该包的src文件夹下)

2.1创建SubscriberNode:

src/文件(在该包的src文件夹下)

3.1Buildingyournodes生成可执行文件

a)在文件中(包的目录下面的)最后面加入(已经在之前msg&srv中生成并处理了,若没经过上面的msg&srv阶段的处理,也能正常编译生成)

b)add_executable(talkersrc该过程使用了.生成的结果为在:

devel/lib/beginner_tutorials下有talker与listener节点(可执行文件).

并有提示:

[100%]Builttargettalker;[100%]Builttargetlistener

1.打开ros服务:

roscore

2.运行talker

a.另开一个terminal,进入$cd~/catkin_ws,

b.再执行命令$source./devel/.该命令等效于source~/catkin_ws(工作空间名)/devel/。

该命令很快即执行完毕

c.$rosrunbeginner_tutorials(包的名称)talker:

运行Publisher.(不需要在工作空间目录下)之后会看到如下类似消息:

3.运行listener

a.进入$cd~/catkin_ws,

b.再执行命令$source./devel/

c.$rosrunbeginner_tutorials(包的名称)

因为需要加入头文件#include"beginner_tutorials/"

1.写一个服务器节点:

进入文件夹cd~/catkin_ws/src/beginner_tutorials,编写src/

2.写一个客户端节点:

进入文件夹cd~/catkin_ws/src/beginner_tutorials编写src/

3.Build节点

a)在~/catkin_ws/src/beginner_tutorials/中加入如下几行:

devel/

b)

2.运行客户端

a)还需要再进入$cd~/catkin_ws,再执行命令$source./devel/

b)运行add_two_ints_server:

输入$rosrunbeginner_tutorialsadd_two_ints_client13.之后会看到如下类似消息:

.在客户端terminal中可以看到信息kresponse:

[4]

进一步的服务器客户端例程:

P3-AT/DX

ROSARIA配置与运行

网站主页

HowtouseROSARIA:

创建ROS工作空间

之前若没有加入启动命令./opt/ros/hydro/的话,则加入.

为了创建一个关于ROSARIA的工作空间,将学习ROS基础阶段的catkin_ws文件夹重命名为catkin_ws_Base,再新建一个工作空间catkin_ws:

mkdir-p~/catkin_ws/src

cd~/catkin_ws/src

catkin_init_workspace首先进入src文件夹,之后运行命令gitclone

包中包含文件

在安装ARIA后再下载该包应该也可以

安装ARIA以及BuildROSARIA

1.source~/catkin_ws/devel/

a)

b)或者把这项添加到.bashrc文件中再执行.bashrc文件:

{echo"source~/catkin_ws/devel/">>~/.bashrc->source~/.bashrc}

2.得到包之后,编译它们:

i.rosdepupdateTheyhavebeenignored,oroldonesusedinstead.解决方法:

sudorm/var/lib/apt/lists/*-vf删除相应文件

1.catkin_make若不在第一步运行该命令,则会报错[rospack]Error:

stack/packagerosarianotfound

2.运行启动该节点的命令:

rosrunrosariaRosAria

a)不需要到catkin_ws文件夹下.

b)命令rosrun允许直接运行一个包里面的节点(可执行程序):

rosrun[package_name][node_name].

c)节点的位置为\catkin_ws\devel\lib\rosaria\RosAria

3.(从运行下面4可知不需要这一步)设置网络地址

4.配置好USB转串口后就可以连接了,连接成功时输出的提示信息为(退出连接的话,直接Ctrl+C就可以了.):

Couldnotconnecttosimulator,connectingtorobotthroughserialport/dev/ttyUSB0.

Syncing0

Syncing1

Syncing2

Connectedtorobot.

Name:

RoboticsWorld_4129

Type:

Pioneer

Subtype:

p3at-sh

ArConfig:

Configversion:

Loadedrobotparametersfrom

ArRobotConnector:

ConnectingtoMTXbatteries(ifneccesary)...

ArRobotConnector:

ConnectingtoMTXsonar(ifneccesary)...

omrobotEEPROM:

32550

说明:

1.一问题的解决:

在运行后面连接Android时,再回头运行此命令,则就去src/rosaria找该可执行文件了,因此从路径上就错了,不知是那一步影响了该命令的执行.不过用中的catkin_make命令重新编译一下就又能正常连接了.

2.若USB转串口没有配置好,则会出现下方的错误提示,配置方法请见下方的USB转串口配置.

ArSerialConnection:

:

open:

Couldnotopenserialport'/dev/ttyUSB0'|ErrorFromOSNum:

2ErrorFromOSString:

Nosuchfileordirectory

Couldnotconnect,becauseopenonthedeviceconnectionfailed.

Failedtoconnecttorobot.

d...

TopicsandCommands

a)获得姿态:

rostopicecho/RosAria/posecho应该是请求输出的命令

b)运行结果:

2.线速度控制量的设置(s):

rostopicpub-1/RosAria/cmd_velgeometry_msgs/Twist'{linear:

{x:

y:

z:

},angular:

{x:

y:

z:

}}'

a)/RosAria/cmd_vel指话题名字Topic,不能是/cmd_vel或者cmd_vel

b)geometry_msgs/Twist为数据类型Message

c)'{linear:

{x:

y:

z:

},angular:

{x:

y:

z:

}}'合成一个消息

d)运行结果:

机器人做相应运动并提升publishingandlatchingmessageforseconds

3.角速度控制量的设置(s):

rostopicpub-1/RosAria/cmd_velgeometry_msgs/Twist'{linear:

{x:

y:

z:

},angular:

{x:

y:

z:

}}'

4.也可以把2,3合成起来.

5.其他的sonar,bumpers,accelerationparameters如何用更多ROSAPI请见:

ROSARIA键盘控制:

1.mkdir-p~/RosAriaKeyboard/src

2.创建包catkin_create_pkgRosAriaKeyboardstd_msgsrospyroscpp

编写程序:

3.编写文件

在文件夹下加入如下几行命令(Bluks给我的程序是用rosbuild编译方法。

需要做相应借鉴并修改)

1.

find_package(PkgConfigREQUIRED)新建工程mkdir-p~/RosAriaCode/src

2.创建包:

catkin_create_pkgRosAriaCodestd_msgsrospyroscpp

3.处理CMakeList

add_executable(rosaria_teleop_codesrc/

target_link_libraries(rosaria_teleop_code${catkin_LIBRARIES})

add_dependencies(rosaria_teleop_codeRosAriaCode_generate_messages_cpp)

4.catkin_make一下。

5.执行:

sourcedevel/

rosrunwmrcontrolrosaria_teleop_code

Android遥控

AndroidTeleoperatePioneer3atRobot.见网站:

//ConnectingtoaROSMaster

进入之前下载的ROSARIA包的文件夹中cd~/catkin_ws/src/rosaria

网页上是不是写错了没有ROSARIA.只能自己写命令gitclone,结果还可以,结果是在src文件夹中得到了ROSARIA文件夹.rosaria与ROSARIA文件夹一样大小,是不是就是一样的

Step2

使用命令:

Path_from_Home/ROSARIA$rosmake

但是在rosaria中使用rosmake就可以,结果为Built52packageswith0failures.,但在ROSARIA下就报错.网站上是不是写错了

Step3

进入文件夹,网站上写的命令$roscdROSARIA,但进入不了,只能手动进入rosaria了,好像roscd也不能使用.

创建一个文件:

命令:

gedit&把网站上的代码粘贴进去再保存.

Step4

编辑rosaria文件夹下的CMakeList.txt文件.在最后一行添加rosbuild_add_executable(android_teleop

在rosaria下输入命令:

rosmake.不起作用呢提示错误信息:

[rosmake]rosmakestarting...

[rosmake]Nopackageorstackspecified.Andcurrentdirectory'catkin_ws'isnotapackagenameorstackname.

[rosmake]Packagesrequestedare:

[]

[rosmake]Expandedargs[]to:

[rosmake]ERROR:

Noargumentscouldbeparsedintovalidpackageorstacknames.

从pubulisher节点中学习如何编译并运行Node

TurtleBot的键盘控制:

控制命令以Terminal端键入方式:

TurtleBot与p3dx应该很像,那么能不能在p3dx的terminal命令的基础上修改得到呢,大胆尝试后,竟然对了!

TurtleBot端的命令为:

(当然需要先启动机器人)

rostopicpub-1cmd_vel_mux/input/teleopgeometry_msgs/Twist'{linear:

{x:

y:

z:

},angular:

{x:

y:

z:

}}'

原因是,观察到中含有如下一句话:

那么很有可能Top

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2