bringup¶
Top-level launch orchestration for the fishing arm: sim/real switch, ros2_control, and delegation to application packages.
Build type: ament_cmake
Version:
0.0.0License: MIT
Maintainer(s): nzge
Source:
src/bringup/
Launch files¶
robot.launch.py¶
ros2 launch bringup robot.launch.py
Launch argument |
Default |
Description |
|---|---|---|
|
|
Launch MuJoCo simulation (true) or the physical Dynamixel arm (false) |
|
|
Run MuJoCo without the GUI viewer window (sim only) |
|
|
Auto-shutdown the launch after N seconds (0 = until Ctrl-C) |
|
|
Capture diagnostics plots + animation of the run (sim only) |
|
|
Run the motor/sensor bring-up self-test, then shut down |
|
|
Tension controller: admittance (Julie), force_feedback (Chaoyi), or none |
Source: bringup/launch/robot.launch.py
Parameters & configuration¶
controllers.yaml¶
Node controller_manager
Parameter |
Default |
Type |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Node position_trajectory_controller
Parameter |
Default |
Type |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Node fish_effort_controller
Parameter |
Default |
Type |
|---|---|---|
|
|
|
|
|
|
Node tension_sensor_broadcaster
Parameter |
Default |
Type |
|---|---|---|
|
|
|
|
|
|
Full file
controller_manager:
ros__parameters:
update_rate: 100 # Hz
joint_state_broadcaster:
type: joint_state_broadcaster/JointStateBroadcaster
position_trajectory_controller:
type: joint_trajectory_controller/JointTrajectoryController
# --- Simulation-only controllers (spawned only when use_sim:=true) ---
fish_effort_controller:
type: forward_command_controller/ForwardCommandController
tension_sensor_broadcaster:
type: force_torque_sensor_broadcaster/ForceTorqueSensorBroadcaster
position_trajectory_controller:
ros__parameters:
joints:
- Joint_1
- Joint_2
command_interfaces:
- position
state_interfaces:
- position
- velocity
state_publish_rate: 50.0
action_monitor_rate: 20.0
allow_partial_joints_goal: false
# The fish pulls the line via an effort command on its MuJoCo slide joint.
# fish_agent publishes std_msgs/Float64MultiArray on /fish_effort_controller/commands.
fish_effort_controller:
ros__parameters:
joints:
- fish_swim
interface_name: effort
# Publishes the rod-tip load cell as geometry_msgs/WrenchStamped on
# /tension_sensor_broadcaster/wrench. load_cell converts it to FishingTension.
tension_sensor_broadcaster:
ros__parameters:
sensor_name: tension_sensor
frame_id: rod_tip_link
Source: bringup/config/controllers.yaml
controllers_hw.yaml¶
Node controller_manager
Parameter |
Default |
Type |
|---|---|---|
|
|
|
|
|
|
|
|
|
Node position_trajectory_controller
Parameter |
Default |
Type |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Full file
controller_manager:
ros__parameters:
update_rate: 100 # Hz
joint_state_broadcaster:
type: joint_state_broadcaster/JointStateBroadcaster
position_trajectory_controller:
type: joint_trajectory_controller/JointTrajectoryController
position_trajectory_controller:
ros__parameters:
joints:
- Joint_2
command_interfaces:
- position
state_interfaces:
- position
- velocity
state_publish_rate: 50.0
action_monitor_rate: 20.0
# Control still publishes Joint_1 hold commands; ignore the unconnected base.
allow_partial_joints_goal: true
Source: bringup/config/controllers_hw.yaml
params.yaml¶
Node admittance_controller
Parameter |
Default |
Type |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Node force_feedback_controller
Parameter |
Default |
Type |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Full file
# Shared fishing tension controllers (Julie admittance + Chaoyi force feedback).
# Select at launch: controller_type:=admittance | force_feedback | none
admittance_controller:
ros__parameters:
target_tension: 3.5
safety_tension_limit: 20.0
# 1DOF mode (notebook-equivalent): control pitch_joint only; lock base_joint.
control_dof: 1
pitch_joint: Joint_2
base_joint: Joint_1
joint_1_hold: 1.57 # base_joint lock angle (rad)
# Pitch setpoints (rad). Smaller = rod raised = higher tension.
q_init: 1.745
q_hook: 1.40
q_neutral: 1.605
q_min: 0.10
q_max: 2.20
bite_time: 2.4
hook_duration: 1.2
fsm_enabled: true
tension_filter_alpha: 0.055
control_rate_hz: 50.0
# Julie admittance (virtual mass-spring-damper)
m_v: 0.6
b_v: 5.5
k_v: 20.0
k_f: 8.0
kp_track: 140.0
kd_track: 20.0
ki_track: 0.0
k_g: 9.95
rod_length: 0.185
j_alpha: 0.05
pos_int_limit: 0.15
max_torque: 20.0
force_feedback_controller:
ros__parameters:
target_tension: 3.5
safety_tension_limit: 20.0
control_dof: 1
pitch_joint: Joint_2
base_joint: Joint_1
joint_1_hold: 1.57
q_init: 1.745
q_hook: 1.40
q_neutral: 1.605
q_min: 0.10
q_max: 2.20
bite_time: 2.4
hook_duration: 1.2
fsm_enabled: true
tension_filter_alpha: 0.055
control_rate_hz: 50.0
# Chaoyi asymmetric proportional feedback (tuned for 3.5 N target in MuJoCo)
tension_to_angle_gain: 0.261799 # rad/N (~15 deg/N)
qeq_alpha: 0.04
max_qeq_step: 0.00384 # rad (~0.22 deg)
raise_gain: 1.25
lower_gain: 0.80
Source: bringup/config/params.yaml
params_hw.yaml¶
Node admittance_controller
Parameter |
Default |
Type |
|---|---|---|
|
|
|
|
|
|
|
|
|
Node force_feedback_controller
Parameter |
Default |
Type |
|---|---|---|
|
|
|
|
|
|
|
|
|
Full file
# Hardware bring-up overrides (layered on params.yaml when use_sim:=false).
# Skips the sim-style bite/hook timeline so tension regulation starts immediately.
admittance_controller:
ros__parameters:
fsm_enabled: false
bite_time: 0.0
hook_duration: 0.0
force_feedback_controller:
ros__parameters:
fsm_enabled: false
bite_time: 0.0
hook_duration: 0.0
Source: bringup/config/params_hw.yaml
Dependencies¶
Build tool:
ament_cmakeRuntime:
controlcontroller_managerdescriptiondiagnosticsforce_torque_sensor_broadcasterforward_command_controllerjoint_state_broadcasterjoint_trajectory_controllerplanningrobot_state_publishersensorsxacroTest:
ament_lint_autoament_lint_common