车模都搭好了,现在需要让小车动起来
此时需要一些工具
ArbotiX其实是一款控制电机、舵机的控制板
提供相对应的ros功能包
该功能包不仅可以驱动真实的ArbotiX控制板,还提供了一个差速控制器
通过接收速度控制指令来更新机器人的joint状态,从而实现在rivz中的运动
$ sudo apt-get install ros-melodic-arbotix-*
或者可以通过下载github上的代码到工作空间
git clone https://github.com/vanadiumlabs/arbotix_ros.git
下载后使用catkin_make
命令进行编译
对机器人的节点配置比较简单,创建一个启动ArbotiX节点的launch文件就行了
以搭载激光雷达的机器人模型hhbot_laser
为例
相比显示文件,添加了使用实际时间和启动arbotix节点
创建带有启动ArbotiX节点的arbotix_hhbot_laser.launch
文件
<launch>
<arg name="gui" default="false" />
<arg name="model" default="$(find xacro)/xacro --inorder '$(find hhbot_description)/urdf/hhbot_laser.xacro'" />
<param name="/use_sim_time" value="false" />
<param name="robot_description" command="$(arg model)" />
<param name="use_gui" value="$(arg gui)"/>
<node name="arbotix" pkg="arbotix_python" type="arbotix_driver" output="screen">
<rosparam file="$(find hhbot_description)/config/fake_hhbot_arbotix.yaml" command="load" />
<param name="sim" value="true"/>
node>
<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" />
<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />
<node name="rviz" pkg="rviz" type="rviz" args="-d $(find hhbot_description)/rviz/display_hhbot.rviz" required="true" />
launch>
在启动节点时使用到一个配置文件fake_hhbot_arbotix.yaml
其实就是所需的控制器配置文件
控制器命名为base_controller
类型是diff_controller差速控制器,因为hhbot是双轮差速运动的
配置参考坐标为:base_footprint 足迹坐标,位于机身正下方,与地面接触
底盘尺寸和pid控制参数
port: /dev/ttyUSB0
baud: 115200
rate: 20
sync_write: True
sync_read: True
read_rate: 20
write_rate: 20
controllers: {
base_controller: {type: diff_controller, base_frame_id: base_footprint, base_width: 0.14,
ticks_meter: 4100, Kp: 12, Kd: 12, Ki: 0, Ko: 50, accel_limit: 1.0 }
}
启动arbotix_hhbot_laser.launch
文件
$ roslaunch hhbot_description arbotix_hhbot_laser.launch
$ rostopic list
可以看到有cmd_vel话题的存在,和小乌龟的例子一样,这个话题就是看着hhbot运动的关键
那么先使用键盘控制程序,控制hhbot运动
$ rosrun hhbot_teleop hhbot_teleop.py
hhbot_teleop.py文件其实是创建一个hhbot_teleop节点
读取键盘按键的输入,发布不同的twist消息到cmd_vel话题上
然后arbotix节点订阅该话题,致使机器运动
查看计算图,方便对其的理解
之前的固定坐标系Fixed Frame设置为base_footprint 或者 base_link
现在应该为odom里程计坐标系,不然固定机身,看不出运动情况
根据终端提示的信息敲击键盘,可以发现机器动起来了
参考:
ROS官方wiki
古月居
相关推荐:
ROS笔记(15) Xacro
ROS笔记(14) URDF
ROS笔记(13) 记录与回放数据
ROS笔记(12) Rviz
ROS笔记(11) Qt工具箱
谢谢!