Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ft multidingo #30

Merged
merged 2 commits into from
Jun 28, 2024
Merged
Show file tree
Hide file tree
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
36 changes: 35 additions & 1 deletion dinova_bringup/config/vicon_dingo1.yaml
Original file line number Diff line number Diff line change
@@ -1,11 +1,45 @@
object_names:
- "dingo1"
- "dingo2"
- "tablesmall_1"
- "tablesmall_2"
- "cup1"
- "cup2"
- "wineglass"
- "dynamic_object2"
object_msg_types: # "geometry_msgs/{PoseStamped,TransformStamped,PoseWithCovarianceStamped}"
- "geometry_msgs/PoseStamped"
- "geometry_msgs/PoseStamped"
- "geometry_msgs/PoseStamped"
- "geometry_msgs/PoseStamped"
- "geometry_msgs/PoseStamped"
- "geometry_msgs/PoseStamped"
- "geometry_msgs/PoseStamped"
- "geometry_msgs/PoseStamped"
object_frame_ids:
- "map"
- "map"
- "map"
- "map"
- "map"
- "map"
- "map"
- "map"
object_frequency_divider:
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
object_publish_topics:
- "/vicon/dingo1"

- "/vicon/dingo2"
- "/vicon/tablesmall_1"
- "/vicon/tablesmall_2"
- "/vicon/cup1"
- "/vicon/cup2"
- "/vicon/wineglass"
- "/vicon/dynamic_object2"
35 changes: 32 additions & 3 deletions dinova_bringup/config/vicon_dingo2.yaml
Original file line number Diff line number Diff line change
@@ -1,16 +1,45 @@
object_names:
- "dingo1"
- "dingo2"
- "mug1"
- "tablesmall_1"
- "tablesmall_2"
- "cup1"
- "cup2"
- "wineglass"
- "dynamic_object2"
object_msg_types: # "geometry_msgs/{PoseStamped,TransformStamped,PoseWithCovarianceStamped}"
- "geometry_msgs/PoseStamped"
- "geometry_msgs/PoseStamped"
- "geometry_msgs/PoseStamped"
- "geometry_msgs/PoseStamped"
- "geometry_msgs/PoseStamped"
- "geometry_msgs/PoseStamped"
- "geometry_msgs/PoseStamped"
- "geometry_msgs/PoseStamped"
object_frame_ids:
- "map"
- "map"
- "map"
- "map"
- "map"
- "map"
- "map"
- "map"
object_frequency_divider:
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
object_publish_topics:
- "/vicon/dingo1"
- "/vicon/dingo2"
- "/vicon/mug1"

- "/vicon/tablesmall_1"
- "/vicon/tablesmall_2"
- "/vicon/cup1"
- "/vicon/cup2"
- "/vicon/wineglass"
- "/vicon/dynamic_object2"
134 changes: 73 additions & 61 deletions dinova_bringup/launch/dingo.launch
Original file line number Diff line number Diff line change
Expand Up @@ -3,80 +3,92 @@
<!-- Dingo params: Dont change! -->
<arg name="motor_params" default="$(optenv DINGO_MOTOR_PARAMS base)" />
<arg name="config" default="$(optenv DINGO_CONFIG base)" />

<!-- Velodyne lidar -->
<arg name="lidar" default="false"/>
<arg name="velodyne_frame_id" default="velodyne_base_link"/>

<!-- Vicon -->
<arg name="vicon" default="true" />
<arg name="vicon_config_file" default="$(find dinova_bringup)/config/vicon_$(env ROBOT_NAME).yaml"/>
<param name="/vicon/use_vicon" type="bool" value="$(arg vicon)" />
<param name="/vicon/dingo_topic" type="string" value="/vicon/$(env ROBOT_NAME)" />


<!-- Robot model -->
<param name="robot_description" command="$(find xacro)/xacro '$(find dinova_description)/urdf/real_dingo-o.urdf.xacro'


<group ns="$(env ROBOT_NAME)">
<param name="vicon/use_vicon" type="bool" value="$(arg vicon)" />
<param name="vicon/dingo_topic" type="string" value="/vicon/$(env ROBOT_NAME)" />

<!-- Robot model -->
<param name="robot_description" command="$(find xacro)/xacro '$(find dinova_description)/urdf/real_dingo-o.urdf.xacro'
lidar:=$(arg lidar)"/>
<node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher" />

<!-- DINGO Nodes -->

<node pkg="rosserial_python" type="message_info_service.py" name="rosserial_message_info" />

<node pkg="dingo_base" type="dingo_node" name="dingo_node" output="screen">
<param name="dingo_omni" type="bool" value="$(optenv DINGO_OMNI 0)" />
<rosparam command="load" file="$(find dingo_base)/config/$(arg motor_params).yaml" />
<param name="wireless_interface" value="$(optenv DINGO_WIRELESS_INTERFACE wlp2s0)" />
</node>

<node pkg="imu_filter_madgwick" type="imu_filter_node" name="imu_filter">
<rosparam file="$(eval optenv('DINGO_MAG_CONFIG', find('dingo_base')+'/config/mag_config_default.yaml'))" />
<rosparam>
gain: 0.1
zeta: 0.001
publish_tf: false
use_magnetic_field_msg: true
</rosparam>
</node>
<node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher">
<param name="tf_prefix" value="$(env ROBOT_NAME)"/>
</node>

<!-- Differential controller and basic localization -->
<include file="$(find dingo_control)/launch/control.launch" />
<!-- DINGO Nodes -->

<!-- Teleoperation via joystick and rviz interactive markers -->
<include file="$(find dingo_control)/launch/teleop.launch" />
<node pkg="rosserial_python" type="message_info_service.py" name="rosserial_message_info" />

<!-- Diagnostic Aggregator for robot monitor usage -->
<group if="$(optenv DINGO_OMNI 0)">
<node pkg="diagnostic_aggregator" type="aggregator_node" name="diagnostic_aggregator">
<rosparam command="load" file="$(find dingo_base)/config/diagnostic_analyzers_common.yaml" />
<rosparam command="load" file="$(find dingo_base)/config/diagnostic_analyzers_omni.yaml" />
<node pkg="dingo_base" type="dingo_node" name="dingo_node" output="screen">
<param name="dingo_omni" type="bool" value="$(optenv DINGO_OMNI 0)" />
<rosparam command="load" file="$(find dingo_base)/config/$(arg motor_params).yaml" />
<param name="wireless_interface" value="$(optenv DINGO_WIRELESS_INTERFACE wlp2s0)" />
<remap from="/imu/data_raw" to="imu/data_raw" />
<remap from="/diagnostics" to="diagnostics" />
</node>
</group>
<group unless="$(optenv DINGO_OMNI 0)">
<node pkg="diagnostic_aggregator" type="aggregator_node" name="diagnostic_aggregator">
<rosparam command="load" file="$(find dingo_base)/config/diagnostic_analyzers_common.yaml" />
<rosparam command="load" file="$(find dingo_base)/config/diagnostic_analyzers_diff.yaml" />
</node>
</group>

<!-- Battery checking -->
<node pkg="dinova_bringup" type="battery_checker" name="battery_checker"/>
<node pkg="imu_filter_madgwick" type="imu_filter_node" name="imu_filter">
<rosparam file="$(eval optenv('DINGO_MAG_CONFIG', find('dingo_base')+'/config/mag_config_default.yaml'))" />
<rosparam>
gain: 0.1
zeta: 0.001
publish_tf: false
use_magnetic_field_msg: true
</rosparam>
</node>

<!-- Vicon Nodes -->
<group if="$(arg vicon)">
<rosparam ns="vicon/object_specific" command="load" file="$(arg vicon_config_file)"/>
<include file="$(find dinova_bringup)/launch/vicon.launch"/>
<node pkg="tf" type="static_transform_publisher" name="$(env ROBOT_NAME)_static_tf" args="0 0 0 0 0 0 $(env ROBOT_NAME) base_link 0.1" />
</group>
<!-- Differential controller and basic localization -->
<include file="$(find dinova_control)/launch/dingo_control.launch" />

<!-- Teleoperation via joystick and rviz interactive markers -->
<include file="$(find dinova_control)/launch/dingo_teleop.launch" />

<!-- Diagnostic Aggregator for robot monitor usage -->
<group if="$(optenv DINGO_OMNI 0)">
<node pkg="diagnostic_aggregator" type="aggregator_node" name="diagnostic_aggregator">
<rosparam command="load" file="$(find dingo_base)/config/diagnostic_analyzers_common.yaml" />
<rosparam command="load" file="$(find dingo_base)/config/diagnostic_analyzers_omni.yaml" />
<remap from="/diagnostics" to="diagnostics" />
<remap from="/diagnostics_agg" to="diagnostics_agg" />
<remap from="/diagnostics_toplevel_state" to="diagnostics_toplevel_state" />
</node>
</group>
<group unless="$(optenv DINGO_OMNI 0)">
<node pkg="diagnostic_aggregator" type="aggregator_node" name="diagnostic_aggregator">
<rosparam command="load" file="$(find dingo_base)/config/diagnostic_analyzers_common.yaml" />
<rosparam command="load" file="$(find dingo_base)/config/diagnostic_analyzers_diff.yaml" />
<remap from="/diagnostics" to="diagnostics" />
<remap from="/diagnostics_agg" to="diagnostics_agg" />
<remap from="/diagnostics_toplevel_state" to="diagnostics_toplevel_state" />
</node>
</group>

<!-- Battery checking -->
<node pkg="dinova_bringup" type="battery_checker" name="battery_checker"/>

<!-- Vicon Nodes -->
<group if="$(arg vicon)">
<rosparam ns="vicon/object_specific" command="load" file="$(arg vicon_config_file)"/>
<include file="$(find dinova_bringup)/launch/vicon.launch"/>
<node pkg="tf" type="static_transform_publisher" name="$(env ROBOT_NAME)_static_tf" args="0 0 0 0 0 0 $(env ROBOT_NAME) $(env ROBOT_NAME)/base_link 0.1" />
</group>

<!-- LIDAR Nodes -->
<group if="$(arg lidar)">
<include file="$(find velodyne_pointcloud)/launch/VLP16_points.launch">
</include>
</group>

<!-- Vicon Publish robot pose to omni_states_vicon -->
<node name="dinova_state_publisher" pkg="dinova_control" type="dingo_state_publisher.py" args="" output="screen"/>

<!-- LIDAR Nodes -->
<group if="$(arg lidar)">
<include file="$(find velodyne_pointcloud)/launch/VLP16_points.launch">
</include>
</group>

<!-- Vicon Publish robot pose to omni_states_vicon -->
<node name="dinova_state_publisher" pkg="dinova_control" type="dingo_state_publisher.py" args="" output="screen"/>


</launch>
37 changes: 20 additions & 17 deletions dinova_bringup/launch/dinova.launch
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
For Gazebo set it to false -->
<arg name="dingo_real_urdf" default="true" />
<arg name="load_gripper" default="true" />
<arg name="lidar" default="true"/>
<arg name="lidar" default="false"/>
<arg name="vicon" default="true" />
<arg name="vicon_config_file" default="$(find dinova_bringup)/config/vicon_$(env ROBOT_NAME).yaml"/>

Expand All @@ -27,7 +27,7 @@
lidar:=$(arg lidar)"/>

<node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher" >
<param name="tf_prefix" value="$(env ROBOT_NAME)"/>
<param name="tf_prefix" value="$(env ROBOT_NAME)"/>
<remap from="joint_states" to="dinova/joint_states" />
</node>

Expand All @@ -45,10 +45,10 @@
<node pkg="imu_filter_madgwick" type="imu_filter_node" name="imu_filter">
<rosparam file="$(eval optenv('DINGO_MAG_CONFIG', find('dingo_base')+'/config/mag_config_default.yaml'))" />
<rosparam>
gain: 0.1
zeta: 0.001
publish_tf: false
use_magnetic_field_msg: true
gain: 0.1
zeta: 0.001
publish_tf: false
use_magnetic_field_msg: true
</rosparam>
</node>

Expand All @@ -61,33 +61,36 @@
<!-- Diagnostic Aggregator for robot monitor usage -->
<group if="$(optenv DINGO_OMNI 0)">
<node pkg="diagnostic_aggregator" type="aggregator_node" name="diagnostic_aggregator">
<rosparam command="load" file="$(find dingo_base)/config/diagnostic_analyzers_common.yaml" />
<rosparam command="load" file="$(find dingo_base)/config/diagnostic_analyzers_omni.yaml" />
<remap from="/diagnostics" to="diagnostics" />
<remap from="/diagnostics_agg" to="diagnostics_agg" />
<remap from="/diagnostics_toplevel_state" to="diagnostics_toplevel_state" />
<rosparam command="load" file="$(find dingo_base)/config/diagnostic_analyzers_common.yaml" />
<rosparam command="load" file="$(find dingo_base)/config/diagnostic_analyzers_omni.yaml" />
<remap from="/diagnostics" to="diagnostics" />
<remap from="/diagnostics_agg" to="diagnostics_agg" />
<remap from="/diagnostics_toplevel_state" to="diagnostics_toplevel_state" />
</node>
</group>
<group unless="$(optenv DINGO_OMNI 0)">
<node pkg="diagnostic_aggregator" type="aggregator_node" name="diagnostic_aggregator">
<rosparam command="load" file="$(find dingo_base)/config/diagnostic_analyzers_common.yaml" />
<rosparam command="load" file="$(find dingo_base)/config/diagnostic_analyzers_diff.yaml" />
<remap from="/diagnostics" to="diagnostics" />
<remap from="/diagnostics_agg" to="diagnostics_agg" />
<remap from="/diagnostics_toplevel_state" to="diagnostics_toplevel_state" />
<rosparam command="load" file="$(find dingo_base)/config/diagnostic_analyzers_common.yaml" />
<rosparam command="load" file="$(find dingo_base)/config/diagnostic_analyzers_diff.yaml" />
<remap from="/diagnostics" to="diagnostics" />
<remap from="/diagnostics_agg" to="diagnostics_agg" />
<remap from="/diagnostics_toplevel_state" to="diagnostics_toplevel_state" />
</node>
</group>

<!-- Kinova Nodes -->
<rosparam command="load" file="$(find dinova_control)/config/config.yaml" />
<node name="dinova_control" pkg="dinova_control" type="kinova_driver.py" args="" output="screen"/>
<node name="dinova_state_publisher" pkg="dinova_control" type="dinova_state_publisher.py" args="" output="screen"/>

<!-- Battery checking -->
<node pkg="dinova_bringup" type="battery_checker" name="battery_checker"/>

<!-- Vicon nodes -->
<group if="$(arg vicon)">
<rosparam ns="vicon/object_specific" command="load" file="$(arg vicon_config_file)"/>
<include file="$(find dinova_bringup)/launch/vicon.launch"/>
<node pkg="tf" type="static_transform_publisher" name="$(env ROBOT_NAME)_static_tf" args="0 0 0 0 0 0 $(env ROBOT_NAME) $(env ROBOT_NAME)/base_link 0.1" />
<node pkg="tf" type="static_transform_publisher" name="$(env ROBOT_NAME)_static_tf" args="0 0 0 0 0 0 $(env ROBOT_NAME) $(env ROBOT_NAME)/base_link 0.1" />
</group>

</group>
Expand Down
43 changes: 24 additions & 19 deletions dinova_bringup/launch/kinova.launch
Original file line number Diff line number Diff line change
@@ -1,30 +1,35 @@
<?xml version="1.0"?>
<launch>
<!-- Vicon -->
<arg name="vicon" default="false" />
<arg name="vicon_config_file" default="$(find dinova_bringup)/config/vicon_$(env ROBOT_NAME).yaml"/>

<group ns="$(env ROBOT_NAME)">
<param name="vicon/use_vicon" type="bool" value="$(arg vicon)" />
<param name="vicon/dingo_topic" type="string" value="/vicon/$(env ROBOT_NAME)" />

<!-- Robot model -->
<param name="robot_description" command="$(find xacro)/xacro '$(find dinova_description)/urdf/kinova.xacro'"/>
<node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher" >
<remap from="/joint_states" to="/kinova/joint_states" />
</node>
<!-- Robot model -->
<param name="robot_description" command="$(find xacro)/xacro '$(find dinova_description)/urdf/kinova.xacro'"/>
<node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher" >
<remap from="joint_states" to="kinova/joint_states" />
<param name="tf_prefix" value="$(env ROBOT_NAME)"/>
</node>

<!-- Teleoperation via joystick and rviz interactive markers -->
<include file="$(find dingo_control)/launch/teleop.launch" />
<!-- Teleoperation via joystick and rviz interactive markers -->
<include file="$(find dinova_control)/launch/dingo_teleop.launch" />

<!-- Vicon -->
<arg name="vicon" default="true" />
<arg name="vicon_config_file" default="$(find dinova_bringup)/config/vicon_$(env ROBOT_NAME).yaml"/>
<param name="/vicon/use_vicon" type="bool" value="$(arg vicon)" />
<param name="/vicon/dingo_topic" type="string" value="/vicon/$(env ROBOT_NAME)" />

<rosparam command="load" file="$(find dinova_control)/config/config.yaml" />
<node name="kinova_driver" pkg="dinova_control" type="kinova_driver.py" args="" output="screen"/>

<rosparam command="load" file="$(find dinova_control)/config/config.yaml" />
<node name="kinova_driver" pkg="dinova_control" type="kinova_driver.py" args="" output="screen"/>
<!-- Vicon Nodes -->
<group if="$(arg vicon)">
<rosparam ns="vicon/object_specific" command="load" file="$(arg vicon_config_file)"/>
<include file="$(find dinova_bringup)/launch/vicon.launch"/>
<!-- TODO: modify this -->
<!-- <node pkg="tf" type="static_transform_publisher" name="$(env ROBOT_NAME)_static_tf" args="0 0 0 0 0 0 $(env ROBOT_NAME) $(env ROBOT_NAME)/base_link 0.1" /> -->
</group>

<!-- Vicon Nodes -->
<!-- <group if="$(eval arg('vicon') == 'true')">
<rosparam ns="vicon/object_specific" command="load" file="$(arg vicon_config_file)"/>
<include file="$(find dinova_bringup)/launch/vicon.launch"/>
</group> -->
</group>

</launch>
2 changes: 1 addition & 1 deletion dinova_bringup/scripts/battery_checker
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ class BatteryChecker():

def establish_ros_connections(self):
rospy.Subscriber("battery/status", BatteryState, self._battery_state_callback)
self._light_pub = rospy.Publisher("/cmd_lights", Lights, queue_size=1)
self._light_pub = rospy.Publisher("cmd_lights", Lights, queue_size=1)

def _battery_state_callback(self, data: BatteryState):
self._percentage = data.percentage
Expand Down
Loading