【ROS进阶篇】第九讲 基于Rviz和Arbotix控制的机器人模型运动
【ROS进阶篇】第九讲 基于Rviz和Arbotix控制的机器人模型运动
文章目录
- 【ROS进阶篇】第九讲 基于Rviz和Arbotix控制的机器人模型运动
- 前言
- 一、Arbotix功能包介绍
- 1. 基本简介:
- 2. 安装教程:
- 二、控制运动流程
- 1. 准备工作
- 2. 编写并启动launch文件
- 总结
前言
在上一节博客中我们系统的学习了对于URDF文件的编程优化方法,即Xacro,一种XML的优化语言,通过对于基本概念、语法详解、代码实例的讲述了解了如何提升URDF文件的复用性、安全性和高效性,本节文章主要介绍在Rviz环境下如何使用Arbotix控制机器人模型运动。
一、Arbotix功能包介绍
- 问题引入:
在先前的研究中,我们通过URDF文件实现了静态创建机器人模型,并可以通过可视化软件Rviz观察并实现基本操作,那么想要进一步的仿真操作,就一定需要完成对于机器人模型的运动控制,这里就引入一个对应的功能包来完成目标要求。
1. 基本简介:
Arbotix:Arbotix 是一款控制电机、舵机的控制板,并提供相应的 ros 功能包,这个功能包的功能不仅可以驱动真实的 Arbotix 控制板,它还提供一个差速控制器,通过接受速度控制指令更新机器人的 joint 状态,从而帮助我们实现机器人在 rviz 中的运动。
注:此差速控制器位于python程序包中,完整程序包还包括多种控制器,对应电机、机械臂和夹持器等;
2. 安装教程:
- 命令行直接调用:
sudo apt-get install ros-noetic-arbotix
- git安装源码:
git clone https://github.com/vanadiumlabs/arbotix_ros.git
\qquad在下载后调用
catkin_make
编译完成即可;
二、控制运动流程
1. 准备工作
- 创建功能包,并编写URDF文件/通过Xacro进行优化
- 添加Arbotix配置:配置文件control.yaml如下
# 该文件是控制器配置,一个机器人模型可能有多个控制器,比如: 底盘、机械臂、夹持器(机械手)....
# 因此,根 name 是 controllercontrollers: {# 单控制器设置base_controller: {#类型: 差速控制器type: diff_controller,#参考坐标base_frame_id: base_footprint, #两个轮子之间的间距base_width: 0.2,#控制频率ticks_meter: 2000, #PID控制参数,使机器人车轮快速达到预期速度Kp: 12, Kd: 12, Ki: 0, Ko: 50, #加速限制accel_limit: 1.0 }
}
2. 编写并启动launch文件
- 编写launch文件:
\qquad基本要求:
\qquad1. 调用了arbotix_python 功能包下的 arbotix_driver 节点
\qquad2. 通过 file 加载配置文件获取机器人信息以便驱动运动实现
\qquad3. 配置 sim 为 true,完成仿真环境要求
<launch><!--1.在参数服务器中载入urdf--><!--<param name="robot_description" textfile="$(find urdf01_rviz)/urdf/xacro/demo05_car_base.urdf" />--><param name="robot_description" command="$(find xacro)/xacro $(find urdf01_rviz)/urdf/xacro/car.urdf.xacro" /><!--2.启动rviz--><node pkg="rviz" name="rviz" type="rviz" args="-d $(find urdf01_rviz)/config/show_mycar.rviz"/><!--3.关节状态发布节点--><node pkg="joint_state_publisher" type="joint_state_publisher" name="joint_state_publisher"/><!--4.机器人状态发布节点--><node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher"/><!--集成 arbotix 运动控制节点,并且加载参数--><node pkg="arbotix_python" type="arbotix_driver" name="driver" output="screen"><rosparam command="load" file="$(find urdf01_rviz)/config/control.yaml" /><param name="sim" value="true" /></node>
</launch>
- 启动launch文件:使用
roslaunch
命令即可 - 配置Rviz:修改Fixed Frame以及TF、Odometry下的Topic设置为odom等
- 控制运动:此时话题
/cmd_vel
出现,故我们可以通过发布话题消息或者输入命令完成运动控制,效果如下:
rostopic pub -r 10 /cmd_vel geometry_msgs/Twist '{linear: {x: 0.2, y: 0, z: 0}, angular: {x: 0, y: 0, z: 0.5}}'
注意:想要进一步操作可以修改Rviz的设置:
- 显示小车运动方向:将Odometry下status下的topic修改为/odom;
- 更改运动方向表示的箭头:将Odometry下shape的shaft radius进行修改;
- 显示机器人坐标系:开启TF箭头;
总结
- 声明:本节博客部分参考了CSDN用户赵虚左的ROS教程,本文主要内容是使用Arbotix功能包在Rviz环境下完成对于机器人静态模型的运动控制,从基本简介、安装教程到最后的实际控制示例,从实践中深入浅出,体会如何实际控制机器人运动。下节将会介绍在Gazebo中的机器人模型仿真,敬请期待。
【ROS进阶篇】第九讲 基于Rviz和Arbotix控制的机器人模型运动相关推荐
- 开发工具篇第九讲:菜鸟入坑指南
摘要:本文是开发工具篇第九讲:菜鸟入坑指南.针对新人上手慢的问题,写了这篇入坑指南,方便自己回顾,总结.本文分为四个部分,分别为jenkins使用技巧:常用软件操作命令:开发手册:调试手册.主要材料来 ...
- Rviz中控制机器人模型运动(arbotix)
前言: 通过 URDF 结合 rviz 可以创建并显示机器人模型,不过,当前实现的只是静态模型,如何控制模型的运动呢?在此,可以调用 Arbotix 实现此功能. 简介: Arbotix:Arboti ...
- 6.5 Rviz中控制机器人模型运动
ROS入门 6.5 Rviz中控制机器人模型运动 <ROS入门-理论与实践>视频教程镇楼 通过 URDF 结合 rviz 可以创建并显示机器人模型,不过,当前实现的只是静态模型,如何控制模 ...
- 打开了ros中的rviz,显示不了机器人模型
问题:可以打开gazebo,但是打开rviz后,显示不了机器人模型. 报错情况如下图所示: 解决:看看自己的launch文件是否加了以下的节点: <node pkg="joint_st ...
- MySQL进阶篇(01):基于多个维度,分析服务器性能
本文源码:GitHub·点这里 || GitEE·点这里 一.服务器性能简介 1.性能定义 服务器性能优化是一项非常艰巨的任务,当然也是很难处理的问题,在写这篇文章的时候,特意请教下运维大佬,硬件工程 ...
- [Python公开课]零基础玩转Python进阶篇----第九节:Python的异常分析及解决
- Kotlin-简约之美-进阶篇(四):访问权限控制
文章目录 默认的访问修饰符 限制修饰符 可见性修饰符 sealed密封类 学习交流 默认的访问修饰符 在Kotlin世界中,无任何修饰的class.方法,等等默认就是public的,所以是隐式的 pu ...
- 目标检测YOLO实战应用案例100讲-基于小样本的目标检测与跟踪模型研究
目录 基于小样本目标检测方法的研究 (1)基于数据增强的方法 (2)基于度量学习的方法
- 【ROS】—— 机器人系统仿真 —Rviz中控制机器人模型运动与URDF集成Gazebo(十五)
文章目录 前言 1. Arbotix使用流程 1.1 安装 Arbotix 1.2 创建新功能包,准备机器人 urdf.xacro 文件 1.3 添加 Arbotix 配置文件 1.4 编写 laun ...
- 《上古天真论》第九讲文字版
上古天真论篇第九讲 主讲:徐文兵 主持:梁 冬 播出时间:2009-02-07 23:00-24:00 经文:四八筋骨隆盛,肌肉满壮.五八,肾气衰,发堕齿槁.六八阳气衰竭于上,面焦,发鬃颁白.七 ...
最新文章
- 一年后斩获腾讯T3,层层深入
- android的消息处理机制(图+源码分析)——Looper,Handler,Message
- 改工作空间_打拼六年换的新房,装修花了17万,飘窗改柜子很实用,谁见过?...
- mybatis应用(三)优化
- 每天一道LeetCode-----给定字符串s和字符数组words,在s中找到words出现的位置,words内部字符串顺序无要求
- eoiioe linux下解压命令大全
- GPS NMEA 0183 4.10协议/GPS Linux串口驱动
- 微软成Eclipse基金会战略伙伴
- 数据库:PostgreSQL:客户端安装
- java 文本编码_Java文件编码
- CKEditor配置及使用
- 【数据库系统】考虑题4所示的日志记录,假设开始时A、B、C的值都是0 (1) 如果系统故障发生在14之后,写出系统恢复后A、B、C的值
- odoo14调用akshare库报错:Fatal process out of memory: Failed to reserve memory for new V8 Isolate
- ubuntu 19.04 与win10双系统 搜狗输入法安装教程
- vue-chartjs
- android获取当前系统语言
- PX4源码分析2:飞控系统控制流程简述
- Synchro Arts团队获美国电影艺术与科学学院Academy奖
- 专题页面该怎么优化才对?
- 电路PCB制板原理图基本流程
热门文章
- docker安装文档(多种方式)
- 六一小学生计算机创新活动总结,2020小学生六一儿童节活动总结
- PTA---约分最简分式 (10 分)
- 返利平台php,MallWWI新模式返利商城系统 php版 v1.2.7
- 制作u盘winpe启动盘_u盘ghost,教你如何制作运行u盘ghost启动盘
- 个人网站怎么建设,个人网站建设流程
- 阿里云上创建 对象存储oss
- 非图形方式静默安装与配置 Oracle 11g RAC(7)——安装 grid 软件前的准备工作
- 微信文件夹的dat文件怎么打开_微信文件夹里的照片文件是DAT格式怎么才能打开?...
- Assembler - Debug