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

    效果如下:






  • 相关阅读:
    如何制作a2sd+
    WinForm/Silverlight多线程编程中如何更新UI控件的值
    c#如何操作cookie
    Windows Mobile CookieContainer
    Microsoft.Practices.EnterpriseLibrary.Data 数据库操作
    获取手机卡imei和imsi信息
    winform 分页控件
    asp.net 导出数据到Excle
    asp.net异步调用
    shell脚本中常用命令
  • 原文地址:https://www.cnblogs.com/liang123/p/6324834.html
Copyright © 2011-2022 走看看