(!) Please ask about problems and questions regarding this tutorial on answers.ros.org. Don't forget to include in your question the link to this page, the versions of your OS & ROS, and also add appropriate tags.

Interfacing with Husky

Description: How to visualize, control, and communicate with a real or simulated Husky robot from your desktop.

Keywords: Clearpath Husky

Tutorial Level: BEGINNER

Both simulated and real Husky robots expose the same ROS interface, and can be interacted with in the same way. Please make sure that the desktop packages for Husky are installed:

$ sudo apt-get install ros-indigo-husky-desktop

Visualization

You may start a preconfigured rviz instance using the following command:

$ roslaunch husky_viz view_robot.launch

Control

There are three quick ways to send your Husky control commands:

  1. Using the provided Logitech gamepad. The left analog stick controls the velocity and turn rate, while the 'A' and 'X' button activate the regular and extra speed modes, respectively.
  2. Using the rviz instance above. If you select the Interact option in the top toolbar, an interactive marker will appear around the Husky and can be used to control speed.

  3. The rqt_robot_steering plugin. Run the rqt command, and select Plugins->Robot Tools->Robot Steering from the top menu.

Husky uses twist_mux to mix four separate geometry_msgs/Twist control channels into the husky_velocity_controller/cmd_vel topic.

These channels are (in order of decreasing priotity):

Topic

Description

Priority

joy_teleop/cmd_vel

Joystick teleop input

10

twist_marker_server/cmd_vel

Interactive marker teleop input

8

move_base/cmd_vel

Autonomous movement input, for the husky_navigation samples

2

cmd_vel

Miscellaneous external input

1

Additional velocity channels can be defined in twist_mux.yaml, or can be piped into the lowest-priority cmd_vel topic.

Odometry

Husky publishes odometry information on the odometry/filtered topic, as nav_msgs/Odometry messages. These are generated by ekf_localization_node, which processes data from several sensor sources using an Extended Kalman filter (EKF). This includes data from the wheel encoders and IMU (if available).

Topic

Source

Description

husky_velocity_controller/odom

husky_node

Raw odometry as read from Husky encoders

imu/data

imu_filter_madgwick

Orientation estimate from the IMU

odometry/filtered

ekf_localization_node

Fused odometry estimate (encoders and IMU)

Additional odometry information sources can be added to the EKF in localization.yaml.

Diagnostics

(Non-simulated only)

Husky provides hardware and software system diagnostics on the ROS standard /diagnostics topic. The best way to view these messages is using the rqt_runtime_monitor plugin. Run the rqt command, and select Plugins->Robot Tools->Runtime Monitor from the top menu.

The same information is also published as a husky_msgs/HuskyStatus message on the status topic.

Wiki: husky_control/Tutorials/Interfacing with Husky (last edited 2015-06-04 11:09:02 by GvdHoorn)