首页 > 其他 > 详细

ros入门

时间:2019-10-27 15:24:42      阅读:136      评论:0      收藏:0      [点我收藏+]

Ros安装:

略,参看古月21讲!

ros是否安装成功测试: 

第一步: roscore  

第二步: rosrun turtlesim  turtlesim_node 

第三步    rosrun turtlesim  turtle_teleop_key

此时就可以通过键盘的上下左右键控制 小海龟了!

 

Ros命令行工具的使用:

命令rqt_graph :

它会显示当前全局的节点图

rosnode 相关的命令:

rosnode  list :

它会把所有的节点都列出来。

 

rosnode  info :

它可以查看某个节点的信息:

例如:

rosnode info turtlesim

输出为:

技术分享图片
--------------------------------------------------------------------------------
Node [/turtlesim]
Publications: 
* /rosout [rosgraph_msgs/Log]
* /turtle1/color_sensor [turtlesim/Color]
* /turtle1/pose [turtlesim/Pose]

Subscriptions: 
* /turtle1/cmd_vel [geometry_msgs/Twist]

Services: 
* /clear
* /kill
* /reset
* /spawn
* /turtle1/set_pen
* /turtle1/teleport_absolute
* /turtle1/teleport_relative
* /turtlesim/get_loggers
* /turtlesim/set_logger_level

contacting node http://zcb-vm:35989/ ...
Pid: 3141
Connections:
* topic: /rosout
* to: /rosout
* direction: outbound
* transport: TCPROS
* topic: /turtle1/cmd_vel
* to: /teleop_turtle (http://zcb-vm:32913/)
* direction: inbound
* transport: TCPROS
输出内容

 

rostopic 相关的命令:

它是和话题相关的命令

rostopic  list :

可以打印出所有的话题列表!

输出为:

/rosout
/rosout_agg
/turtle1/cmd_vel    (它就是前面用于 操控海龟运动的消息  )
/turtle1/color_sensor
/turtle1/pose

我们可以 给消息传入数据(通过 rostopic pub 发布)  以实现通过命令行 操控海龟,如下:

技术分享图片

 

 

 

技术分享图片

 

通过 -r  参数设置发布频率

-r 10 就是10HZ 就是1s发布10次 。

技术分享图片

 

 

下面查看rosmsg 的结构:

rosmsg show geometry_msgs/Twist
geometry_msgs/Vector3 linear
float64 x
float64 y
float64 z
geometry_msgs/Vector3 angular
float64 x
float64 y
float64 z

 

rosservice 相关的命令:

rostopic  list :

可以打印出所有的服务列表!

/clear
/kill
/reset
/rosout/get_loggers
/rosout/set_logger_level
/spawn
/teleop_turtle/get_loggers
/teleop_turtle/set_logger_level
/turtle1/set_pen
/turtle1/teleport_absolute
/turtle1/teleport_relative
/turtlesim/get_loggers
/turtlesim/set_logger_level

 

产生一个新的海龟(使用spawn 服务):

rosservice call call个服务!!!

技术分享图片

 

技术分享图片

 

技术分享图片

 

 

话题记录工具 rosbag :

它就是用来复现 操作的。

技术分享图片

 

 rosbag record   

-a  选项的意思是记录全部  

后面的cmd_record 是保存到的压缩文件。

之后ctrl c   

数据就自动保存到当前终端的目录下了!

 

然后可以使用rosbag play     命令进行复现!

 

 

创建工作空间和功能包:

建工作空间:

技术分享图片

 

工作空间,就类似于IDE中创建的工程,

src是放 功能包 的!

build 是放置 中间产生的 编译文件的,(基本不用关心它)

devel 是放置 生成的可执行文件,一些库,一些脚本等等,(最终运行都是在这里的!)

install 是 安装成功之后,安装的路径,(类似 win 中program files 是默认的路径一样)

 

技术分享图片

 

 

创建功能包:

技术分享图片

 

 

注意:一定要在 src空间创建功能包。

 

技术分享图片

 

下面看下它们的作用,

先看package.xml  

技术分享图片

 

它主要是关于 功能包的一些信息!

 

再看CMakeLists.txt 

技术分享图片

它主要是描述功能包中的编译规则。它使用的语法是cmake 的语法,

 

总结:

通过功能包可以完成代码的组织,通过工作空间可以完成功能包中代码的编译和运行!!!

 

发布者publisher的编程实现(topic 的学习):

技术分享图片

 

 

先创建功能包:

技术分享图片

 

后面的roscpp rospy std_msgs geometry_msgs turtlesim 都是依赖。

 

创建发布者代码(C++)

技术分享图片

 

技术分享图片

 

 

下面要配置 上面代码的编译规则(修改cmakelists.txt)

技术分享图片

 

add_executable () 的作用是将 src/velocity_publisher.cpp 编译成 velocity_publisher 可执行文件。

target_link_libraries()的作用是将 生成的可执行文件和 ros一些库做链接的(主要是C++ 的一些接口)。

总结:先做代码的编译,然后再做 链接。

 

编译并运行代码:

 技术分享图片

 

 

Python 版本:

技术分享图片
#!/usr/bin/env python 
# -*- coding:utf-8 -*- 
#该例子 将发布turtle1/cmd_vel 话题,消息类型为geometry_msgs::Twist

import rospy 
from geometry_msgs.msg import Twist 

def velocity_publisher():
    #ROS 节点初始化 
    rospy.init_node("velocity_publisher",anonymous=True) #匿名的

    #创建一个Publisher ,消息名字为/turtle1/cmd_vel 的topic ,消息类型为geometry_msgs::Twist 队列长度为10  
    turtle_vel_pub = rospy.Publisher(/turtle1/cmd_vel,Twist,queue_size=10)
    #设置循环的频率  
    rate = rospy.Rate(10)  #1s 10次 

    while not rospy.is_shutdown():
        #初始化 geometry_msgs:: Twist 类型的消息 
        vel_msg = Twist() 
        vel_msg.linear.x = 0.8
        vel_msg.angular.z = 0.2 

        #发布消息 
        turtle_vel_pub.publish(vel_msg)
        rospy.loginfo("Publish turtle velocity command [{:.2f}m/s, {:.2f}rad/s ]".format(vel_msg.linear.x,vel_msg.angular.z))

        #按照循环 频率延时  
        rate.sleep()
if __name__ == __main__:
    try:
        velocity_publisher()
    except:
        pass 
view code

 

注意要给python 文件加上可执行的权限。Python 的代码不需要进行cmake 编译。

 

ros入门

原文:https://www.cnblogs.com/zach0812/p/11743604.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!