ROS机器人程序设计(原书第2版)补充资料 (贰) 第二章 ROS系统架构及概念
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系统架构及概念的更多相关文章
- ROS机器人程序设计(原书第2版)补充资料 教学大纲
ROS机器人程序设计(原书第2版) 补充资料 教学大纲 针对该书稍后会补充教学大纲.教案.多媒体课件以及练习题等. <ROS机器人程序设计>课程简介 课程编号:XXXXXX 课程名称:RO ...
- ROS机器人程序设计(原书第2版)学习镜像分享及使用说明
ROS机器人程序设计(原书第2版)学习镜像分享及使用说明 系统用于ROS爱好者学习交流,也可用于其他用途,并不局限于ROS. 这款镜像文件是基于一年前的Ubuntu ROS Arduino Gazeb ...
- ROS机器人程序设计(原书第2版)补充资料 (拾) 第十章 使用MoveIt!
ROS机器人程序设计(原书第2版)补充资料 (拾) 第十章 使用MoveIt! 书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中使用. MoveIt ...
- ROS机器人程序设计(原书第2版)补充资料 (玖) 第九章 导航功能包集进阶 navigation
ROS机器人程序设计(原书第2版)补充资料 (玖) 第九章 导航功能包集进阶 navigation 书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中 ...
- ROS机器人程序设计(原书第2版)补充资料 (零) 源代码、资料和印刷错误修订等 2017年01月01日更新
ROS机器人程序设计(原书第2版)补充资料 (零) 源代码等 ROS官网 版)部分内容修订 页:第1行,删去$ 页:第6行,float64 y 前面加一个空格 页:中间创建主题:下面程序不用换行,(& ...
- ROS机器人程序设计(原书第2版)补充资料 (捌) 第八章 导航功能包集入门 navigation
ROS机器人程序设计(原书第2版)补充资料 (捌) 第八章 导航功能包集入门 navigation 书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中 ...
- ROS机器人程序设计(原书第2版)补充资料 (柒) 第七章 3D建模与仿真 urdf Gazebo V-Rep Webots Morse
ROS机器人程序设计(原书第2版)补充资料 (柒) 第七章 3D建模与仿真 urdf Gazebo V-Rep Webots Morse 书中,大部分出现hydro的地方,直接替换为indigo或ja ...
- ROS机器人程序设计(原书第2版)补充资料 (陆) 第六章 点云 PCL
ROS机器人程序设计(原书第2版)补充资料 (陆) 第六章 点云 PCL 书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中使用. RGBD深度摄像头 ...
- ROS机器人程序设计(原书第2版)补充资料 (伍) 第五章 计算机视觉
ROS机器人程序设计(原书第2版)补充资料 (伍) 第五章 计算机视觉 书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中使用. 计算机视觉这章分为两 ...
- ROS机器人程序设计(原书第2版)补充资料 (肆) 第四章 在ROS下使用传感器和执行器
ROS机器人程序设计(原书第2版)补充资料 (肆) 第四章 在ROS使用传感器和执行器 书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中使用. 第四 ...
随机推荐
- Node.js系列文章:如何进行代码调试
使用任何一门编程语言,都少不了代码调试这一功能.我们在使用JavaScript编写浏览器端代码时,Chrome提供了强大的调试工具Dev Tools,但是在编写Node.js代码时,大多数人最开始都使 ...
- [NOI 2010]超级钢琴
Description 小Z是一个小有名气的钢琴家,最近C博士送给了小Z一架超级钢琴,小Z希望能够用这架钢琴创作出世界上最美妙 的音乐. 这架超级钢琴可以弹奏出n个音符,编号为1至n.第i个音符的美妙 ...
- [测试题]無名(noname)
Description 因为是蒯的题所以没想好名字,为什么要用繁体呢?去看<唐诗三百首>吧! 题意很简单,给你一个串,求他有多少个不同的子串,满足前缀为A,后缀为B. 需要注意的是,串中所 ...
- [ZJOI2010]数字计数
题目描述 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. 输入输出格式 输入格式: 输入文件中仅包含一行两个整数a.b,含义如上所述. 输出格式: 输出文件 ...
- ●BZOJ 3270 博物馆
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3270题解: 期望DP,高斯消元 本来是定义的关于概率的dp, 但是发现这样定义有很多解释不通 ...
- bzoj 2783: [JLOI2012]树
Description 在这个问题中,给定一个值S和一棵树.在树的每个节点有一个正整数,问有多少条路径的节点总和达到S.路径中节点的深度必须是升序的.假设节点1是根节点,根的深度是0,它的儿子节点的深 ...
- day4 liaoxuefeng---高级特性
掌握了Python的数据类型.语句和函数,基本上就可以编写出很多有用的程序了. 但是在Python中,代码不是越多越好,而是越少越好.代码不是越复杂越好,而是越简单越好. 基于这一思想,我们来介绍Py ...
- IE下iframe跨域session和cookie失效问题的解决方案
http://blog.csdn.net/wauit/article/details/9875157
- Uncaught (in promise) TypeError:的错误
1.错误 创建一个vue实例,在data定义一些变量,如activityTime. 在methods里面用了axios发送请求. 在then的回调里使用this.activityTime 报错! 2. ...
- 搭建 RabbitMQ Server 高可用集群
阅读目录: 准备工作 搭建 RabbitMQ Server 单机版 RabbitMQ Server 高可用集群相关概念 搭建 RabbitMQ Server 高可用集群 搭建 HAProxy 负载均衡 ...