zoukankan      html  css  js  c++  java
  • ROS机器人程序设计(原书第2版)补充资料 (贰) 第二章 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中,节点示例有一些变化,如下:

    ~$ 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

    效果如下:






  • 相关阅读:
    Leetcode 121. Best Time to Buy and Sell Stock
    Leetcode 120. Triangle
    Leetcode 26. Remove Duplicates from Sorted Array
    Leetcode 767. Reorganize String
    Leetcode 6. ZigZag Conversion
    KMP HDU 1686 Oulipo
    多重背包 HDU 2844 Coins
    Line belt 三分嵌套
    三分板子 zoj 3203
    二分板子 poj 3122 pie
  • 原文地址:https://www.cnblogs.com/liang123/p/6324834.html
Copyright © 2011-2022 走看看