一、前言
无非是解决这几个问题问题:
1、teleop.py的键盘控制文档的书写
2、机器人模型文件xacro和控制xacro的launch文件的书写
二、问题解决思路
1、首先是teleop.py键盘控制代码的书写。你有没有这样的问题?为什么teleop.py可以控制机器人的运动,teleop.py是怎样和机器人模型联系到一起的呢?最主要的是teleop.py文件发送了一个名字叫做“/cmd_vel”的话题,这样arbotix就可以接受到这个话题,然后用teleop.py控制的twist中的参数,来控制机器人运动。,,只需要理解为arbotix接收的是/cmd_vel”的话题,然后你就发送/cmd_vel”的话题就行了。
【重点:怎样复用teleop.py中的代码?只需要修改teleop.py中话题参数为“/cmd_vel”就行】对于teleop.py文件的来源,我直接使用的是古大神的代码或者是下面一个小哥写的代码,链接在最下面。
另外,为什么用python写键盘控制代码呢?因为不用编译,不用写恶心的cmakelist,所以我选择,直接能【rosrun+包+py】命令的python文件。
在这里提一下twist消息,他是一个头文件twist.h,然后里面有几个变量,咱们就是修改这几个变量,其中twist中的消息代表着线速度和角速度。linear.x(x方向上的速度)指向机器人前方,linear.y指向左方,linear.z垂直向上满足右手系,平面移动机器人常常linear.y和linear.z均为0。angular.z(代表着围绕着z轴的角速度)代表平面机器人的角速度,因为此时z轴为旋转轴
2、机器人模型文件xacro和控制xacro的launch文件的书写
重点是:launch文件的书写。
<!--
文件所实现的功能:打开rosmaster、打开机器人模型、开启arbotix控制(目的:可与键盘控制相结合)
复用所需的改动: 1、改动机器人模型地址
2、改动arbotix的配置文件(YAML文件)
3、修改rviz的args参数(也就是配置以下xxx.rivz的地址)
-->
<launch>
<!-- 这行代码就是输入你的机器人模型 -->
<arg name="model" default="$(find xacro)/xacro --inorder '$(find mbot_description)/urdf/xacro/mbot_with_camera.xacro'" />
<!-- 当default=“false”的时候,不显示gui关节的控制窗口 -->
<arg name="gui" default="false" />
<param name="robot_description" command="$(arg model)" />
<!-- 设置GUI参数,显示关节控制插件 -->
<param name="use_gui" value="$(arg gui)"/>
<!-- 下面的node为arbotix的控制界面,arbotix_driver为arbotix_python包的东西,你要想用arbotix仿真,你就需要用这个arbotix这个包,可以下载或者复制 -->
<node name="arbotix" pkg="arbotix_python" type="arbotix_driver" output="screen">
<!-- 添加arbotix所需的配置文件,该文件是控制器配置 -->
<rosparam file="$(find mbot_description)/config/fake_mbot_arbotix.yaml" command="load" />
<!-- 在仿真环境下,需要配置sim为true -->
<param name="sim" value="true"/>
</node>
<!-- 运行joint_state_publisher节点,发布机器人的关节状态 -->
<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" />
<!-- 运行robot_state_publisher节点,发布tf -->
<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />
<!-- 运行rviz可视化界面 -->
<node name="rviz" pkg="rviz" type="rviz" args="-d $(find mbot_description)/config/mbot_arbotix.rviz" required="true" />
</launch>
三、参考连接
ROS小白学习历程-使用arbotix控制器详解 - 灰信网(软件开发博客聚合)https://www.freesion.com/article/5427559408/ ROS入门教程-理论与实践(6.5.1 Arbotix使用流程) - 知乎