6.7.1 机器人系统仿真/URDF、Gazebo与Rviz综合运用/机器人运动控制以及里程计信息显示
6.7.1 机器人运动控制以及里程计信息显示
本节介绍的重点是,将三者结合通过gazebo模拟机器人的传感器,然后在rviz中显示这些传感器感知到的数据,主要包括:
- 运动控制以及里程计信息显示
- 雷达信息仿真以及显示
- 摄像头信息仿真以及显示
- kinect信息仿真以及显示(带有深度信息的摄象头)
参考信息:http://gazebosim.org/tutoriais?tut=ros_gzplugins
机器人运动控制以及里程计信息显示
使用到ros中组件:ros_control
为保证ros程序的可移植性(仿真平台,实物平台),ros内置的解决方案是ros_control;ros_control是一组软件包,它包含了控制器接口,控制器管理器,传输和硬件接口。ros_control是一套机器人控制的中间件,是一套规范,不同的机器人平台使用该套规范,就能保证tos程序兼容。通过这套规范,实现了一种可插拔的架构设计,大大提高了程序设计的效率和灵活性;
运动控制实现流程
1.已经创建完毕的机器人模型,编写一个单独xacro文件,为机器人模型添加传动装置以及控制器
创建urdf_gazebo/xacro/gazebo/action.xacro
2.将此文件集成进xacro文件
将action.xacro
文件包含进 my_car.urdf.xacro
中
编写action.xacro
文件—参考的是gazebo/tutorial 中的different drive
文件
<!--differential drive 适合两轮底盘-->
<!--skid steering drive 适合四轮底盘-->
<robot name="my_car_move" xmlns:xacro="http://wiki.ros.org/xacro"><!--传动实现:用于连接控制器与关节--><xacro:macro name="joint_trans" params="joint_name" ><!--transmission is important to link the joints and the controller--><transmission name="${joint_name}_trans"><type>transmission_interface/SimpleTransmission</type><joint name="${joint_name}"><hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface></joint><actuator name="${joint_name}_motor"><hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface><mechanicalReduction>1</mechanicalReduction></actuator></transmission></xacro:macro><!--left, right_wheel都需要配置传动装置--><xacro:joint_trans joint_name="left_wheel_to_base" /><xacro:joint_trans joint_name="right_wheel_to_base" /><!--控制器--><gazebo><plugin name="differential_drive_controller" filename="libgazebo_ros_diff_drive.so"><rosDebugLevel>Debug</rosDebugLevel><publishWheelTF>true</publishWheelTF><robotNamespace>/</robotNamespace><!-- <publishTf>1</publishFf> --><publishWheelJointState>true</publishWheelJointState><alwaysOn>true</alwaysOn><updateRate>10.0</updateRate> <!-- Plugin update rate in Hz --> <legacyMode>true</legacyMode> <!-- Set to true to swap right and left wheels, defaults to true --><leftJoint>left_wheel_to_base</leftJoint> <!-- Name of left joint, defaults to `left_joint` --> <rightJoint>right_wheel_to_base</rightJoint> <!-- Name of right joint, defaults to `right_joint` --><wheelSeparation>${base_radius*2}</wheelSeparation><wheelDiameter>${wheel_radius*2}</wheelDiameter><broadcastTF>1</broadcastTF><wheelTorque>30</wheelTorque> <!-- Maximum torque which the wheels can produce, in Nm, defaults to 5 Nm --> <wheelAcceleration>1.0</wheelAcceleration> <!-- Wheel acceleration, in rad/s^2, defaults to 0.0 rad/s^2 --> <commandTopic>cmd_vel</commandTopic> <!-- Topic to receive geometry_msgs/Twist message commands, defaults to `cmd_vel` 运动控制话题--> <odometryTopic>odom</odometryTopic> <!-- Topic to publish nav_msgs/Odometry messages, defaults to `odom` 里程计话题--><odometryFrame>odom</odometryFrame> <!-- Odometry frame, defaults to `odom` --><robotBaseFrame>base_footprint</robotBaseFrame> <!-- Robot frame to calculate odometry from, defaults to `base_footprint` --> <odometrySource>1</odometrySource> <!--Odometry source, 0 for ENCODER, 1 for WORLD, defaults to WORLD--> <publishOdom>true</publishOdom> <!--Set to true to publish transforms for the odometry, defaults to true--></plugin></gazebo></robot>
3.启动gazebo并发布/cmd_vel 消息控制机器人运动
rosrun teleop_twist_keyboard teleop_twist_keyboard.py
启动雷达小车的控制节点,然后就可根据键盘控制小车运动(这个功能包 可能需要另外使用sudo apt-get install ros-noetic-teleop-twist-keyboard
安装)
查看里程计信息只能在rviz中实现
新建launch文件:launch/demo03_odom.launch
<launch><node pkg="rviz" type="rviz" name="rviz" args="-d $(find urdf_rviz)/config/show_urdf1.rviz" /><node pkg="joint_state_publisher" type="joint_state_publisher" name="joint_state" /><node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state" />
</launch>
1.在启动完demo02文件后,再启动demo03文件,并在rviz的UI中设置fixed frame为odom,并且添加add/odometry,在odometry标签下设置topic为/odom
2.启动 rosrun teleop_twist_keyboard teleop_twist_keyboard.py
小车运动控制节点,然后就可以在rviz中看到小车速度箭头变化的动画
6.7.1 机器人系统仿真/URDF、Gazebo与Rviz综合运用/机器人运动控制以及里程计信息显示相关推荐
- 遨博协作机器人ROS开发 - Gazebo仿真与控制真实机器人
目录 一.简介 二.环境版本 三.Gazebo仿真 1.gazebo使用 2. 仿真遨博机械臂 四.ROS控制真实机器人 1. 网络配置 2. 真实机器人控制 3. 真实机器人运动速度调节 五.小结 ...
- ROS入门(八)——仿真机器人四(Gazebo+Rviz+雷达、摄像头、kinet仿真显示)
所用的学习链接: [奥特学园]ROS机器人入门课程<ROS理论与实践>零基础教程P278-288 [以上视频笔记见http://www.autolabor.com.cn/book/ROST ...
- [ros robot] --- 机器人系统仿真
1 机器人系统仿真概念 机器人系统仿真:是通过计算机对实体机器人系统进行模拟的技术,在 ROS 中,仿真实现涉及的内容主要有三:对机器人建模(URDF).创建仿真环境(Gazebo)以及感知环境(Rv ...
- ros -- 机器人系统仿真:
机器人系统仿真: 是通过计算机对实体机器人系统进行模拟的技术,在 ROS 中,仿真实现涉及的内容主要有三:对机器人建模(URDF).创建仿真环境(Gazebo)以及感知环境(Rviz)等系统性实现. ...
- 多机器人系统仿真平台(摘要与目录)
来源:http://www.robotdiy.com/article.php?sid=125 如何实现多个机器人之间的协调与协作已经成为当前机器人学研究的新课题之一.这篇论文针对多机器人系统的运动规划 ...
- SLAM机器人开发(三)SLAM中常见的里程计
SLAM机器人开发(三)SLAM中常见的里程计 里程计分类 车轮里程计 惯性里程计 电磁波(光学)雷达 超声波雷达 视觉里程计 里程计对比图 里程计分类 里程计(Odometry)这个词是由希腊单词o ...
- Gazebo结合ROS仿真时,如何编写机器人的URDF
译者的话:在用Gazebo做仿真应用时,您想用ROS控制机器人,又想让机器人既能在Gazebo中运行,又能在Rviz中运行,您需要用URDF描述机器人,而不是SDF.原因是Rviz的标配是URDF, ...
- ROS机器人程序设计(原书第2版)补充资料 (柒) 第七章 3D建模与仿真 urdf Gazebo V-Rep Webots Morse
ROS机器人程序设计(原书第2版)补充资料 (柒) 第七章 3D建模与仿真 urdf Gazebo V-Rep Webots Morse 书中,大部分出现hydro的地方,直接替换为indigo或ja ...
- ROS机器人程序设计(原书第2版)补充资料 (柒) 第七章 3D建模与仿真 urdf Gazebo V-Rep Webots Morse...
ROS机器人程序设计(原书第2版)补充资料 (柒) 第七章 3D建模与仿真 urdf Gazebo V-Rep Webots Morse 书中,大部分出现hydro的地方.直接替换为indigo或ja ...
最新文章
- uni-app 修改富文本信息中的图片样式
- k8s 使用helm部署dashboard
- word中安装MathType
- 出远门需要检查的物件
- 最小函数值(信息学奥赛一本通-T1370)
- 3DS MAX的灯光
- 二维字符数组转字符串c语言,[求助] 怎样转换一个字符二维数组到一维数组~~~...
- javascript之querySelector和querySelectorAll
- Linux音频驱动-PCM设备
- 日常生活记账的账本你知道吗
- 2022年全球市场木材干燥窑总体规模、主要生产商、主要地区、产品和应用细分研究报告
- 2020校园招聘公司列表!计算机/互联网 技术类岗位!,一直更新!
- 保证金监控中心保证期货开户和交易记录
- CMake基础教程(32)文件搜索指令FILE
- 互联网思维之用户思维
- 针对芯片测试行业,常见stil,vcd,wgl,文件的转化,到93K,chroma,小总结
- 为什么我支持黄奇帆的建议,赞成取消住房公积金制度
- 摄像头poe供电原理_无线监控中poe供电原理图解
- Oracle性能优化概述
- AP 产品成本计算与传统成本计算