机器人操作系统ROS典型功能实现方法详解文档格式.docx
- 文档编号:2945881
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:33
- 大小:35.23KB
机器人操作系统ROS典型功能实现方法详解文档格式.docx
《机器人操作系统ROS典型功能实现方法详解文档格式.docx》由会员分享,可在线阅读,更多相关《机器人操作系统ROS典型功能实现方法详解文档格式.docx(33页珍藏版)》请在冰点文库上搜索。
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中的隐藏文件)的最后一行加入了"
c)效果等效于命令>
echo"
~/.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)<
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_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:
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)...
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:
}}'
a)/RosAria/cmd_vel指话题名字Topic,不能是/cmd_vel或者cmd_vel
b)geometry_msgs/Twist为数据类型Message
c)'
合成一个消息
d)运行结果:
机器人做相应运动并提升publishingandlatchingmessageforseconds
3.角速度控制量的设置(s):
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'
原因是,观察到中含有如下一句话:
<
remapfrom="
turtlebot_teleop_keyboard/cmd_vel"
to="
cmd_vel_mux/input/teleop"
/>
那么很有可
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 机器人 操作系统 ROS 典型 功能 实现 方法 详解