An interface between user input via Joypad/Keyboard/Tablet and OpenSHC.
Current version: v0.5.0
If you haven't looked at the tutorials for using OpenSHC, see OpenSHC Tutorials.
- Ubuntu 18.04 LTS
- ROS Melodic
- syropod_highlevel_controller
- ROS Joystick
sudo apt-get install ros-melodic-joy
mkdir -p openshc_ws/src
cd openshc_ws/src
git clone https://github.com/csiro-robotics/syropod_remote.git
cd ..
catkin build
Default control scheme for Logitech F710 wireless gamepad.
- Logitech:
- System State Transition
- Start:
- Robot State Increment
- Back:
- Robot State Decrement
- A (Green):
- Gait Cycle Selection
- B (Red):
- Manual Posing Mode Selection
- X (Blue):
- Cruise Control Mode Toggle
- Y (Yellow):
- Auto-Navigation Mode Toggle
- Left Joystick Button
- UNASSIGNED
- Primary Leg State Toggle (with primary leg selected)
- Right Joystick Button
- Pose Reset
- Secondary Leg State Toggle (with secondary leg selected)
- Left Bumper:
- Primary Leg Selection
- Primary Leg Manipulation Mode (with primary leg in manipulation)
- Right Bumper:
- Secondary Leg Selection
- Secondary Manipulation Mode (with secondary leg in manipulation)
- Left Joystick:
- Linear Body Velocity Input
- Primary Leg Manipulation Input
- Right Joystick:
- Body Manual Posing Input
- Secondary Leg Manipulation Input
- Left/Right Triggers:
- Angular Body Velocity Input
- DPAD:
- Parameter Selection
- Parameter Adjustment
Please read readme of syropod_tablet_control
for control using tablet PCs.
Please refer to readme of syropod_keyboard_control
for control scheme and key mapping.
- System State Transition:
- Controls SHC system state. Press to start/suspend/resume control.
- Robot State Increment:
- Increments robot state. Press to transition forward through possible robot states. (i.e. PACKED->READY->RUNNING)
- Robot State Decrement:
- Decrements robot state. Press to transition backward through possible robot states. (i.e. RUNNING->READY->PACKED)
- Gait Cycle Selection:
- Cycles through possible gait selections defined in config/gait.yaml (defaults include Wave, Amble, Ripple and Tripod)
- Manual Posing Mode Selection:
- Cycles through manual body posing modes:
- NO_POSING: NO posing input.
- X_Y_POSING: Linear translational posing in the x-axis and y-axis of the robot frame.
- ROLL_PITCH_POSING: Angular rotational posing about he x-axis (roll) and y-axis (pitch) of the robot frame.
- Z_YAW_POSING: Right Linear translational posing in the z-axis and angular rotational posing about the z-axis (yaw) of the robot frame.
- Cycles through manual body posing modes:
- Cruise Control Mode Toggle:
- Starts/Stops cruise control mode. Cruise control sets a constant input velocity dependent on:
- The input body velocities at activation OR
- Parameter values defined in
config/\*SYROPOD_NAME\*.yaml
- Starts/Stops cruise control mode. Cruise control sets a constant input velocity dependent on:
- Auto-Navigation Mode Toggle:
- Starts/Stops auto navigation mode. Auto navigation required correct sensing capabilities and
syropod_auto_navigation
.
- Starts/Stops auto navigation mode. Auto navigation required correct sensing capabilities and
- Pose Reset Mode:
- If no leg is selected for primary manipulation - reset all current body poses to zero (according to current POSING_MODE)
- Parameter Selection:
- Cycles through possible adjustable parameter selections.
- Parameter Adjustment:
- Adjusts selected parameter by incrementing/decrementing according to adjustment step amount defined in
config/\*SYROPOD_NAME\*.yaml
.
- Adjusts selected parameter by incrementing/decrementing according to adjustment step amount defined in
- Primary Leg Selection:
- Cycles through possible leg selections for primary leg manipulation.
- Secondary Leg Selection:
- Cycles through possible leg selections for secondary leg manipulation.
- Primary Leg State Toggle:
- If a leg is selected for primary manipulation - toggles leg manipulation for primary selected leg.
- Secondary Leg State Toggle:
- If a leg is selected for secondary manipulation - toggles leg manipulation for secondary selected leg.
- Leg Manipulation Mode:
- Whilst in leg manipulation, cycles between tip velocity input mode or secondary selected leg. (i.e. Manipulation in X/Y or Z/Y planes)
- Leg Manipulation Mode:
- Whilst in leg manipulation, cycles between tip velocity input mode or secondary selected leg. (i.e. Manipulation in X/Y or Z/Y planes)
- Linear Body Velocity Input:
- Commands desired linear body velocity.
- Positive/negative velocity input in the x-axis of the robot frame. (i.e. robot forward/backward)
- Positive/negative velocity input in the y-axis of the robot frame. (i.e. robot left/right)
- Commands desired linear body velocity.
- Angular Body Velocity Input:
- Commands desired angular body velocity in the positive direction (i.e. robot turn left)
- Commands desired angular body velocity in the negative direction (i.e. robot turn right)
- Body Manual Posing Input:
- No Posing Mode: Delivers no posing input.
- X/Y Posing Mode: If the current POSING_MODE is X_Y_POSING - commands desired linear posing velocity in the x/y axes.
- Positive/Negative velocity input in the x-axis of the robot frame. (i.e. pose robot body forward/backward)
- Positive/Negative velocity input in the y-axis of the robot frame. (i.e. pose robot body left/right)
- Roll/Pitch Posing Mode: If the current POSING_MODE is ROLL_PITCH_POSING - commands desired angular posing velocity about the x/y axes.
- Positive/Negative velocity input about the y-axis of the robot frame. (i.e. pitch robot body forward/backward)
- Negative/Positive velocity input about the x-axis of the robot frame. (i.e. roll robot body left/right)
- Z/Yaw Posing Mode: If the current POSING_MODE is Z_YAW_POSING - commands desired linear/angular posing velocity in/about the z axis.
- Positive/Negative velocity input in the z-axis of the robot frame. (i.e. pose robot body up/down)
- Positive/Negative velocity input about the z-axis of the robot frame. (i.e. yaw robot body left/right)
- Primary Leg Manipulation Mode:
- If the primary selected leg is toggled for leg manipulation - commands desired tip velocity with respect to the robot frame.
- Positive/negative velocity input in the x/z-axis of the robot frame. (i.e. tip forward/backward OR up/down)
- Positive/negative velocity input in the y-axis of the robot frame. (i.e. tip left/right)
- If the primary selected leg is toggled for leg manipulation - commands desired tip velocity with respect to the robot frame.
- Secondary Leg Manipulation Mode:
- If the secondary selected leg is toggled for leg manipulation - commands desired tip velocity with respect to the robot frame.
- Positive/negative velocity input in the x/z-axis of the robot frame. (i.e. tip forward/backward OR up/down)
- Positive/negative velocity input in the y-axis of the robot frame. (i.e. tip left/right)
- If the secondary selected leg is toggled for leg manipulation - commands desired tip velocity with respect to the robot frame.
- Press in the Konami Code sequence to find out. (May not be implemented for all Syropods)
- Joypad Input:
- Description: Input message from joypad.
- Topic: /joy
- Type: sensor_msgs::Joy::ConstPtr
- Keyboard Input:
- Description: Input message from
syropod_keyboard_control
. - Topic: /key
- Type: sensor_msgs::Joy::ConstPtr
- Description: Input message from
- Android Tablet Joypad Input:
- Description: See tablet_control package.
- Topic: /android/joy
- Type: syropod_remote::androidJoy::ConstPtr (custom message)
- Android Tablet Accelerometer Input:
- Description: See tablet_control package.
- Topic: /android/sensor
- Type: syropod_remote::androidSensor::ConstPtr (custom message)
- Syropod Auto-Navigation Input:
- Description: The input desired body velocity from syropod_auto_navigation node.
- Topic: /syropod_auto_navigation/desired_velocity
- Type: geometry_msgs::Twist
- System State:
- Description: The desired state of the entire Syropod High-level Controller system.
- Topic: /syropod_remote/system_state
- Type: std_msgs::Int8
- Robot State:
- Description: The desired state of the robot.
- Topic: /syropod_remote/robot_state
- Type: std_msgs::Int8
- Desired Velocity:
- Description: The desired body velocity of the robot.
- Topic: /syropod_remote/desired_velocity
- Type: geometry_msgs::Twist
- Desired Pose:
- Description: The desired body pose of the robot.
- Topic: /syropod_remote/desired_pose
- Type: geometry_msgs::Twist
- Posing Mode:
- Description: The desired manual body posing input mode.
- Topic: /syropod_remote/posing_mode
- Type: std_msgs::Int8
- Pose Reset Mode:
- Description: The desired manual body pose reset mode.
- Topic: /syropod_remote/pose_reset_mode
- Type: std_msgs::Int8
- Gait Selection:
- Description: The desired gait selection for the walk controller of the robot.
- Topic: /syropod_remote/gait_selection
- Type: std_msgs::Int8
- Cruise Control Mode:
- Description: The desired cruise control mode.
- Topic: /syropod_remote/cruise_control_mode
- Type: std_msgs::Int8
- Auto-Navigation Mode:
- Description: The desired auto-navigation mode.
- Topic: /syropod_remote/auto_navigation_mode
- Type: std_msgs::Int8
- Primary Leg Selection:
- Description: The desired leg selected for primary manipulation.
- Topic: /syropod_remote/primary_leg_selection
- Type: std_msgs::Int8
- Primary Leg State:
- Description: The desired state of the leg selected for primary manipulation.
- Topic: /syropod_remote/primary_leg_state
- Type: std_msgs::Int8
- Primary Tip Velocity:
- Description: The desired tip velocity for the leg selected for primary manipulation.
- Topic: /syropod_remote/primary_tip_velocity
- Type: geometry_msgs::Point
- Secondary Leg Selection:
- Description: The desired leg selected for secondary manipulation.
- Topic: /syropod_remote/secondary_leg_selection
- Type: std_msgs::Int8
- Secondary Leg State:
- Description: The desired state of the leg selected for secondary manipulation.
- Topic: /syropod_remote/secondary_leg_state
- Type: std_msgs::Int8
- Secondary Tip Velocity:
- Description: The desired tip velocity for the leg selected for secondary manipulation.
- Topic: /syropod_remote/secondary_tip_velocity
- Type: geometry_msgs::Point
- Parameter Selection:
- Description: The desired parameter selection for possible adjustment.
- Topic: /syropod_remote/parameter_selection
- Type: std_msgs::Int8
- Parameter Adjustment:
- Description: The desired adjustment of the selected parameter (increment/decrement).
- Topic: /syropod_remote/parameter_adjustment
- Type: std_msgs::Int8
Note: Version control commenced at v0.5.0. No changes were logged before this version.
- v0.5.0
- Renamed from hexapod_remote to syropod_remote inline with release of SHC v0.5.0.
- Refactored into command specific functions
- Added support for keyboard control
- Modified control scheme for leg manipulation plane selection
- Modified control scheme for to make joypad triggers control body angular velocity
- Fletcher Talbot
- Ryan Steindl
This project is licensed under the CSIRO Open Source Software Licence Agreement (variation of the BSD / MIT License) - see the LICENSE file for details.
Please report bugs using Issue Tracker or contact us via email shc-support@csiro.au.