接下来,通过一个案例演示 arbotix 的使用。
需求描述:
控制机器人模型在 rviz 中做圆周运动
结果演示:
实现流程:
方式1:命令行调用
登录后复制
sudo apt-get install ros-<<VersionName()>>-arbotix1.
将 <<VsersionName()>> 替换成当前 ROS 版本名称,如果提示功能包无法定位,请采用方式2。
方式2:源码安装
先从 github 下载源码,然后调用 catkin_make 编译
登录后复制
git clone https://github.com/vanadiumlabs/arbotix_ros.git1.
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
}
}1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.
launch 示例代码
demo07_control.launch
登录后复制
<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>1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.
代码解释:
<node> 调用了 arbotix_python 功能包下的 arbotix_driver 节点
<rosparam> arbotix 驱动机器人运行时,需要获取机器人信息,可以通过 file 加载配置文件
<param> 在仿真环境下,需要配置 sim 为 true
输入命令,运行rviz
登录后复制
cys@ubuntu:~/demo05_ws$ source ./devel/setup.bash
cys@ubuntu:~/demo05_ws$ roslaunch urdf01_rviz demo07_control.launch1.2.
更改 fixed frame
打开命令行,让小车运动
此时调用 rostopic list 会发现一个熟悉的话题: /cmd_vel
也就说我们可以发布 cmd_vel 话题消息控制小陈运动了,该实现策略有多种,可以另行编写节点,或者更简单些可以直接通过如下命令发布消息:
登录后复制
cys@ubuntu:~$ rostopic list
/clicked_point
/cmd_vel
/diagnostics
/initialpose
/joint_states
/move_base_simple/goal
/odom
/rosout
/rosout_agg
/tf
/tf_static
cys@ubuntu:~$ rostopic pub -r 10 /cmd_vel geometry_msgs/Twist "linear:
x: 1.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 1.0" 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.
小车开始运动啦!
显示小车运动的方向
更改运动方向表示的箭头
显示机器人的坐标系
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删