本文主要部分全部来源于ROS官网的Tutorials.

Setup

roscore # making sure that we have roscore running
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key # Now you can use the arrow keys of the keyboard to drive the turtle around.

ROS Topics

sudo apt-get install ros-kinetic-rqt
sudo apt-get install ros-kinetic-rqt-common-plugins
rosrun rqt_graph rqt_graph
rostopic -h
rostopic echo /turtle1/cmd_vel # you will now see topic datas when you press the arrow key in turtle_teleop_key terminal

rostopic list -h # figure out what argument the list sub-command needs
rostopic list -v # displays a verbose list of topics to publish to and subscribe to and their type
rostopic type /turtle1/cmd_vel  # You should get the message type of the topic: geometry_msgs/Twist
rosmsg show geometry_msgs/Twist # look at the details of the message using rosmsg

Using rostopic pub

# publishes data on to a topic, rostopic pub [topic] [msg_type] [args]
rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'
# publishes the velocity commands at a rate of 1 Hz on the velocity topic
rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'
# Now We can also look at what is happening in rqt_graph.
# and see the data published by our turtlesim
rostopic echo /turtle1/pose

# see how fast the turtlesim_node is publishing /turtle1/pose, $ rostopic hz [topic]
rostopic hz /turtle1/pose

# get in depth information about a topic
rostopic type /turtle1/cmd_vel | rosmsg show

Using rqt_plot

rosrun rqt_plot rqt_plot
# a text box in the upper left corner gives you the ability to add any topic to the plot.
# Typing /turtle1/pose/x and add it.
# Typing /turtle1/pose/y and add it.

ROS Services and Parameters

rosservice list # shows us that the turtlesim node provides nine services
rosservice type /clear # find out what type the clear service is
rosservice call /clear # clears the background of the turtlesim_node # look at the case where the service has arguments by looking at the information for the service spawn
rosservice type /spawn | rossrv show
rosservice call /spawn 2 2 0.2 "" # spawn a new turtle at a given location and orientation rosparam list # look at what parameters are currently on the param server
rosparam set /background_r 150 # change the red channel of the background color
rosservice call /clear # call the clear service for the parameter change to take effect
rosparam get /background_g # get the value of the green background channel
rosparam get / # show us the contents of the entire Parameter Serve rosparam dump params.yaml # write all the parameters to the file ./params.yaml (current directory)
rosparam load params.yaml copy # load these yaml files into new namespaces
rosparam get /copy/background_b

Using rqt_console and roslaunch

This tutorial introduces ROS using rqt_console and rqt_logger_level for debugging and roslaunch for starting many nodes at once.

sudo apt-get install ros-kinetic-rqt ros-kinetic-rqt-common-plugins ros-kinetic-turtlesim

# in two new terminals start rqt_console and rqt_logger_level
rosrun rqt_console rqt_console
rosrun rqt_logger_level rqt_logger_level rosrun turtlesim turtlesim_node # Since the default logger level is INFO you will see any info that the turtlesim publishes when it starts up
roscd beginner_tutorials
mkdir launch
cd launch
gedit turtlemimic.launch
<launch>

  <group ns="turtlesim1">
<node pkg="turtlesim" name="sim" type="turtlesim_node"/>
</group> <group ns="turtlesim2">
<node pkg="turtlesim" name="sim" type="turtlesim_node"/>
</group> <node pkg="turtlesim" name="mimic" type="mimic">
<remap from="input" to="turtlesim1/turtle1"/>
<remap from="output" to="turtlesim2/turtle1"/>
</node> </launch>
roslaunch beginner_tutorials turtlemimic.launch
rostopic pub /turtlesim1/turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]' # the two turtlesims start moving even though the publish command is only being sent to turtlesim1

Using rosed to edit files in ROS

rosed roscpp Logger.msg #  demonstrates how you would edit the Logger.msg file within the roscpp package

rosed roscpp <tab><tab> # tab auto complete

echo "export EDITOR='gedit -w'" >> ~/.bashrc
source ~/.bashrc
echo $EDITOR
rosed roscpp Logger.msg # This time file will be open by The more beginner-friendly editor

Creating a ROS msg and srv

  • msg: msg files are simple text files that describe the fields of a ROS message. They are used to generate source code for messages in different languages.
  • srv: an srv file describes a service. It is composed of two parts: a request and a response.

Aboat Msg

$ roscd beginner_tutorials
$ mkdir msg
$ echo "int64 num" > msg/Num.msg rosed beginner_tutorials package.xml

Open package.xml, and make sure these two lines are in it.

  <build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>
rosed beginner_tutorials CMakeLists.txt

Modify it like this:

find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
message_generation
)
...
catkin_package(
...
CATKIN_DEPENDS message_runtime ...
...)
...
add_message_files(
FILES
Num.msg
)
...
generate_messages(
DEPENDENCIES
std_msgs
)
...

Make sure ROS can see it.

rosmsg show beginner_tutorials/Num # You will see: int64 num
rosmsg show Num # You will see: [beginner_tutorials/Num]: int64 num

Aboat srv

$ roscd beginner_tutorials
$ mkdir srv
$ roscp rospy_tutorials AddTwoInts.srv srv/AddTwoInts.srv
$ rosed beginner_tutorials CMakeLists.txt

Modify it like this:

...
add_service_files(
FILES
AddTwoInts.srv
)
...

make sure that ROS can see it using the rossrv show command

rossrv show beginner_tutorials/AddTwoInts
rossrv show AddTwoInts

Now that we have made some new messages we need to make our package again:

$ roscd beginner_tutorials
$ cd ../..
$ catkin_make install
$ cd -

Any .msg file in the msg directory will generate code for use in all supported languages. The C++ message header file will be generated in ~/catkin_ws/devel/include/beginner_tutorials/.

rosmsg -h

Review

Let's just list some of the commands we've used so far:

  • rospack = ros+pack(age) : provides information related to ROS packages
  • roscd = ros+cd : changes directory to a ROS package or stack

  • rosls = ros+ls : lists files in a ROS package

  • roscp = ros+cp : copies files from/to a ROS package

  • rosmsg = ros+msg : provides information related to ROS message definitions
  • rossrv = ros+srv : provides information related to ROS service definitions
  • catkin_make : makes (compiles) a ROS package
    • rosmake = ros+make : makes (compiles) a ROS package (if you're not using a catkin workspace)

ROS入门学习(基于Ubuntu16.04+kinetic)的更多相关文章

  1. SLAM+语音机器人DIY系列:(二)ROS入门——3.在ubuntu16.04中安装ROS kinetic

    摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重点对ROS ...

  2. 基于ubuntu16.04部署IBM开源区块链项目-弹珠资产管理(Marbles)

    前言 本教程基本上是对Marbles项目的翻译过程. 如果英文比较好的话,建议根据官方操作说明,一步步进行环境部署.当然你也可以参考本教程在自己的主机上部署该项目. Marbles 介绍 关于 Mar ...

  3. 基于ubuntu16.04快速构建Hyperledger Fabric网络

    前言 最近在参加一个比赛,使用到了区块链的开源软件hyperledger,由于之前从未接触过区块链,以及和区块链开发相关的内容,所有在网上查阅了大量的资料,并且通过学习yeasy(杨宝华)开源的入门书 ...

  4. ROS入门学习

    ROS学习笔记 ROS入门网站; ROS入门书籍 ROS主要包含包括功能包.节点.话题.消息类型和服务; ROS功能包/软件包(Packages) ROS软件包是一组用于实现特定功能的相关文件的集合, ...

  5. C#码农的大数据之路 - 使用Ambari自动化安装HDP2.6(基于Ubuntu16.04)并运行.NET Core编写的MR作业

    准备主机 准备3台主机,名称作用如下: 昵称 Fully Qualified Domain Name IP 作用 Ubuntu-Parrot head1.parrot 192.168.9.126 Am ...

  6. 基于Ubuntu16.04的GeForce GTX 1080驱动安装,遇到的问题及对应的解决方法

    1.在主机上插上GPU之后,查看设备: $ nvidia-smi Tue Dec :: +------------------------------------------------------- ...

  7. Kubernetes入门学习--在Ubuntu16.0.4安装配置Minikube

    目 录 一. 安装minikube环境 1.1. 安装前准备 1.2. 安装Lantern 1.2.1. Lantern下载网站 1.2.2. Lantern下载地址 1.2.3. Lantern安装 ...

  8. 深度学习caffe:Ubuntu16.04安装指南(1)

    caffe [CPU ONLY] 2017-01-15 最简单的安装配置方式: 不用GPU加速,使用OPENCV2.4图像库, 这是根据官方教程(链接如下)简化而得到. Ubuntu 16.04 or ...

  9. Hadoop完全分布式环境搭建(三)——基于Ubuntu16.04安装和配置Java环境

    [系统环境] 1.宿主机OS:Win10 64位 2.虚拟机软件:VMware WorkStation 12 3.虚拟机OS:Ubuntu16.04 4.三台虚拟机 5.JDK文件:jdk-8u201 ...

随机推荐

  1. Dijkstra和堆优化

    Dijkstra算法 由于我之前一直记的迪杰斯特拉的翻译导致我把dijkstra写成了dijstra--所以下文#define dijstra dijkstra 我以后叫她迪杰克斯歘! Dijskra ...

  2. 第五十三篇 -- MFC美化界面2

    IDC_STATIC 1. 设置字体样式 方法1:在OnInitDialog()函数中使用以下语句 CFont * f; f = new CFont; f->CreateFont(50, // ...

  3. proteus8.1 pro 中文版安装破解教程

    Proteus8 Pro是非常有名的EDA工具(仿真软件),从原理图布图.代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计.是唯一将电路仿真软件.PCB设计软 ...

  4. Spring in Action学习笔记(2)

    Spring基础 AOP 面向切面编程 通知.连接点.切点.切面 Spring提供 4 种类型的AOP支持: 基于代理的经典SpringAOP:使用ProxyFactoryBean. 纯POJO切面: ...

  5. 还不了解一下 Java 8 Predicate 函数接口

    同学你好,这里有一份你的未读代码,等你查收. 这篇文章属于 Java 8 教程(LTS)系列教程,点击阅读更多相关文章. Predicate 函数接口同之前介绍的 Function 接口一样,是一个函 ...

  6. SpringBoot整合Guacamole教程

    前言 本文主要介绍的是SpringBoot如何整合Guacamole在浏览器是远程桌面的访问. Guacamole 介绍 Apache Guacamole 是一个无客户端远程桌面网关.它支持标准协议, ...

  7. 大数据学习(18)—— Flume介绍

    老规矩,学习新东西先上官网瞅瞅Apache Flume Flume是什么 Flume是一个分布式.可靠的大规模高效日志收集.汇聚和传输的这么一个服务.它的架构基于流式数据,配置简单灵活.它具备可调节的 ...

  8. 🏆【Java技术专区】「编译器专题」重塑认识Java编译器的执行过程(消除数组边界检查+公共子表达式)!

    前提概要 Java的class字节码并不是机器语言,要想让机器能够执行,还需要把字节码翻译成机器指令.这个过程是Java虚拟机做的,这个过程也叫编译.是更深层次的编译. 在编译原理中,把源代码翻译成机 ...

  9. 为ScrollView增加圆角的三种方式,及自定义属性【在Linearlayout中新增ScrollView支持滚动 后续】

    获取圆角的几种方案如下:方案一:通过shape来实现,给scrollView增加背景来实现方案二:通过自定义ScrollView,还要自定义属性,在dispatchDraw中不停的裁剪方案三:用And ...

  10. 时间-i春秋

    记一道跑脚本的题 进入页面拿到一段代码. <?php header("content-type:text/html;charset=utf-8"); '天下武功唯快不破'; ...