- 延用工作空间test2_ws;
- 功能包demo3_urdf存放代码;
- arbotix的配置的代码control.yaml放在demo3_urdf/config/arbotix/control.yaml;
- launch文件存放在demo3_urdf/launch/control_car.launch;
- 最后保存的新的配置文件存放在config/rviz/arbotix_urdf.rviz.
本节简介
本节以上一节编写的xacro文件的机器人模型为基础,使用artibox来控制机器人在rviz中的运动。
安装arbotix
arbotix支持控制实体机器人和仿真机器人,安装命令:
sudo apt-get install ros-melodic-artibox
I : 写yaml配置文件
config/arbotix/control.yaml
# 该文件是控制器配置,一个机器人模型可能有多个控制器,比如: 底盘、机械臂、夹持器(机械手)....
# 但是我们的文件只有一个底盘控制
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
}
}
II: 写launch文件
launch/control_car.launch文件:
<launch>
<!-- 将 urdf 文件内容设置进参数服务器 -->
<param name="robot_description" command="$(find xacro)/xacro $(find demo3_urdf_rviz)/urdf/xacro/car.xacro" />
<!-- 启动 rivz -->
<node pkg="rviz" type="rviz" name="rviz_test" args="-d $(find demo3_urdf_rviz)/config/rviz/urdf_rviz3_joint.rviz" />
<!-- 启动机器人状态和关节状态发布节点 -->
<node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher" />
<node pkg="joint_state_publisher" type="joint_state_publisher" name="joint_state_publisher" />
<!-- 集成arbotix控制节点,加载相关参数 -->
<node name="arbotix" pkg="arbotix_python" type="arbotix_driver" output="screen">
<rosparam command="load" file="$(find demo3_urdf_rviz)/config/arbotix/control.yaml" />
<!-- 驱动仿真模型 -->
<param name="sim" value="true" />
</node>
</launch>
III: 配置rviz
更换坐标系
更换RVIZ中的fixed frame 为odom里程计坐标系
发布速度控制话题
命令行中运行(一直按tap补齐):
$ rostopic pub -r 10 /cmd_vel geometry_msgs/Twist "linear:
x: 0.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.0"
更改一下点击enter:
rostopic pub -r 10 /cmd_vel geometry_msgs/Twist "linear:
x: 0.5
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 1"
可以看到小车圆环运动,如下:
odom组件方便观察
添加odometry选择话题/odom观察,将箭头数量keep从100改为10,可以看到如下,保留十个线速度矢量轨迹箭头.
添加坐标系并保存配置
添加一个TF,如下:
最后保存配置为arbotix_urdf.rviz,修改launch文件,即可下次继续使用.
最后
urdf以及省心的xacro,配合rviz再使用arbotix控制便告一段落,
下次看gazebo+urdf