Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
<launch>
<arg name="jackal_port" default="/dev/jackal" />

<include file="$(find jackal_description)/launch/description.launch" />

<node pkg="jackal_base" type="jackal_node" name="jackal_node">
<rosparam>
# TODO: Specify these in code rather than here.
require:
publishers:
- status
- feedback
- imu/data_raw
- navsat/nmea_sentence
subscribers:
- cmd_drive
- wifi_connected
</rosparam>
<param name="port" value="$(arg jackal_port)" />
<param name="wireless_interface" value="$(optenv JACKAL_WIRELESS_INTERFACE wlp2s0)" />
</node>

<!-- TODO: Eliminate this by compiling the necessary message definitions into jackal_base. -->
<node pkg="rosserial_python" type="message_info_service.py" name="rosserial_message_info" />

<!-- Translate Sentence messages from the MCU to NavSatFix messages -->
<node pkg="nmea_navsat_driver" type="nmea_topic_driver" name="nmea_topic_driver" ns="navsat" />

<!-- Filter raw gyro data into a usable IMU message -->
<node pkg="imu_filter_madgwick" type="imu_filter_node" name="imu_filter">
<rosparam file="$(eval optenv('JACKAL_MAG_CONFIG', find('jackal_base')+'/config/mag_config_default.yaml'))" />
<rosparam>
gain: 0.1
zeta: 0.001
publish_tf: false
</rosparam>
</node>

<!-- Differential controller and basic localization -->
<!-- from jackal_control/launch/control.launch -->
<arg name="enable_ekf" default="$(optenv ENABLE_EKF true)"/>

<rosparam command="load" file="$(find jackal_control)/config/control.yaml" />

<node name="controller_spawner" pkg="controller_manager" type="spawner"
args="jackal_joint_publisher jackal_velocity_controller" />

<group if="$(arg enable_ekf)" >
<node pkg="robot_localization" type="ekf_localization_node" name="ekf_localization">
<rosparam command="load" file="$(find jackal_control)/config/robot_localization.yaml" />
</node>

<group if="$(optenv JACKAL_GX5_IMU 0)">
<!-- Optionally load the configuration for the secondary GX5-family IMU -->
<rosparam command="load" file="$(find jackal_control)/config/robot_localization_gx5.yaml" />
</group>
</group>

<node pkg="twist_mux" type="twist_mux" name="twist_mux">
<rosparam command="load" file="$(find jackal_control)/config/twist_mux.yaml" />
<remap from="cmd_vel_out" to="jackal_velocity_controller/cmd_vel"/>
</node>

<group if="$(optenv JACKAL_CONTROL_EXTRAS 0)" >
<rosparam command="load" file="$(env JACKAL_CONTROL_EXTRAS_PATH)" />
</group>

<!-- Teleoperation via joystick and rviz interactive markers -->
<!-- from jackal_control/launch/teleop.launch" /> -->
<arg name="joy_dev" default="$(optenv JACKAL_JOY_DEVICE /dev/input/js1)" />
<arg name="joystick" default="true" />

<group ns="bluetooth_teleop" if="$(arg joystick)">

<group unless="$(optenv JACKAL_PS3 0)" >
<rosparam command="load" file="$(find jackal_control)/config/teleop_ps4.yaml" />
<param name="joy_node/dev" value="$(arg joy_dev)" />
</group>

<group if="$(optenv JACKAL_PS3 0)" >
<rosparam command="load" file="$(find jackal_control)/config/teleop_ps3.yaml" />
<param name="joy_node/dev" value="$(arg joy_dev)" />
</group>

<node pkg="joy" type="joy_node" name="joy_node" />

<node pkg="teleop_twist_joy" type="teleop_node" name="teleop_twist_joy"/>
</group>

<node pkg="interactive_marker_twist_server" type="marker_server" name="twist_marker_server"/>

<!-- Diagnostic Aggregator for robot monitor usage -->
<node pkg="diagnostic_aggregator" type="aggregator_node" name="diagnostic_aggregator">
<rosparam command="load" file="$(find jackal_base)/config/diagnostic_analyzers.yaml" />
</node>
</launch>