无论怎样,有时候我们还是需要手动控制机器人,在 turtlebot_teleop package 里面已经实现了这些功能。
第一步,启动控制器:
sudo apt-get install ros-indigo-joystick-drivers \
ros-indigo-turtlebot-teleop
第二步,启动仿真:
roslaunch rbx1_bringup fake_turtlebot.launch
第三步,启动rviz:
rosrun rviz rviz -d `rospack find rbx1_nav`/sim.rviz
1 遥控机器人
1.1使用键盘
使用以下命令启动键盘操作。
roslaunch rbx1_nav keyboard_teleop.launch
然后你会看到这样的信息:
然后按对应的按键,就可以实现对机器人的运动控制。
我们来看这个启动文件,位于 rbx1_nav/launch :
<launch>
<node pkg="turtlebot_teleop" type="turtlebot_teleop_key" name="turtlebot_teleop_keyboard" output="screen">
<param name="scale_linear" value="0.1" type="double"/>
<param name="scale_angular" value="0.4" type="double"/>
<remap from="turtlebot_teleop_keyboard/cmd_vel" to="cmd_vel" />
</node>
</launch>
这里对速度和转向两个参数设定了默认值,对实际机器人进行控制时,要把这个参数设置小一点。
1.2 使用游戏控制板
如果我们有一个游戏手柄,可以使用游戏手柄控制。启动文件为 turtlebot_teleop package内的joystick_teleop.launch 文件。在rbx1_nav/launch 有一份拷过来的备份,可以直接修改使用。
运行命令:
$ roslaunch rbx1_nav joystick_teleop.launch
如果有以下错误:
[ERROR] [1332893303.227744871]: Couldn't open joystick /dev/input/js0. Will retry every second.
说明设备未连接,没有错误就可以按下deadman使用了。
我们还可以编辑deadman按键,在 joystick_teleop.launch 中编辑。
<launch>
<!--- Teleop Joystick -->
<node pkg="turtlebot_teleop" type="turtlebot_teleop_joy" name="turtlebot_teleop_joystick" output="screen">
<param name="scale_angular" value="1.5"/>
<param name="scale_linear" value="0.3"/>
<param name="axis_deadman" value="7"/>
<remap from="turtlebot_teleop_joystick/cmd_vel" to="cmd_vel" />
</node>
<node pkg="joy" type="joy_node" name="joystick" output="screen" />
</launch>
想要知道数字和按键的对应关系,可以使用以下程序:
$ sudo apt-get install joystick
$ jstest /dev/input/js0
然后按下那些按键,看哪个会把''off''变成"on"。
1.3 使用仿真GUI控制板
运行命令:
arbotix_gui
就会看到下面这个小的控制板:
使用有些类型的机器人,还可以在扩展板调节机械臂。
1.4 使用可交互marker控制
Turtlebot meta-package 包含了可以使用rviz来控制机器人的工具,可以直接拖动控制机器人。
安装这个package:
$ sudo apt-get install ros-indigo-turtlebot-interactive-markers
在机器人上尝试使用,运行:
$ roslaunch rbx1_bringup fake_turtlebot.launch
打开rviz:
$ rosrun rviz rviz -d
rospack find rbx1_nav/interactive_markers.rviz
最后,启动可交互marker:
$ roslaunch rbx1_nav interactive_markers.launch
这个启动文件是从turtlebot_interactive_markers拷贝过来的。