当前位置:网站首页>【ROS进阶篇】第九讲 基于Rviz和Arbotix控制的机器人模型运动
【ROS进阶篇】第九讲 基于Rviz和Arbotix控制的机器人模型运动
2022-07-28 00:57:00 【生如昭诩】
【ROS进阶篇】第九讲 基于Rviz和Arbotix控制的机器人模型运动

文章目录
前言
在上一节博客中我们系统的学习了对于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 是 controller controllers: {
# 单控制器设置 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 基本要求:
\qquad 1. 调用了arbotix_python 功能包下的 arbotix_driver 节点
\qquad 2. 通过 file 加载配置文件获取机器人信息以便驱动运动实现
\qquad 3. 配置 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中的机器人模型仿真,敬请期待。
边栏推荐
猜你喜欢

Promise从入门到精通 (第2章 Promise的理解和使用)

重要安排-DX12引擎开发课程后续直播将在B站进行

C# 使用Abp仓储访问数据库时报错记录集

The level "trap" of test / development programmers is not a measure of one-dimensional ability

学会这招再也不怕手误让代码崩掉

uniapp 总结篇 (小程序)
![[机缘参悟-53]:阳谋立身,阴谋防身](/img/93/2f61993770d93d9adc80a9fa89e71c.jpg)
[机缘参悟-53]:阳谋立身,阴谋防身

54:第五章:开发admin管理服务:7:人脸入库流程;人脸登录流程;浏览器开启视频调试模式(以便能够在本机的不安全域名的情况下,也能去开启摄像头);

每条你收藏的资讯背后,都离不开TA

go 学习01
随机推荐
Data output - dynamic drawing
[深入研究4G/5G/6G专题-42]: URLLC-14-《3GPP URLLC相关协议、规范、技术原理深度解读》-8-低延时技术-2-基于slot的调度与Slot内灵活的上下行符号配比
学会这招再也不怕手误让代码崩掉
Clear the cause of floating and six methods (solve the problem that floating affects the parent element and the global)
软件测试面试题:你所熟悉的软件测试类型有哪些?
【Star项目】小帽飞机大战(六)
Starfish Os X MetaBell战略合作,元宇宙商业生态更进一步
Typescript中类的使用
Flume (5 demos easy to get started)
这个操作可能不值钱,但却值得学习 | 【图片批量裁剪】
Promise从入门到精通 (第1章 Promise的介绍和基本使用)
11-Django-基础篇-数据库操作
微信小程序图片根据屏幕比例缩放
【Star项目】小帽飞机大战(五)
四种常见的 POST 提交数据方式
SFTP file / folder upload server
Codeforces Round #810 (Div. 2)A~C题解
小程序毕设作品之微信校园浴室预约小程序毕业设计成品(2)小程序功能
ArcGIS:加载历史遥感影像
小程序毕设作品之微信校园浴室预约小程序毕业设计成品(3)后台功能