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:
- 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.
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.
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.