Skip to content

Commit 301adf5

Browse files
committed
fix: refactory and remove c3 state sender
1 parent 30a0f53 commit 301adf5

File tree

14 files changed

+226
-234
lines changed

14 files changed

+226
-234
lines changed

examples/plate-balancing/BUILD.bazel

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ cc_binary(
7777
"//systems/controllers/osc:operational_space_control",
7878
"//systems/framework:lcm_driven_loop",
7979
"//systems/primitives:radio_parser",
80+
"//systems/lcmt_generators:lcmt_generators",
8081
"@c3//core:c3",
8182
"@c3//core:options",
8283
"@c3//systems:systems",
@@ -105,6 +106,7 @@ cc_binary(
105106
"//systems:system_utils",
106107
"//systems/controllers",
107108
"//systems/controllers/osc:operational_space_control",
109+
"//systems/lcmt_generators:lcmt_generators",
108110
"//systems/framework:lcm_driven_loop",
109111
"//systems/primitives:radio_parser",
110112
"@drake//:drake_shared_library",
@@ -121,14 +123,15 @@ cc_binary(
121123
],
122124
deps = [
123125
":parameters",
126+
"//examples/plate-balancing/systems/visualization:lcm_visualization_systems",
124127
"//common",
125128
"//multibody:utils",
126129
"//multibody:visualization_utils",
127130
"//systems:robot_lcm_systems",
128131
"//systems:system_utils",
132+
"//systems/lcmt_generators:lcmt_generators",
129133
"//systems/primitives",
130134
"//systems/trajectory_optimization:lcm_trajectory_systems",
131-
"//systems/visualization:lcm_visualization_systems",
132135
"@c3//lcmtypes:lcmt_c3",
133136
"@drake//:drake_shared_library",
134137
"@gflags",

examples/plate-balancing/forward_kinematics_for_lcs.cc

Lines changed: 20 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@
1515
#include "examples/plate-balancing/parameters/lcm_channel_config.h"
1616
#include "examples/plate-balancing/parameters/plate_balancing_config.h"
1717
#include "examples/plate-balancing/parameters/plate_balancing_target_config.h"
18-
#include "examples/plate-balancing/systems/c3_state_sender.h"
1918
#include "examples/plate-balancing/systems/franka_kinematics.h"
2019
#include "examples/plate-balancing/systems/plate_balancing_target.h"
2120
#include "multibody/multibody_utils.h"
2221
#include "systems/framework/lcm_driven_loop.h"
22+
#include "systems/lcmt_generators/robot_state_generator.h"
2323
#include "systems/primitives/radio_parser.h"
2424
#include "systems/robot_lcm_systems.h"
2525
#include "systems/system_utils.h"
@@ -50,6 +50,7 @@ using dairlib::systems::LcmDrivenLoop;
5050
using dairlib::systems::ObjectStateReceiver;
5151
using dairlib::systems::RadioToVector;
5252
using dairlib::systems::RobotOutputReceiver;
53+
using dairlib::systems::lcmt_generators::RobotStateGenerator;
5354

5455
namespace dairlib {
5556
namespace examples {
@@ -131,17 +132,6 @@ int DoMain(int argc, char* argv[]) {
131132
// Add systems for radio parsing and C3 state handling
132133
auto radio_to_vector = builder.AddSystem<RadioToVector>();
133134

134-
// Define state names for C3 state sender
135-
std::vector<std::string> state_names = {
136-
"end_effector_x", "end_effector_y", "end_effector_z", "tray_qw",
137-
"tray_qx", "tray_qy", "tray_qz", "tray_x",
138-
"tray_y", "tray_z", "end_effector_vx", "end_effector_vy",
139-
"end_effector_vz", "tray_wx", "tray_wy", "tray_wz",
140-
"tray_vz", "tray_vz", "tray_vz",
141-
};
142-
auto c3_state_sender =
143-
builder.AddSystem<systems::C3StateSender>(3 + 7 + 3 + 6, state_names);
144-
145135
// Add plate balancing target generator
146136
auto plate_balancing_target =
147137
builder.AddSystem<systems::PlateBalancingTargetGenerator>(
@@ -166,16 +156,6 @@ int DoMain(int argc, char* argv[]) {
166156
builder.AddSystem<drake::systems::ConstantVectorSource>(
167157
VectorXd::Zero(6));
168158

169-
// Add LCM publishers for C3 state
170-
auto c3_actual_state_publisher =
171-
builder.AddSystem(LcmPublisherSystem::Make<dairlib::lcmt_c3_state>(
172-
lcm_channel_params.c3_actual_state_channel, &lcm,
173-
TriggerTypeSet({TriggerType::kForced})));
174-
auto c3_target_state_publisher =
175-
builder.AddSystem(LcmPublisherSystem::Make<dairlib::lcmt_c3_state>(
176-
lcm_channel_params.c3_target_state_channel, &lcm,
177-
TriggerTypeSet({TriggerType::kForced})));
178-
179159
// Connect the systems
180160
builder.Connect(*radio_sub, *radio_to_vector);
181161
builder.Connect(tray_state_receiver->get_output_port(),
@@ -192,19 +172,29 @@ int DoMain(int argc, char* argv[]) {
192172
reduced_order_model_receiver->get_input_port_franka_state());
193173
builder.Connect(tray_state_receiver->get_output_port(),
194174
reduced_order_model_receiver->get_input_port_object_state());
195-
builder.Connect(reduced_order_model_receiver->get_output_port_lcs_state(),
196-
c3_state_sender->get_input_port_actual_state());
197-
builder.Connect(target_state_mux->get_output_port(),
198-
c3_state_sender->get_input_port_target_state());
199-
builder.Connect(c3_state_sender->get_output_port_actual_c3_state(),
200-
c3_actual_state_publisher->get_input_port());
201-
builder.Connect(c3_state_sender->get_output_port_target_c3_state(),
202-
c3_target_state_publisher->get_input_port());
203175
builder.Connect(end_effector_zero_velocity_source->get_output_port(),
204176
target_state_mux->get_input_port(2));
205177
builder.Connect(tray_zero_velocity_source->get_output_port(),
206178
target_state_mux->get_input_port(3));
207179

180+
// Define state names for C3 state sender
181+
std::vector<std::string> state_names = {
182+
"end_effector_x", "end_effector_y", "end_effector_z", "tray_qw",
183+
"tray_qx", "tray_qy", "tray_qz", "tray_x",
184+
"tray_y", "tray_z", "end_effector_vx", "end_effector_vy",
185+
"end_effector_vz", "tray_wx", "tray_wy", "tray_wz",
186+
"tray_vz", "tray_vz", "tray_vz",
187+
};
188+
RobotStateGenerator::AddLcmPublisherToBuilder(
189+
builder, state_names, false, target_state_mux->get_output_port(),
190+
lcm_channel_params.c3_target_state_channel, &lcm,
191+
TriggerTypeSet({TriggerType::kForced}));
192+
RobotStateGenerator::AddLcmPublisherToBuilder(
193+
builder, state_names, true,
194+
reduced_order_model_receiver->get_output_port_lcs_state(),
195+
lcm_channel_params.c3_actual_state_channel, &lcm,
196+
TriggerTypeSet({TriggerType::kForced}));
197+
208198
auto owned_diagram = builder.Build();
209199
owned_diagram->set_name(("franka_forward_kinematics"));
210200

examples/plate-balancing/plate_balancing_c3_controller.cc

Lines changed: 12 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@
2121
#include "examples/plate-balancing/parameters/plate_balancing_c3_controller_options.h"
2222
#include "examples/plate-balancing/parameters/plate_balancing_config.h"
2323
#include "examples/plate-balancing/parameters/plate_balancing_target_config.h"
24-
#include "examples/plate-balancing/systems/c3_state_sender.h"
2524
#include "examples/plate-balancing/systems/franka_kinematics.h"
2625
#include "examples/plate-balancing/systems/plate_balancing_target.h"
2726
#include "multibody/multibody_utils.h"
2827
#include "systems/framework/lcm_driven_loop.h"
28+
#include "systems/lcmt_generators/robot_state_generator.h"
2929
#include "systems/primitives/radio_parser.h"
3030
#include "systems/robot_lcm_systems.h"
3131
#include "systems/system_utils.h"
@@ -71,6 +71,7 @@ using systems::LcmDrivenLoop;
7171
using systems::ObjectStateReceiver;
7272
using systems::RadioToVector;
7373
using systems::RobotOutputReceiver;
74+
using systems::lcmt_generators::RobotStateGenerator;
7475

7576
namespace examples {
7677
namespace plate_balancing {
@@ -277,14 +278,6 @@ int DoMain(std::string plate_balancing_config, bool is_simulation) {
277278
scene_params.end_effector_name, "tray",
278279
main_config.include_end_effector_orientation);
279280

280-
auto c3_target_state_publisher =
281-
builder.AddSystem(LcmPublisherSystem::Make<dairlib::lcmt_c3_state>(
282-
lcm_channel_params.c3_target_state_channel, &lcm,
283-
TriggerTypeSet({TriggerType::kForced})));
284-
auto c3_actual_state_publisher =
285-
builder.AddSystem(LcmPublisherSystem::Make<dairlib::lcmt_c3_state>(
286-
lcm_channel_params.c3_actual_state_channel, &lcm,
287-
TriggerTypeSet({TriggerType::kForced})));
288281
auto radio_sub =
289282
builder.AddSystem(LcmSubscriberSystem::Make<dairlib::lcmt_radio_out>(
290283
lcm_channel_params.radio_channel, &lcm));
@@ -323,17 +316,6 @@ int DoMain(std::string plate_balancing_config, bool is_simulation) {
323316
auto controller = AddC3ControllerToBuilder(
324317
builder, plant_for_lcs, controller_options, solver_options);
325318

326-
// Add C3 state sender
327-
std::vector<std::string> state_names = {
328-
"end_effector_x", "end_effector_y", "end_effector_z", "tray_qw",
329-
"tray_qx", "tray_qy", "tray_qz", "tray_x",
330-
"tray_y", "tray_z", "end_effector_vx", "end_effector_vy",
331-
"end_effector_vz", "tray_wx", "tray_wy", "tray_wz",
332-
"tray_vz", "tray_vz", "tray_vz",
333-
};
334-
auto c3_state_sender =
335-
builder.AddSystem<systems::C3StateSender>(3 + 7 + 3 + 6, state_names);
336-
337319
// Connect systems
338320
builder.Connect(*radio_sub, *radio_to_vector);
339321
builder.Connect(franka_state_receiver->get_output_port(),
@@ -356,14 +338,6 @@ int DoMain(std::string plate_balancing_config, bool is_simulation) {
356338
lcs_factory->get_input_port_lcs_input());
357339
builder.Connect(radio_to_vector->get_output_port(),
358340
plate_balancing_target->get_input_port_radio());
359-
builder.Connect(target_state_mux->get_output_port(),
360-
c3_state_sender->get_input_port_target_state());
361-
builder.Connect(reduced_order_model_receiver->get_output_port_lcs_state(),
362-
c3_state_sender->get_input_port_actual_state());
363-
builder.Connect(c3_state_sender->get_output_port_target_c3_state(),
364-
c3_target_state_publisher->get_input_port());
365-
builder.Connect(c3_state_sender->get_output_port_actual_c3_state(),
366-
c3_actual_state_publisher->get_input_port());
367341

368342
// Add C3 output and contact force publishers
369343
C3OutputGenerator::AddLcmPublisherToBuilder(
@@ -390,6 +364,16 @@ int DoMain(std::string plate_balancing_config, bool is_simulation) {
390364
builder, object_config, controller->get_output_port_c3_solution(),
391365
lcm_channel_params.c3_object_channel, &lcm,
392366
TriggerTypeSet({TriggerType::kForced}));
367+
RobotStateGenerator::AddLcmPublisherToBuilder(
368+
builder, plant_for_lcs.GetStateNames(), false,
369+
target_state_mux->get_output_port(),
370+
lcm_channel_params.c3_target_state_channel, &lcm,
371+
TriggerTypeSet({TriggerType::kForced}));
372+
RobotStateGenerator::AddLcmPublisherToBuilder(
373+
builder, plant_for_lcs.GetStateNames(), true,
374+
reduced_order_model_receiver->get_output_port_lcs_state(),
375+
lcm_channel_params.c3_actual_state_channel, &lcm,
376+
TriggerTypeSet({TriggerType::kForced}));
393377

394378
auto owned_diagram = builder.Build();
395379
owned_diagram->set_name(("run_c3_controller"));

examples/plate-balancing/plate_balancing_visualizer.cc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22
#include <iostream>
33

44
#include <c3/lcmt_contact_forces.hpp>
5-
#include <dairlib/lcmt_c3_state.hpp>
65
#include <dairlib/lcmt_timestamped_saved_traj.hpp>
76
#include <drake/common/find_resource.h>
87
#include <drake/common/yaml/yaml_io.h>
98
#include <drake/geometry/drake_visualizer.h>
109
#include <drake/geometry/meshcat_visualizer.h>
1110
#include <drake/geometry/meshcat_visualizer_params.h>
11+
#include <drake/lcmt_robot_state.hpp>
1212
#include <drake/multibody/parsing/parser.h>
1313
#include <drake/systems/analysis/simulator.h>
1414
#include <drake/systems/framework/diagram_builder.h>
@@ -25,14 +25,14 @@
2525
#include "examples/plate-balancing/parameters/plate_balancing_config.h"
2626
#include "examples/plate-balancing/parameters/simulation_config.h"
2727
#include "examples/plate-balancing/parameters/simulation_scene_config.h"
28+
#include "examples/plate-balancing/systems/visualization/lcm_visualization_systems.h"
2829
#include "multibody/com_pose_system.h"
2930
#include "multibody/multibody_utils.h"
3031
#include "multibody/visualization_utils.h"
3132
#include "systems/primitives/subvector_pass_through.h"
3233
#include "systems/robot_lcm_systems.h"
3334
#include "systems/system_utils.h"
3435
#include "systems/trajectory_optimization/lcm_trajectory_systems.h"
35-
#include "systems/visualization/lcm_visualization_systems.h"
3636

3737
using drake::geometry::MeshcatVisualizer;
3838
using drake::math::RigidTransform;
@@ -184,10 +184,10 @@ int do_main(int argc, char* argv[]) {
184184

185185
// Create LCM subscribers for C3 states.
186186
auto c3_state_actual_sub =
187-
builder.AddSystem(LcmSubscriberSystem::Make<dairlib::lcmt_c3_state>(
187+
builder.AddSystem(LcmSubscriberSystem::Make<drake::lcmt_robot_state>(
188188
lcm_channel_params.c3_actual_state_channel, lcm));
189189
auto c3_state_target_sub =
190-
builder.AddSystem(LcmSubscriberSystem::Make<dairlib::lcmt_c3_state>(
190+
builder.AddSystem(LcmSubscriberSystem::Make<drake::lcmt_robot_state>(
191191
lcm_channel_params.c3_target_state_channel, lcm));
192192

193193
// Create a system to convert MultibodyPlant positions to geometry poses.

examples/plate-balancing/systems/BUILD.bazel

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ cc_library(
44
name = "franka_systems",
55
srcs = [],
66
deps = [
7-
":c3_state_sender",
87
":end_effector_force_trajectory",
98
":end_effector_orientation_trajectory",
109
":end_effector_position_trajectory",
@@ -79,21 +78,6 @@ cc_library(
7978
],
8079
)
8180

82-
cc_library(
83-
name = "c3_state_sender",
84-
srcs = [
85-
"c3_state_sender.cc",
86-
],
87-
hdrs = [
88-
"c3_state_sender.h",
89-
],
90-
deps = [
91-
"//lcmtypes:lcmt_robot",
92-
"//systems/framework:vector",
93-
"@drake//:drake_shared_library",
94-
],
95-
)
96-
9781
cc_library(
9882
name = "franka_kinematics",
9983
srcs = ["franka_kinematics.cc"],

examples/plate-balancing/systems/c3_state_sender.cc

Lines changed: 0 additions & 66 deletions
This file was deleted.

0 commit comments

Comments
 (0)