ROS机器人程序设计(原书第2版)补充资料 (贰) 第二章 ROS系统架构及概念

书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中使用。

由于工作事物繁忙,更新有些慢,抱歉。

已经完成的各章节补充说明,会依据反馈意见持续更新,希望大家多提宝贵意见,非常感谢。

在完成了第一章的学习实现之后,基本已经掌握了ROS系统的安装,那么如何使用ROS,理解系统架构和概念,这是第二章的内容。hydro-indigo-kinetic通用概念不做区分。

如果使用IDEs进行ROS开发环境构建,推荐:http://wiki.ros.org/IDEs

RoboWare Studio:http://www.roboware.me

补充参考:http://blog.csdn.net/zhangrelay/article/details/49893069

书中2.4.10中,节点示例有一些变化,如下:

~$ rosrun chapter2_tutorials chap
chap2_example1_a chap2_example2_a chap2_example3_a chap2_example4
chap2_example1_b chap2_example2_b chap2_example3_b

第16页:

理解ROS文件层次--综合包--包--等

第17页:

工作空间(重点)catkin_ws 当然也可以配置spark_ws等,

如果经常使用,注意在.bashrc中配置好环境。包括但不限于如下:

export JAVA_HOME=/opt/jdk/java
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
export PYTHONPATH=$PYTHONPATH:/home/exbot/LeapDeveloper/LeapSDK:/home/exbot/LeapDeveloper/LeapSDK/lib:/home/exbot/LeapDeveloper/LeapSDK/lib/x64
export LEAP_SDK=/home/exbot/LeapDeveloper/LeapSDK
export VREP_ROOT_DIR=/home/exbot/V-REP_PRO_EDU_V3_3_1_64_Linux/
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/exbot/catkin_ws/src
source /opt/ros/indigo/setup.bash
source /home/exbot/catkin_ws/devel/setup.bash
source /home/exbot/spark_ws/devel/setup.bash
#set up G2O
export G2O_ROOT=/home/exbot/Rob_Soft/g2o-master
export G2O_BIN=${G2O_ROOT}/bin
export G2O_LIB=${G2O_ROOT}/lib
export LD_LIBRARY_PATH=${G2O_LIB}:${LD_LIBRARY_PATH}
export PATH=${G2O_BIN}:${PATH}
export NVM_DIR="/home/exbot/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm

第18-21页:

理解功能包,综合功能包,消息,服务的基本组成结构,常用指令,数据类型等。

层次及包含关系。

第22页:

计算图级:节点等。主题等之间通信和数据流向。

第23页:

节点概念与常用指令。

第24页:

主题概念与常用指令。

第25页:

服务概念与常用指令。

第26-27页:

消息,记录包,节点管理器,参数服务器等。

第28页:

ROS开源社区简介。

使用练习:hydro-indigo-kinetic差别不大:

如indigo版:

exbot@relay-Aspire-4741:~$ rospack find turtlebot_navigation
/opt/ros/indigo/share/turtlebot_navigation

一般只是版本号有些不同。

有些在github上的功能包,是hydro版本的,已经不更新了,但是稍微修改下甚至不修改,通过源码编译可以用于indigo和kinetic版。
需要熟悉常用指令,rospack,rosstack,rosls,roscd,通常是linux常用终端命令前加ros

第29页:

创建工作空间。需要熟练掌握,hydro之后版本类似。

第30页:

创建并编译功能包等。

第31页:

安装独立功能包,注意各版本区别,hydro,indigo和kinetic:

exbot@relay-Aspire-4741:~$ sudo apt-get install ros-indigo-turtlebot-gazebo 

启动:

roscore

使用roslaunch可以忽略上步。下面会细说使用.launch一次启动多个节点。

第32页:

使用rosnode。

rqt_action                       rqt_pose_view
rqt_bag rqt_publisher
rqt_bag_plugins rqt_py_common
rqt_console rqt_py_console
rqt_dep rqt_reconfigure
rqt_graph rqt_robot_dashboard
rqt_gui rqt_robot_monitor
rqt_gui_cpp rqt_robot_steering
rqt_gui_py rqt_runtime_monitor
rqt_image_view rqt_rviz
rqt_joint_trajectory_controller rqt_service_caller
rqt_launch rqt_shell
rqt_logger_level rqt_srv
rqt_moveit rqt_tf_tree
rqt_msg rqt_top
rqt_nav_view rqt_topic
rqt_plot rqt_web

第33-35页:

使用rostopic。

补充除了书上介绍的指令,也可以使用图形界面。

exbot@relay-Aspire-4741:~$ rosrun rqt_topic rqt_topic

发布主题也可以使用:

exbot@relay-Aspire-4741:~$ rosrun rqt_publisher rqt_publisher 

方便快捷。

其他功能自己探索,乐趣多多。

第36-37页:

使用服务,补充如下:

exbot@relay-Aspire-4741:~$ rosrun rqt_service_caller rqt_service_caller


第38页:

参数服务。

第39-40页:

学习用C++写一个简单节点。

第41-42页:

编译节点。

第43页:

创建msg和srv文件。

第44-47页:

使用msg和srv文件。

第48-49页:

启动文件roslaunch。

补充可以尝试练习,用一个launch启动,海龟并画圆。文末给出答案。

第50-53页:

动态参数。

第54页:

本章总结。

思考与巩固:

1 熟练掌握ROS系统架构及概念

2 nodelet使用

参考:

2.1 官网:http://wiki.ros.org/nodelet

2.2 kint_zhao博客:http://blog.csdn.net/zyh821351004/article/details/52143309

3 启动文件.launch

第二章所用到的指令在hydro,indigo,jade,kinetic中均通用的,这章内容是ROS非常重要的基础。

附:

1 使用多个终端,启动roscore和小海龟,并画方形。如下:

2 使用roslaunch

下面是配置:

<!--turtlesim drawsquare launch-->
<launch> <node name="turtlesim_node1" pkg="turtlesim" type="turtlesim_node"/>
<node name="turtlesim_node2" pkg="turtlesim" type="turtlesim_node"/>
<node name="draw_square" pkg="turtlesim" type="draw_square"/>
<node name="rqt_graph" pkg="rqt_graph" type="rqt_graph"/> </launch>

直接在终端,输入:

~$ roslaunch turtlesim_drawsquare.launch

效果如下:

ROS机器人程序设计(原书第2版)补充资料 (贰) 第二章 ROS系统架构及概念的更多相关文章

  1. ROS机器人程序设计(原书第2版)补充资料 教学大纲

    ROS机器人程序设计(原书第2版) 补充资料 教学大纲 针对该书稍后会补充教学大纲.教案.多媒体课件以及练习题等. <ROS机器人程序设计>课程简介 课程编号:XXXXXX 课程名称:RO ...

  2. ROS机器人程序设计(原书第2版)学习镜像分享及使用说明

    ROS机器人程序设计(原书第2版)学习镜像分享及使用说明 系统用于ROS爱好者学习交流,也可用于其他用途,并不局限于ROS. 这款镜像文件是基于一年前的Ubuntu ROS Arduino Gazeb ...

  3. ROS机器人程序设计(原书第2版)补充资料 (拾) 第十章 使用MoveIt!

    ROS机器人程序设计(原书第2版)补充资料 (拾) 第十章 使用MoveIt! 书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中使用. MoveIt ...

  4. ROS机器人程序设计(原书第2版)补充资料 (玖) 第九章 导航功能包集进阶 navigation

    ROS机器人程序设计(原书第2版)补充资料 (玖) 第九章 导航功能包集进阶 navigation 书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中 ...

  5. ROS机器人程序设计(原书第2版)补充资料 (零) 源代码、资料和印刷错误修订等 2017年01月01日更新

    ROS机器人程序设计(原书第2版)补充资料 (零) 源代码等 ROS官网 版)部分内容修订 页:第1行,删去$ 页:第6行,float64 y 前面加一个空格 页:中间创建主题:下面程序不用换行,(& ...

  6. ROS机器人程序设计(原书第2版)补充资料 (捌) 第八章 导航功能包集入门 navigation

    ROS机器人程序设计(原书第2版)补充资料 (捌) 第八章 导航功能包集入门 navigation 书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中 ...

  7. ROS机器人程序设计(原书第2版)补充资料 (柒) 第七章 3D建模与仿真 urdf Gazebo V-Rep Webots Morse

    ROS机器人程序设计(原书第2版)补充资料 (柒) 第七章 3D建模与仿真 urdf Gazebo V-Rep Webots Morse 书中,大部分出现hydro的地方,直接替换为indigo或ja ...

  8. ROS机器人程序设计(原书第2版)补充资料 (陆) 第六章 点云 PCL

    ROS机器人程序设计(原书第2版)补充资料 (陆) 第六章 点云 PCL 书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中使用. RGBD深度摄像头 ...

  9. ROS机器人程序设计(原书第2版)补充资料 (伍) 第五章 计算机视觉

    ROS机器人程序设计(原书第2版)补充资料 (伍) 第五章 计算机视觉 书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中使用. 计算机视觉这章分为两 ...

  10. ROS机器人程序设计(原书第2版)补充资料 (肆) 第四章 在ROS下使用传感器和执行器

    ROS机器人程序设计(原书第2版)补充资料 (肆) 第四章 在ROS使用传感器和执行器 书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中使用. 第四 ...

随机推荐

  1. 【Android】Android Studio3.1 Mac版本设置项目桌面icon

    近来项目处于测试阶段,工作少了许多,就装了个最新的Android Studio,想写一下安卓.新建好项目,想设置个桌面的icon.我先准备好自己的icon图片,然后复制粘贴到res/mipmap-hd ...

  2. animation-timing-function的steps详解

    W3C里的定义: animation-timing-function 规定动画的速度曲线. 这个属性有很多取值, linear: 线性过渡.等同于贝塞尔曲线(0.0, 0.0, 1.0, 1.0) e ...

  3. ES6(正则扩展)

    ES6中正则的扩展 正则新增特性 一.构造函数的变化 1.ES5中new一个正则对象方法 (一行中2个参数,二行中1个参数) (第一行中的第一个参数必须是字符串) 2.ES6中新增一种方法(构造函数) ...

  4. [HAOI 2009]逆序对数列

    Description 对于一个数列{ai},如果有i<j且ai>aj,那么我们称ai与aj为一对逆序对数.若对于任意一个由1~n自然数组成的 数列,可以很容易求出有多少个逆序对数.那么逆 ...

  5. 洛谷P1446 [HNOI2008]Cards

    置换群+dp #include<cstdio> #include<cstdlib> #include<algorithm> #include<cstring& ...

  6. Educational Codeforces Round 19

    A. k-Factorization 题目大意:给一个数n,求k个大于1的数,乘积为n.(n<=100,000,k<=20) 思路:分解质因数呗 #include<cstdio> ...

  7. # C语言程序设计第一次作业1234

    ---恢复内容开始--- C语言程序设计第一次作业 1.求圆面积和周长 输入圆的半径,计算圆的周长和面积 (1)流程图 (2)测试数据及运行结果 测试数据r=3 运行结果 2.判断闰年 输入一个四位年 ...

  8. 初识 Runtime

    前言 之前在看一些第三方源码的时候,时不时的能碰到一些关于运行时相关的代码.于是乎,就阅读了一些关于运行时的文章,感觉写的都不错,写此篇文章为了记录一下,同时也重新学习一遍. Runtime简介 Ru ...

  9. 在""中添加"

    加上\即可 "return '<span onmouseover=MouseOver(this) onmouseout=MouseOut(this) onclick=editTea(\ ...

  10. Mysql索引介绍及常见索引的区别

    关于MySQL索引的好处,如果正确合理设计并且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车.对于没有索引的表,单表查询可能几十万数据就是瓶颈,而通常大型 ...