-
Notifications
You must be signed in to change notification settings - Fork 0
bringup
This walks through the launch files for the HLP-R platform with the several working components that are now being used across several labs. This is in no way comprehensive, but gives a starting point to bring up the full platform with several different robot capabilities. Currently, only the subset of components that seemed to be used across all labs are in this launch file. Later on, we can discuss how to elevate packages that start to get used frequently in several labs.
There are two launch files in hlpr_bringup that will be referenced throughout this tutorial: start_robot_services.launch and customize_start_robot_services.launch. The base launch file that folks should be super careful about modifying is start_robot_services.launch. This launch file actually calls all of the different components, whereas customize_start_robot_services.launch is an example of how to turn on and off flags for your custom project/needs.
You will want to make a copy of customize_start_robot_services.launch and put this where you would like to have bringup scripts for your project. The idea is that you will modify the different flags in the customize_start_robot_services.launch file to turn on/off different components. For example, you can turn on the jaco drivers, but turn off moveit. Or turn on speech rec with a speech gui.
The different flags are listed below with descriptions. The default value is indicated in (parenthesis). Note: for some high-level flags (e.g. navigation, speech, etc.) are turned off, then the following flags in that section might not have any effect.
These flags are specifically to modify different robot urdfs. If you are using the generic vector URDF, then set all of these to false
-
poli_urdf(false): Sets the URDF to be Poli specific -
prentice_urdf(false): DO NOT USE YET. Sets the URDF to be Prentice specific (currently not used)
-
verbose(false): global flag for some nodes that are more verbose when printing -
sim(true): global flag that indicates that we are in simulation
See navigation for more details.
-
navigation(true): This flag turns the nav stack (move_base, etc.) on. In particular it launches theroslaunch vector_navigation_apps 2d_map_nav_demo.launchwith the map configuration file listed below and the simulation global flag. -
nav_map(simulation_room): This is the name of the map you want the nav stack to load -
nav_rviz(true): This launches the rviz visualization of the nav stack interface provided by stanley
See hlpr_manipulation for more details
-
jaco_arm(true): This launches the wpi_jaco_wrapper driver using all default values except forsim, which is set in the general flags. -
jaco_7dof_arm(false): This launches the kinova_ros driver for the 7DOF arm using all default values except forsim, which is set in the general flags. DO NOT have this andjaco_armset at the same time. Note: this sets whether we use the 7dof moveit launcher as well, sojaco_moveitalready will select the correct 6dof or 7dof moveit packages. -
gripper_actions(false): This launches the gripper_actions driver from therobotiq_85_gripper_actionspackage -
pub_eef(true): This starts a simple publishers that publishes out theeef_linktransform relative to thebase_link. Currently, it doesn't support different values in this launch file, but can easily be changed to change the base link name. -
eef_link(/right_ee_link): The specific end-effector name for the arm. Note: this is used in several places that use theeef_linkas a parameter.
See hlpr_manipulation_moveit for some basic details
-
jaco_moveit(false): This turns on moveit for the jaco arm. With different URDFs, we need different srdfs. Currently, it is setup to load the srdf for Poli correctly ($(find poli_moveit_config)/config/vector.srdf). There is something similar for Prentice ($(find prentice_moveit_config)/config/vector.srdf), however, the Prentice package does not yet exist because it is not necessary yet. When bothpoli_urdfandprentice_urdfflags are set tofalse, then it will load the default srdf file ($(find hlpr_wpi_jaco_moveit_config)/config/vector.srdf). This also checks if we are using the 7dof arm. If so, all arguments call thehlpr_j2s7s300_moveit_config package -
use_octomap(false): This enables the octomap to be used when computing paths. Be aware it uses the topic specified in thehlpr_wpi_jaco_moveit_config/config/sensors_kinect.yamlfile. Note: or thehlpr_j2s7s300_moveit_config/config/sensors_kinect.yaml -
jaco_moveit_wrapper(false): This enables moveit wrapper inhlpr_manipulation_actions. See link for more details. -
jaco_primitive_actions(false): This enables the actions forprimitive_actionsinhlpr_manipulation_actions. See link for more details. -
jaco_common_actions(false): This enables the actions forcommon_actionsinhlpr_manipulation_actions. See link for more details.
See hlpr_speech for more details. Note that wiki might be out-of-date.
-
speech(true): This enables the speech listener. This is the main node that keeps track of speech inputs and needs to be running before anything else that uses speech is used. -
speech_config_file($(find hlpr_speech_recognition)/config/speech.yaml): This file specifies key parameters used in the speech listener such as the speech publish topic, and speech rec thresholds using a real mic. See file, which is the default configs -
speech_yaml_list($(find hlpr_speech_recognition)/data/kps.yaml): This is the location of the file for speech tags that trigger different speech events. It is highly recommended to provide a new file location to modify this. Do not modify the default speech as it will affect everyone. This file is what needs to be changed when new/different speech tags are changed/added. Note: this needs to correlate with the dictionary files (described in external input) if speech is to be recognized with a real mic.
-
speech_gui(true): This toggles the speech gui to be launched. -
speech_mic(false): This launches the actual speech rec system with a real mic. -
speech_dict_path($(find hlpr_speech_recognition)/data/kps.dic): This is the dictionary file that pocketsphinx uses. Replace this path with custom dictionaries if new speech is to be recognized. Note: needs to match thespeech_yaml_listfile. -
speech_kps_path($(find hlpr_speech_recognition)/data/kps.txt): Same as the dictionary files, this is the txt files that pocketsphinx needs. Note: needs to match thespeech_yaml_listfile.
-
lookat(true): Enables the lookat service. It takes in thepoli_urdfvalue to trigger the correct lookat IK parameters. -
lookat_eef_service(false): This computes the lookat values foreef_linkspecified in the prior parameters. If enabled, then it listens forstd_msgs/Boolonlookat_eef_toggletopic. If set totrue, then the robot will look at its EEF. -
lookat_waypoint_server(false): This is an action server that takes in a list of waypoints for the robot to look at. More details on how to run this to follow... (or ask Vivian)
For more details see hlpr_kinesthetic_teaching.
-
basic_kinesthetic_mode(false): If enabled, this allows voice commands to interact with the robot. Currently it supports a very small subset of commands that include gravity comp mode and open/close gripper. To extend this - seebasic_kinesthetic_interaction.pyin thehlpr_kinesthetic_interactionpackage. -
basic_kt_folder_loc(~/): Path for where the folder for writing demo data is located -
basic_kt_folder_name(kt_data): Folder name for where demos will be written -
basic_kt_data_prefix(kt_demo): Prefix to append to demo names (e.g.kt_demo_00.bag) -
kinesthetic_record(false): Enables the recording node. Without it, you cannot record basic bag files. This is a very simplistic implementation of the record node located in thehlpr_record_demonstrationpackage. It is advised to replace this if you need anything more robust. -
kinesthetic_playback(false): Enables the playback node. Without it, you cannot playback basic bag files. -
record_topics($(find hlpr_record_demonstration)/data/topics.yaml): This file indicates what rostopics you would like to record when doing kinesthetic teaching and recording the demo. Advised to copy that file and replace the path to your own project specific recording.