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

举报
zhangrelay 发表于 2021/07/15 06:00:44 2021/07/15
【摘要】 ROS机器人程序设计(原书第2版)补充资料 (贰) 第二章 ROS系统架构及概念 书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中使用。 由于工作事物繁忙,更新有些慢,抱歉。 已经完成的各章节补充说明,会依据反馈意见持续更新,希望大家多提宝贵意见,非常感谢。 在完成了第一章的学习实现之后,基本已经掌握了ROS系统的安装,那么...

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

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

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

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

在完成了第一章的学习实现之后,基本已经掌握了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中,节点示例有一些变化,如下:


  
  1. ~$ rosrun chapter2_tutorials chap
  2. chap2_example1_a chap2_example2_a chap2_example3_a chap2_example4
  3. chap2_example1_b chap2_example2_b chap2_example3_b


第16页:

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

第17页:

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

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


  
  1. export JAVA_HOME=/opt/jdk/java
  2. export JRE_HOME=${JAVA_HOME}/jre
  3. export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
  4. export PATH=${JAVA_HOME}/bin:$PATH
  5. export PYTHONPATH=$PYTHONPATH:/home/exbot/LeapDeveloper/LeapSDK:/home/exbot/LeapDeveloper/LeapSDK/lib:/home/exbot/LeapDeveloper/LeapSDK/lib/x64
  6. export LEAP_SDK=/home/exbot/LeapDeveloper/LeapSDK
  7. export VREP_ROOT_DIR=/home/exbot/V-REP_PRO_EDU_V3_3_1_64_Linux/
  8. export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/exbot/catkin_ws/src
  9. source /opt/ros/indigo/setup.bash
  10. source /home/exbot/catkin_ws/devel/setup.bash
  11. source /home/exbot/spark_ws/devel/setup.bash
  12. #set up G2O
  13. export G2O_ROOT=/home/exbot/Rob_Soft/g2o-master
  14. export G2O_BIN=${G2O_ROOT}/bin
  15. export G2O_LIB=${G2O_ROOT}/lib
  16. export LD_LIBRARY_PATH=${G2O_LIB}:${LD_LIBRARY_PATH}
  17. export PATH=${G2O_BIN}:${PATH}
  18. export NVM_DIR="/home/exbot/.nvm"
  19. [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm

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

层次及包含关系。

第22页:

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

第23页:

节点概念与常用指令。

第24页:

主题概念与常用指令。

第25页:

服务概念与常用指令。

第26-27页:

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

第28页:

ROS开源社区简介。

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

如indigo版:


  
  1. exbot@relay-Aspire-4741:~$ rospack find turtlebot_navigation
  2. /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。


  
  1. rqt_action rqt_pose_view
  2. rqt_bag rqt_publisher
  3. rqt_bag_plugins rqt_py_common
  4. rqt_console rqt_py_console
  5. rqt_dep rqt_reconfigure
  6. rqt_graph rqt_robot_dashboard
  7. rqt_gui rqt_robot_monitor
  8. rqt_gui_cpp rqt_robot_steering
  9. rqt_gui_py rqt_runtime_monitor
  10. rqt_image_view rqt_rviz
  11. rqt_joint_trajectory_controller rqt_service_caller
  12. rqt_launch rqt_shell
  13. rqt_logger_level rqt_srv
  14. rqt_moveit rqt_tf_tree
  15. rqt_msg rqt_top
  16. rqt_nav_view rqt_topic
  17. 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
 

参数服务。

第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

下面是配置:


  
  1. <!--turtlesim drawsquare launch-->
  2. <launch>
  3. <node name="turtlesim_node1" pkg="turtlesim" type="turtlesim_node"/>
  4. <node name="turtlesim_node2" pkg="turtlesim" type="turtlesim_node"/>
  5. <node name="draw_square" pkg="turtlesim" type="draw_square"/>
  6. <node name="rqt_graph" pkg="rqt_graph" type="rqt_graph"/>
  7. </launch>


直接在终端,输入:

~$ roslaunch turtlesim_drawsquare.launch
 






文章来源: zhangrelay.blog.csdn.net,作者:zhangrelay,版权归原作者所有,如需转载,请联系作者。

原文链接:zhangrelay.blog.csdn.net/article/details/53184684

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。