• 1 rbx1 Kinetic 安装和测试


    博客参考:https://blog.csdn.net/lingchen2348/article/details/79506166

    1. 安装rbx1

    cd ~/catkin_ws/src
    git clone https://github.com/pirobot/rbx1.git 
    cd ..
    catkin_make
    source ~/catkin_ws/devel/setup.bash
    rospack profile
    

    turtlebot机器人的仿真需要用到rbx1这个功能包,这个包中包含了需要设置的所用文件。其中,路径规划需要配置的相关文件在rbx1/rbx1_nav/config/turtlebot目录中,包含4个文件

    base_local_planner_params.yaml
    costmap_common_params.yaml
    global_costmap_params.yaml
    local_costmap_params.yaml
    

    这四个文件里有很多设置参数,直接影响路径规划的结果,后期有必要熟悉一下里面的参数,这里先采用默认设置,上述4个文件一个都没改.

    2. 启动roscore和turtlebot

    //terminal 1
    roscore
    
    //terminal 2
    roslaunch rbx1_bringup  fake_turtlebot.launch

    如果报如下错误

    cannot launch node of type [arbotix_python/arbotix_driver]: arbotix_python
    

    下载arbotix软件包集,放在同一package的src文件夹内,一起catkin_make即可

    git clone https://github.com/vanadiumlabs/arbotix_ros.git
    

    或者

    roscd arbotix_python
    

    检查是否安装此包

    sudo apt-get install ros-kinetic-arbotix
    

    如果没有安装,可以直接如上安装

    3. 以空白地图启动move_base节点

    move_base节点需要一张周围环境的地图,这里只需要一张空地图即可。rbx1/rbx1_nav/maps这个目录中就有所需要的空地图。运行一个launch文件,就能帮你做到这些事。该文件为rbx1/rbx1_nav/launch目录下的fake_move_base_blank_map.launch文件。

    roslaunch rbx1_nav fake_move_base_blank_map.launch
    

    4. 发布一条前进指令

    rostopic pub /move_base_simple/goal  geometry_msgs/PoseStamped  '{header: {frame_id: "map"},pose: {position:{x: 1.0,y: 0,z: 0},orientation: {x: 0,y: 0,z: 0,w: 1}}}'

    指令解析
    1) 这条指令是发布在/move_base_simple/goal话题上的,消息类型为geometry_msgs/PoseStamped
    2) geometry_msgs/PoseStamped消息包含header、pose、orientation三部分
    3) pose的含义:位置,以米为单位,此处pose: {position:{x: 1.0,y: 0,z: 0}就是指目标位置在(1,0,0)处
    4) orientation:方向,使用四元数表示,表示机器人到达目的地后的姿态,此处orientation: {x: 0,y: 0,z: 0,w: 1}表示机器人到达(1,0,0)点后,姿态(朝向)保持不变
    5) 上述命令中有一个“”,这个””在linux命令行中意味着换一行再写,手动输入命令时,回车换行会出现续行提示符”>”
    6) 写参数时,比如x: 0,注意冒号和0之间有一个空格。

    5. 使用rviz观察 

    rosrun rviz rviz -d `rospack find rbx1_nav`/nav.rviz
    

    6. 再发一个返回起点的指令

    rostopic pub /move_base_simple/goal  geometry_msgs/PoseStamped  '{header: {frame_id: "map"},pose: {position:{x: 0.0,y: 0,z: 0},orientation: {x: 0,y: 0,z: 0,w: 1}}}'

    7. 运行rqt_reconfigure,可以用可视化的方法调节各个参数

    rosrun rqt_reconfigure rqt_reconfigure
    

    之前配置文件里面的参数都可以通过界面进行操作

    四元数的表示意义

    例如: orientation: {x: 0,y: 0,z: 0,w: 1}

    四元数可以向欧拉角一样表示旋转变换,这里表示的是机器人到达目的地后和出发时相比姿态的变化。四元数的本质是用一个向量和绕该向量的旋转来表示位姿变换,这个向量暂且记为v=(vx,vy,vz),这个旋转角度记为θ,下面看一下四元数的计算式:

    将四元数转为为指定旋转顺序的欧拉角,就可以看出相对位置变化。Matlab命令行窗口进行演示

    >> quat = [1 0 0 0];    #默认的四元数顺序为 w,x,y,z,与ros下顺序有点区别
    >> eulZYX = quat2eul(quat) #四元数转欧拉角函数,需要注意欧拉角转动顺序
    
    eulZYX =
    
         0     0     0    #yaw, pitch, roll
    

    输出结果也是绕各个轴的旋转角度都为0,即不旋转。

    相应的,到点之后旋转180度,可以表示为

    >> eul = [pi, 0, 0];
    >> qZYX = eul2quat(eul)
    
    qZYX =
        0.0000     0     0    1.0000
    

    注意这里的四元数是(w,x,y,z)的顺序,我们输入到ROS下时,应该调整为(x,y,z,w)顺序,即写为(0,0,1,0).下图为机器人从原点到

    pose: {position:{x: 1.0,y: 0,z: 0},orientation: {x: 0,y: 0,z: 1,w: 0}

    的显示效果

  • 相关阅读:
    python note 19 异常处理
    python note 18 序列化模块
    python note 17 random、time、sys、os模块
    python note 16 re模块的使用
    python note 15 正则表达式
    python note 13 内置函数
    python note 12 生成器、推导式
    C++ int型负数除法取余问题
    Leetcode162. 寻找峰值
    Leetcode450. 删除二叉搜索树中的节点
  • 原文地址:https://www.cnblogs.com/flyinggod/p/11489250.html
Copyright © 2020-2023  润新知