Skip to content

Latest commit

 

History

History
162 lines (119 loc) · 4.5 KB

2_models.md

File metadata and controls

162 lines (119 loc) · 4.5 KB

URDF, joint control and gazebo

tf, sensors and rviz

目标:

1.使用urdf在gazebo中构建双轮差动机器人,使其正确显示并通过ros node可以控制轮子速度

2.在gazebo中载入地图,在urdf中添加sensor,可以读取laser以及imu数据

// 3.添加tf,使rviz可以显示完整的sensor、map以及机器人数据

apt-get install ros-melodic-joint-state-publisher-gui ros-melodic-joint-state-controller ros-melodic-controller-manager ros-melodic-gazebo-ros-pkgs ros-melodic-gazebo-ros-control ros-melodic-velocity-controllers ros-melodic-map-server
apt-get install xterm
pip install pynput

本节推荐package以及细节文件结构请参考task/c2

src
├── course_agv_control
│   ├── CMakeLists.txt
│   ├── config
│   │   └── course_agv_control.yaml
│   ├── launch
│   │   └── course_agv_control.launch
│   ├── scripts
│   │   ├── keyboard_command.py  # 键盘控制
│   │   └── kinematics.py        # 运动学分解 TODO
│   └── package.xml
├── course_agv_description
│   ├── CMakeLists.txt
│   ├── launch
│   │   ├── course_agv.rviz
│   │   └── course_agv_rviz.launch
│   ├── package.xml
│   └── urdf
│       ├── course_agv.gazebo
│       ├── course_agv.xacro
│       └── materials.xacro
└── course_agv_gazebo
    ├── CMakeLists.txt
    ├── config
    │   ├── map -> ../models/ground_plane_for_agv/map
    │   └── map.yaml
    ├── launch
    │   ├── course_agv_world.launch
    │   ├── course_agv.rviz
    │   └── course_agv_world_rviz.launch
    ├── models
    │   └── ground_plane_for_agv
    │       ├── map
    │       └── ...
    ├── package.xml
    ├── scripts
    │   └── robot_tf.py # tf file publish tf:(robot_base->map)
    └── worlds
        └── course_agv.world

在rviz上检查你的机器人模型

  • Universal Robotic Description Format (urdf)
    • link : collision & visual
    • joint : type & limits
  • urdf & xacro
    • gazebo tag in xacro
    • transmission tag in xacro
  • node robot_state_publisher : tf
  • node joint_state_publisher

运行以下命令查看效果 roslaunch course_agv_description course_agv_rviz.launch

c2_1_rviz

在gazebo中运行,并添加controller

  • gazebo args
  • node : gazebo_ros spawn_model

运行以下命令查看效果 roslaunch course_agv_gazebo course_agv_world.launch

c2_2_gazebo

编写运动学分解程序并下发速度

  • local_velocity to wheel velocity

添加地图和传感器

  • 在urdf里添加相关link以及joint
  • 在.gazebo文件中添加对应插件

运行以下命令 roslaunch course_agv_gazebo course_agv_world.launch

TF

static_transform_publisher x y z qx qy qz qw frame_id child_frame_id  period_in_ms

rviz

  • 在rviz中添加需要显示的信息(laser,imu,map)

1583999558721

  • 在launch文件中添加tf_publisher,tf tree参考:
map
└── robot_base
    ├── course_agv__hokuyo__link
    ├── course_agv__imu
    ├── course_agv__left_wheel
    ├── course_agv__right_wheel
    └── robot_chassis
  • 此时唯一没有解决的是map->robot_base
    • 通过topic:/gazebo/link_states or /gazebo/model_states可以获取agv的全局位置以及姿态
    • 订阅并转换为我们需要的tf广播出去(robot_tf.py)

1583999880122

可以使用键盘控制查看tf以及其他信息显示是否正确


gazebo : gazebo + gzclient + gzserver


urdf工具:

  • xmllint
  • check_urdf

参考:

1.Using roslaunch to start Gazebo, world files and URDF models

2.Using a URDF in Gazebo

3.ROS Control in Gazebo

4.Building a Visual Robot Model with URDF from Scratch

5.rrbot gazebo demo

6.ROS TF

7.rospy tf broadcast