|
furuta_pendulum_hardware package from furuta_pendulum repofuruta_pendulum_bringup furuta_pendulum_control_toolbox furuta_pendulum_de furuta_pendulum_description furuta_pendulum_drake furuta_pendulum_gazebo furuta_pendulum_hardware furuta_pendulum_model furuta_pendulum_ocs2 furuta_pendulum_ocs2_ros furuta_pendulum_rl |
ROS Distro
|
Package Summary
| Tags | No category tags. |
| Version | 0.0.1 |
| License | GPLv3 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | LQR, MPC and DRL approaches to control the Furuta pendulum. |
| Checkout URI | https://github.com/macstepien/furuta_pendulum.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2025-09-23 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Tags | control robotics ros inverted-pendulum |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Maciej Stępień
Authors
- Maciej Stępień
Setup
pip install odrive==0.5.1
echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="1209", ATTR{idProduct}=="0d[0-9][0-9]", MODE="0666"' | sudo tee /etc/udev/rules.d/91-odrive.rules
sudo udevadm control --reload-rules
sudo udevadm trigger
export PATH=$PATH:~/.local/bin
pip install ipython==8.10
Motor configuration
odrv0.erase_configuration()
odrv0.config.brake_resistance=2.0
odrv0.axis0.controller.config.vel_limit = 40.0
odrv0.axis0.motor.config.current_lim = 12.0
odrv0.axis0.motor.config.pole_pairs = 7
odrv0.axis0.motor.config.torque_constant = 8.27/80.0
odrv0.axis0.motor.config.motor_type = MOTOR_TYPE_GIMBAL
odrv0.axis0.motor.config.calibration_current = 1.0
odrv0.axis0.config.calibration_lockin.current = 1.0
odrv0.axis0.encoder.config.bandwidth = 1000.0
odrv0.axis1.encoder.config.bandwidth = 1000.0
odrv0.axis0.encoder.config.cpr = 8192
odrv0.axis0.encoder.config.use_index = True
odrv0.axis0.requested_state = AXIS_STATE_FULL_CALIBRATION_SEQUENCE
odrv0.axis0.encoder.config.pre_calibrated = True
odrv0.axis0.motor.config.pre_calibrated = True
odrv0.axis0.config.startup_encoder_index_search = True
odrv0.save_configuration()
dump_errors(odrv0)
odrv0.axis0.controller.config.pos_gain = 35.0
odrv0.axis0.controller.config.vel_gain = 0.14083333313465118
odrv0.axis0.controller.config.vel_integrator_gain = 7.041666507720947
IMPORTANT - don’t copy all commands at once, do it one after the other
odrv0.axis0.controller.config.control_mode = CONTROL_MODE_POSITION_CONTROL
odrv0.axis0.controller.config.input_mode = INPUT_MODE_PASSTHROUGH
odrv0.axis0.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL
odrv0.axis0.controller.input_pos = 0.0
odrv0.axis0.controller.start_anticogging_calibration()
import matplotlib
matplotlib.use('TkAgg')
start_liveplotter(lambda:[odrv0.axis0.encoder.pos_estimate, odrv0.axis0.controller.pos_setpoint])
Wait until odrv0.axis0.controller.config.anticogging.calib_anticogging == False
odrv0.axis0.controller.config.anticogging.pre_calibrated = True
Additionally can be checked odrv0.axis0.controller.config.anticogging.anticogging_enabled
odrv0.save_configuration()
Configuration is finished.
Usage
``` odrv0.axis0.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL odrv0.axis0.controller.config.control_mode = CONTROL_MODE_TORQUE_CONTROL odrv0.axis0.controller.input_torque = 0.0
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| launch | |
| launch_ros | |
| xacro | |
| robot_state_publisher |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged furuta_pendulum_hardware at Robotics Stack Exchange
|
furuta_pendulum_hardware package from furuta_pendulum repofuruta_pendulum_bringup furuta_pendulum_control_toolbox furuta_pendulum_de furuta_pendulum_description furuta_pendulum_drake furuta_pendulum_gazebo furuta_pendulum_hardware furuta_pendulum_model furuta_pendulum_ocs2 furuta_pendulum_ocs2_ros furuta_pendulum_rl |
ROS Distro
|
Package Summary
| Tags | No category tags. |
| Version | 0.0.1 |
| License | GPLv3 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | LQR, MPC and DRL approaches to control the Furuta pendulum. |
| Checkout URI | https://github.com/macstepien/furuta_pendulum.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2025-09-23 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Tags | control robotics ros inverted-pendulum |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Maciej Stępień
Authors
- Maciej Stępień
Setup
pip install odrive==0.5.1
echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="1209", ATTR{idProduct}=="0d[0-9][0-9]", MODE="0666"' | sudo tee /etc/udev/rules.d/91-odrive.rules
sudo udevadm control --reload-rules
sudo udevadm trigger
export PATH=$PATH:~/.local/bin
pip install ipython==8.10
Motor configuration
odrv0.erase_configuration()
odrv0.config.brake_resistance=2.0
odrv0.axis0.controller.config.vel_limit = 40.0
odrv0.axis0.motor.config.current_lim = 12.0
odrv0.axis0.motor.config.pole_pairs = 7
odrv0.axis0.motor.config.torque_constant = 8.27/80.0
odrv0.axis0.motor.config.motor_type = MOTOR_TYPE_GIMBAL
odrv0.axis0.motor.config.calibration_current = 1.0
odrv0.axis0.config.calibration_lockin.current = 1.0
odrv0.axis0.encoder.config.bandwidth = 1000.0
odrv0.axis1.encoder.config.bandwidth = 1000.0
odrv0.axis0.encoder.config.cpr = 8192
odrv0.axis0.encoder.config.use_index = True
odrv0.axis0.requested_state = AXIS_STATE_FULL_CALIBRATION_SEQUENCE
odrv0.axis0.encoder.config.pre_calibrated = True
odrv0.axis0.motor.config.pre_calibrated = True
odrv0.axis0.config.startup_encoder_index_search = True
odrv0.save_configuration()
dump_errors(odrv0)
odrv0.axis0.controller.config.pos_gain = 35.0
odrv0.axis0.controller.config.vel_gain = 0.14083333313465118
odrv0.axis0.controller.config.vel_integrator_gain = 7.041666507720947
IMPORTANT - don’t copy all commands at once, do it one after the other
odrv0.axis0.controller.config.control_mode = CONTROL_MODE_POSITION_CONTROL
odrv0.axis0.controller.config.input_mode = INPUT_MODE_PASSTHROUGH
odrv0.axis0.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL
odrv0.axis0.controller.input_pos = 0.0
odrv0.axis0.controller.start_anticogging_calibration()
import matplotlib
matplotlib.use('TkAgg')
start_liveplotter(lambda:[odrv0.axis0.encoder.pos_estimate, odrv0.axis0.controller.pos_setpoint])
Wait until odrv0.axis0.controller.config.anticogging.calib_anticogging == False
odrv0.axis0.controller.config.anticogging.pre_calibrated = True
Additionally can be checked odrv0.axis0.controller.config.anticogging.anticogging_enabled
odrv0.save_configuration()
Configuration is finished.
Usage
``` odrv0.axis0.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL odrv0.axis0.controller.config.control_mode = CONTROL_MODE_TORQUE_CONTROL odrv0.axis0.controller.input_torque = 0.0
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| launch | |
| launch_ros | |
| xacro | |
| robot_state_publisher |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged furuta_pendulum_hardware at Robotics Stack Exchange
|
furuta_pendulum_hardware package from furuta_pendulum repofuruta_pendulum_bringup furuta_pendulum_control_toolbox furuta_pendulum_de furuta_pendulum_description furuta_pendulum_drake furuta_pendulum_gazebo furuta_pendulum_hardware furuta_pendulum_model furuta_pendulum_ocs2 furuta_pendulum_ocs2_ros furuta_pendulum_rl |
ROS Distro
|
Package Summary
| Tags | No category tags. |
| Version | 0.0.1 |
| License | GPLv3 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | LQR, MPC and DRL approaches to control the Furuta pendulum. |
| Checkout URI | https://github.com/macstepien/furuta_pendulum.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2025-09-23 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Tags | control robotics ros inverted-pendulum |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Maciej Stępień
Authors
- Maciej Stępień
Setup
pip install odrive==0.5.1
echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="1209", ATTR{idProduct}=="0d[0-9][0-9]", MODE="0666"' | sudo tee /etc/udev/rules.d/91-odrive.rules
sudo udevadm control --reload-rules
sudo udevadm trigger
export PATH=$PATH:~/.local/bin
pip install ipython==8.10
Motor configuration
odrv0.erase_configuration()
odrv0.config.brake_resistance=2.0
odrv0.axis0.controller.config.vel_limit = 40.0
odrv0.axis0.motor.config.current_lim = 12.0
odrv0.axis0.motor.config.pole_pairs = 7
odrv0.axis0.motor.config.torque_constant = 8.27/80.0
odrv0.axis0.motor.config.motor_type = MOTOR_TYPE_GIMBAL
odrv0.axis0.motor.config.calibration_current = 1.0
odrv0.axis0.config.calibration_lockin.current = 1.0
odrv0.axis0.encoder.config.bandwidth = 1000.0
odrv0.axis1.encoder.config.bandwidth = 1000.0
odrv0.axis0.encoder.config.cpr = 8192
odrv0.axis0.encoder.config.use_index = True
odrv0.axis0.requested_state = AXIS_STATE_FULL_CALIBRATION_SEQUENCE
odrv0.axis0.encoder.config.pre_calibrated = True
odrv0.axis0.motor.config.pre_calibrated = True
odrv0.axis0.config.startup_encoder_index_search = True
odrv0.save_configuration()
dump_errors(odrv0)
odrv0.axis0.controller.config.pos_gain = 35.0
odrv0.axis0.controller.config.vel_gain = 0.14083333313465118
odrv0.axis0.controller.config.vel_integrator_gain = 7.041666507720947
IMPORTANT - don’t copy all commands at once, do it one after the other
odrv0.axis0.controller.config.control_mode = CONTROL_MODE_POSITION_CONTROL
odrv0.axis0.controller.config.input_mode = INPUT_MODE_PASSTHROUGH
odrv0.axis0.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL
odrv0.axis0.controller.input_pos = 0.0
odrv0.axis0.controller.start_anticogging_calibration()
import matplotlib
matplotlib.use('TkAgg')
start_liveplotter(lambda:[odrv0.axis0.encoder.pos_estimate, odrv0.axis0.controller.pos_setpoint])
Wait until odrv0.axis0.controller.config.anticogging.calib_anticogging == False
odrv0.axis0.controller.config.anticogging.pre_calibrated = True
Additionally can be checked odrv0.axis0.controller.config.anticogging.anticogging_enabled
odrv0.save_configuration()
Configuration is finished.
Usage
``` odrv0.axis0.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL odrv0.axis0.controller.config.control_mode = CONTROL_MODE_TORQUE_CONTROL odrv0.axis0.controller.input_torque = 0.0
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| launch | |
| launch_ros | |
| xacro | |
| robot_state_publisher |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged furuta_pendulum_hardware at Robotics Stack Exchange
|
furuta_pendulum_hardware package from furuta_pendulum repofuruta_pendulum_bringup furuta_pendulum_control_toolbox furuta_pendulum_de furuta_pendulum_description furuta_pendulum_drake furuta_pendulum_gazebo furuta_pendulum_hardware furuta_pendulum_model furuta_pendulum_ocs2 furuta_pendulum_ocs2_ros furuta_pendulum_rl |
ROS Distro
|
Package Summary
| Tags | No category tags. |
| Version | 0.0.1 |
| License | GPLv3 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | LQR, MPC and DRL approaches to control the Furuta pendulum. |
| Checkout URI | https://github.com/macstepien/furuta_pendulum.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2025-09-23 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Tags | control robotics ros inverted-pendulum |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Maciej Stępień
Authors
- Maciej Stępień
Setup
pip install odrive==0.5.1
echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="1209", ATTR{idProduct}=="0d[0-9][0-9]", MODE="0666"' | sudo tee /etc/udev/rules.d/91-odrive.rules
sudo udevadm control --reload-rules
sudo udevadm trigger
export PATH=$PATH:~/.local/bin
pip install ipython==8.10
Motor configuration
odrv0.erase_configuration()
odrv0.config.brake_resistance=2.0
odrv0.axis0.controller.config.vel_limit = 40.0
odrv0.axis0.motor.config.current_lim = 12.0
odrv0.axis0.motor.config.pole_pairs = 7
odrv0.axis0.motor.config.torque_constant = 8.27/80.0
odrv0.axis0.motor.config.motor_type = MOTOR_TYPE_GIMBAL
odrv0.axis0.motor.config.calibration_current = 1.0
odrv0.axis0.config.calibration_lockin.current = 1.0
odrv0.axis0.encoder.config.bandwidth = 1000.0
odrv0.axis1.encoder.config.bandwidth = 1000.0
odrv0.axis0.encoder.config.cpr = 8192
odrv0.axis0.encoder.config.use_index = True
odrv0.axis0.requested_state = AXIS_STATE_FULL_CALIBRATION_SEQUENCE
odrv0.axis0.encoder.config.pre_calibrated = True
odrv0.axis0.motor.config.pre_calibrated = True
odrv0.axis0.config.startup_encoder_index_search = True
odrv0.save_configuration()
dump_errors(odrv0)
odrv0.axis0.controller.config.pos_gain = 35.0
odrv0.axis0.controller.config.vel_gain = 0.14083333313465118
odrv0.axis0.controller.config.vel_integrator_gain = 7.041666507720947
IMPORTANT - don’t copy all commands at once, do it one after the other
odrv0.axis0.controller.config.control_mode = CONTROL_MODE_POSITION_CONTROL
odrv0.axis0.controller.config.input_mode = INPUT_MODE_PASSTHROUGH
odrv0.axis0.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL
odrv0.axis0.controller.input_pos = 0.0
odrv0.axis0.controller.start_anticogging_calibration()
import matplotlib
matplotlib.use('TkAgg')
start_liveplotter(lambda:[odrv0.axis0.encoder.pos_estimate, odrv0.axis0.controller.pos_setpoint])
Wait until odrv0.axis0.controller.config.anticogging.calib_anticogging == False
odrv0.axis0.controller.config.anticogging.pre_calibrated = True
Additionally can be checked odrv0.axis0.controller.config.anticogging.anticogging_enabled
odrv0.save_configuration()
Configuration is finished.
Usage
``` odrv0.axis0.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL odrv0.axis0.controller.config.control_mode = CONTROL_MODE_TORQUE_CONTROL odrv0.axis0.controller.input_torque = 0.0
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| launch | |
| launch_ros | |
| xacro | |
| robot_state_publisher |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged furuta_pendulum_hardware at Robotics Stack Exchange
|
furuta_pendulum_hardware package from furuta_pendulum repofuruta_pendulum_bringup furuta_pendulum_control_toolbox furuta_pendulum_de furuta_pendulum_description furuta_pendulum_drake furuta_pendulum_gazebo furuta_pendulum_hardware furuta_pendulum_model furuta_pendulum_ocs2 furuta_pendulum_ocs2_ros furuta_pendulum_rl |
ROS Distro
|
Package Summary
| Tags | No category tags. |
| Version | 0.0.1 |
| License | GPLv3 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | LQR, MPC and DRL approaches to control the Furuta pendulum. |
| Checkout URI | https://github.com/macstepien/furuta_pendulum.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2025-09-23 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Tags | control robotics ros inverted-pendulum |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Maciej Stępień
Authors
- Maciej Stępień
Setup
pip install odrive==0.5.1
echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="1209", ATTR{idProduct}=="0d[0-9][0-9]", MODE="0666"' | sudo tee /etc/udev/rules.d/91-odrive.rules
sudo udevadm control --reload-rules
sudo udevadm trigger
export PATH=$PATH:~/.local/bin
pip install ipython==8.10
Motor configuration
odrv0.erase_configuration()
odrv0.config.brake_resistance=2.0
odrv0.axis0.controller.config.vel_limit = 40.0
odrv0.axis0.motor.config.current_lim = 12.0
odrv0.axis0.motor.config.pole_pairs = 7
odrv0.axis0.motor.config.torque_constant = 8.27/80.0
odrv0.axis0.motor.config.motor_type = MOTOR_TYPE_GIMBAL
odrv0.axis0.motor.config.calibration_current = 1.0
odrv0.axis0.config.calibration_lockin.current = 1.0
odrv0.axis0.encoder.config.bandwidth = 1000.0
odrv0.axis1.encoder.config.bandwidth = 1000.0
odrv0.axis0.encoder.config.cpr = 8192
odrv0.axis0.encoder.config.use_index = True
odrv0.axis0.requested_state = AXIS_STATE_FULL_CALIBRATION_SEQUENCE
odrv0.axis0.encoder.config.pre_calibrated = True
odrv0.axis0.motor.config.pre_calibrated = True
odrv0.axis0.config.startup_encoder_index_search = True
odrv0.save_configuration()
dump_errors(odrv0)
odrv0.axis0.controller.config.pos_gain = 35.0
odrv0.axis0.controller.config.vel_gain = 0.14083333313465118
odrv0.axis0.controller.config.vel_integrator_gain = 7.041666507720947
IMPORTANT - don’t copy all commands at once, do it one after the other
odrv0.axis0.controller.config.control_mode = CONTROL_MODE_POSITION_CONTROL
odrv0.axis0.controller.config.input_mode = INPUT_MODE_PASSTHROUGH
odrv0.axis0.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL
odrv0.axis0.controller.input_pos = 0.0
odrv0.axis0.controller.start_anticogging_calibration()
import matplotlib
matplotlib.use('TkAgg')
start_liveplotter(lambda:[odrv0.axis0.encoder.pos_estimate, odrv0.axis0.controller.pos_setpoint])
Wait until odrv0.axis0.controller.config.anticogging.calib_anticogging == False
odrv0.axis0.controller.config.anticogging.pre_calibrated = True
Additionally can be checked odrv0.axis0.controller.config.anticogging.anticogging_enabled
odrv0.save_configuration()
Configuration is finished.
Usage
``` odrv0.axis0.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL odrv0.axis0.controller.config.control_mode = CONTROL_MODE_TORQUE_CONTROL odrv0.axis0.controller.input_torque = 0.0
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| launch | |
| launch_ros | |
| xacro | |
| robot_state_publisher |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged furuta_pendulum_hardware at Robotics Stack Exchange
|
furuta_pendulum_hardware package from furuta_pendulum repofuruta_pendulum_bringup furuta_pendulum_control_toolbox furuta_pendulum_de furuta_pendulum_description furuta_pendulum_drake furuta_pendulum_gazebo furuta_pendulum_hardware furuta_pendulum_model furuta_pendulum_ocs2 furuta_pendulum_ocs2_ros furuta_pendulum_rl |
ROS Distro
|
Package Summary
| Tags | No category tags. |
| Version | 0.0.1 |
| License | GPLv3 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | LQR, MPC and DRL approaches to control the Furuta pendulum. |
| Checkout URI | https://github.com/macstepien/furuta_pendulum.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2025-09-23 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Tags | control robotics ros inverted-pendulum |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Maciej Stępień
Authors
- Maciej Stępień
Setup
pip install odrive==0.5.1
echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="1209", ATTR{idProduct}=="0d[0-9][0-9]", MODE="0666"' | sudo tee /etc/udev/rules.d/91-odrive.rules
sudo udevadm control --reload-rules
sudo udevadm trigger
export PATH=$PATH:~/.local/bin
pip install ipython==8.10
Motor configuration
odrv0.erase_configuration()
odrv0.config.brake_resistance=2.0
odrv0.axis0.controller.config.vel_limit = 40.0
odrv0.axis0.motor.config.current_lim = 12.0
odrv0.axis0.motor.config.pole_pairs = 7
odrv0.axis0.motor.config.torque_constant = 8.27/80.0
odrv0.axis0.motor.config.motor_type = MOTOR_TYPE_GIMBAL
odrv0.axis0.motor.config.calibration_current = 1.0
odrv0.axis0.config.calibration_lockin.current = 1.0
odrv0.axis0.encoder.config.bandwidth = 1000.0
odrv0.axis1.encoder.config.bandwidth = 1000.0
odrv0.axis0.encoder.config.cpr = 8192
odrv0.axis0.encoder.config.use_index = True
odrv0.axis0.requested_state = AXIS_STATE_FULL_CALIBRATION_SEQUENCE
odrv0.axis0.encoder.config.pre_calibrated = True
odrv0.axis0.motor.config.pre_calibrated = True
odrv0.axis0.config.startup_encoder_index_search = True
odrv0.save_configuration()
dump_errors(odrv0)
odrv0.axis0.controller.config.pos_gain = 35.0
odrv0.axis0.controller.config.vel_gain = 0.14083333313465118
odrv0.axis0.controller.config.vel_integrator_gain = 7.041666507720947
IMPORTANT - don’t copy all commands at once, do it one after the other
odrv0.axis0.controller.config.control_mode = CONTROL_MODE_POSITION_CONTROL
odrv0.axis0.controller.config.input_mode = INPUT_MODE_PASSTHROUGH
odrv0.axis0.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL
odrv0.axis0.controller.input_pos = 0.0
odrv0.axis0.controller.start_anticogging_calibration()
import matplotlib
matplotlib.use('TkAgg')
start_liveplotter(lambda:[odrv0.axis0.encoder.pos_estimate, odrv0.axis0.controller.pos_setpoint])
Wait until odrv0.axis0.controller.config.anticogging.calib_anticogging == False
odrv0.axis0.controller.config.anticogging.pre_calibrated = True
Additionally can be checked odrv0.axis0.controller.config.anticogging.anticogging_enabled
odrv0.save_configuration()
Configuration is finished.
Usage
``` odrv0.axis0.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL odrv0.axis0.controller.config.control_mode = CONTROL_MODE_TORQUE_CONTROL odrv0.axis0.controller.input_torque = 0.0
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| launch | |
| launch_ros | |
| xacro | |
| robot_state_publisher |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged furuta_pendulum_hardware at Robotics Stack Exchange
|
furuta_pendulum_hardware package from furuta_pendulum repofuruta_pendulum_bringup furuta_pendulum_control_toolbox furuta_pendulum_de furuta_pendulum_description furuta_pendulum_drake furuta_pendulum_gazebo furuta_pendulum_hardware furuta_pendulum_model furuta_pendulum_ocs2 furuta_pendulum_ocs2_ros furuta_pendulum_rl |
ROS Distro
|
Package Summary
| Tags | No category tags. |
| Version | 0.0.1 |
| License | GPLv3 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | LQR, MPC and DRL approaches to control the Furuta pendulum. |
| Checkout URI | https://github.com/macstepien/furuta_pendulum.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2025-09-23 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Tags | control robotics ros inverted-pendulum |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Maciej Stępień
Authors
- Maciej Stępień
Setup
pip install odrive==0.5.1
echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="1209", ATTR{idProduct}=="0d[0-9][0-9]", MODE="0666"' | sudo tee /etc/udev/rules.d/91-odrive.rules
sudo udevadm control --reload-rules
sudo udevadm trigger
export PATH=$PATH:~/.local/bin
pip install ipython==8.10
Motor configuration
odrv0.erase_configuration()
odrv0.config.brake_resistance=2.0
odrv0.axis0.controller.config.vel_limit = 40.0
odrv0.axis0.motor.config.current_lim = 12.0
odrv0.axis0.motor.config.pole_pairs = 7
odrv0.axis0.motor.config.torque_constant = 8.27/80.0
odrv0.axis0.motor.config.motor_type = MOTOR_TYPE_GIMBAL
odrv0.axis0.motor.config.calibration_current = 1.0
odrv0.axis0.config.calibration_lockin.current = 1.0
odrv0.axis0.encoder.config.bandwidth = 1000.0
odrv0.axis1.encoder.config.bandwidth = 1000.0
odrv0.axis0.encoder.config.cpr = 8192
odrv0.axis0.encoder.config.use_index = True
odrv0.axis0.requested_state = AXIS_STATE_FULL_CALIBRATION_SEQUENCE
odrv0.axis0.encoder.config.pre_calibrated = True
odrv0.axis0.motor.config.pre_calibrated = True
odrv0.axis0.config.startup_encoder_index_search = True
odrv0.save_configuration()
dump_errors(odrv0)
odrv0.axis0.controller.config.pos_gain = 35.0
odrv0.axis0.controller.config.vel_gain = 0.14083333313465118
odrv0.axis0.controller.config.vel_integrator_gain = 7.041666507720947
IMPORTANT - don’t copy all commands at once, do it one after the other
odrv0.axis0.controller.config.control_mode = CONTROL_MODE_POSITION_CONTROL
odrv0.axis0.controller.config.input_mode = INPUT_MODE_PASSTHROUGH
odrv0.axis0.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL
odrv0.axis0.controller.input_pos = 0.0
odrv0.axis0.controller.start_anticogging_calibration()
import matplotlib
matplotlib.use('TkAgg')
start_liveplotter(lambda:[odrv0.axis0.encoder.pos_estimate, odrv0.axis0.controller.pos_setpoint])
Wait until odrv0.axis0.controller.config.anticogging.calib_anticogging == False
odrv0.axis0.controller.config.anticogging.pre_calibrated = True
Additionally can be checked odrv0.axis0.controller.config.anticogging.anticogging_enabled
odrv0.save_configuration()
Configuration is finished.
Usage
``` odrv0.axis0.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL odrv0.axis0.controller.config.control_mode = CONTROL_MODE_TORQUE_CONTROL odrv0.axis0.controller.input_torque = 0.0
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| launch | |
| launch_ros | |
| xacro | |
| robot_state_publisher |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged furuta_pendulum_hardware at Robotics Stack Exchange
|
furuta_pendulum_hardware package from furuta_pendulum repofuruta_pendulum_bringup furuta_pendulum_control_toolbox furuta_pendulum_de furuta_pendulum_description furuta_pendulum_drake furuta_pendulum_gazebo furuta_pendulum_hardware furuta_pendulum_model furuta_pendulum_ocs2 furuta_pendulum_ocs2_ros furuta_pendulum_rl |
ROS Distro
|
Package Summary
| Tags | No category tags. |
| Version | 0.0.1 |
| License | GPLv3 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | LQR, MPC and DRL approaches to control the Furuta pendulum. |
| Checkout URI | https://github.com/macstepien/furuta_pendulum.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2025-09-23 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Tags | control robotics ros inverted-pendulum |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Maciej Stępień
Authors
- Maciej Stępień
Setup
pip install odrive==0.5.1
echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="1209", ATTR{idProduct}=="0d[0-9][0-9]", MODE="0666"' | sudo tee /etc/udev/rules.d/91-odrive.rules
sudo udevadm control --reload-rules
sudo udevadm trigger
export PATH=$PATH:~/.local/bin
pip install ipython==8.10
Motor configuration
odrv0.erase_configuration()
odrv0.config.brake_resistance=2.0
odrv0.axis0.controller.config.vel_limit = 40.0
odrv0.axis0.motor.config.current_lim = 12.0
odrv0.axis0.motor.config.pole_pairs = 7
odrv0.axis0.motor.config.torque_constant = 8.27/80.0
odrv0.axis0.motor.config.motor_type = MOTOR_TYPE_GIMBAL
odrv0.axis0.motor.config.calibration_current = 1.0
odrv0.axis0.config.calibration_lockin.current = 1.0
odrv0.axis0.encoder.config.bandwidth = 1000.0
odrv0.axis1.encoder.config.bandwidth = 1000.0
odrv0.axis0.encoder.config.cpr = 8192
odrv0.axis0.encoder.config.use_index = True
odrv0.axis0.requested_state = AXIS_STATE_FULL_CALIBRATION_SEQUENCE
odrv0.axis0.encoder.config.pre_calibrated = True
odrv0.axis0.motor.config.pre_calibrated = True
odrv0.axis0.config.startup_encoder_index_search = True
odrv0.save_configuration()
dump_errors(odrv0)
odrv0.axis0.controller.config.pos_gain = 35.0
odrv0.axis0.controller.config.vel_gain = 0.14083333313465118
odrv0.axis0.controller.config.vel_integrator_gain = 7.041666507720947
IMPORTANT - don’t copy all commands at once, do it one after the other
odrv0.axis0.controller.config.control_mode = CONTROL_MODE_POSITION_CONTROL
odrv0.axis0.controller.config.input_mode = INPUT_MODE_PASSTHROUGH
odrv0.axis0.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL
odrv0.axis0.controller.input_pos = 0.0
odrv0.axis0.controller.start_anticogging_calibration()
import matplotlib
matplotlib.use('TkAgg')
start_liveplotter(lambda:[odrv0.axis0.encoder.pos_estimate, odrv0.axis0.controller.pos_setpoint])
Wait until odrv0.axis0.controller.config.anticogging.calib_anticogging == False
odrv0.axis0.controller.config.anticogging.pre_calibrated = True
Additionally can be checked odrv0.axis0.controller.config.anticogging.anticogging_enabled
odrv0.save_configuration()
Configuration is finished.
Usage
``` odrv0.axis0.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL odrv0.axis0.controller.config.control_mode = CONTROL_MODE_TORQUE_CONTROL odrv0.axis0.controller.input_torque = 0.0
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| launch | |
| launch_ros | |
| xacro | |
| robot_state_publisher |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged furuta_pendulum_hardware at Robotics Stack Exchange
|
furuta_pendulum_hardware package from furuta_pendulum repofuruta_pendulum_bringup furuta_pendulum_control_toolbox furuta_pendulum_de furuta_pendulum_description furuta_pendulum_drake furuta_pendulum_gazebo furuta_pendulum_hardware furuta_pendulum_model furuta_pendulum_ocs2 furuta_pendulum_ocs2_ros furuta_pendulum_rl |
ROS Distro
|
Package Summary
| Tags | No category tags. |
| Version | 0.0.1 |
| License | GPLv3 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | LQR, MPC and DRL approaches to control the Furuta pendulum. |
| Checkout URI | https://github.com/macstepien/furuta_pendulum.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2025-09-23 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Tags | control robotics ros inverted-pendulum |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Maciej Stępień
Authors
- Maciej Stępień
Setup
pip install odrive==0.5.1
echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="1209", ATTR{idProduct}=="0d[0-9][0-9]", MODE="0666"' | sudo tee /etc/udev/rules.d/91-odrive.rules
sudo udevadm control --reload-rules
sudo udevadm trigger
export PATH=$PATH:~/.local/bin
pip install ipython==8.10
Motor configuration
odrv0.erase_configuration()
odrv0.config.brake_resistance=2.0
odrv0.axis0.controller.config.vel_limit = 40.0
odrv0.axis0.motor.config.current_lim = 12.0
odrv0.axis0.motor.config.pole_pairs = 7
odrv0.axis0.motor.config.torque_constant = 8.27/80.0
odrv0.axis0.motor.config.motor_type = MOTOR_TYPE_GIMBAL
odrv0.axis0.motor.config.calibration_current = 1.0
odrv0.axis0.config.calibration_lockin.current = 1.0
odrv0.axis0.encoder.config.bandwidth = 1000.0
odrv0.axis1.encoder.config.bandwidth = 1000.0
odrv0.axis0.encoder.config.cpr = 8192
odrv0.axis0.encoder.config.use_index = True
odrv0.axis0.requested_state = AXIS_STATE_FULL_CALIBRATION_SEQUENCE
odrv0.axis0.encoder.config.pre_calibrated = True
odrv0.axis0.motor.config.pre_calibrated = True
odrv0.axis0.config.startup_encoder_index_search = True
odrv0.save_configuration()
dump_errors(odrv0)
odrv0.axis0.controller.config.pos_gain = 35.0
odrv0.axis0.controller.config.vel_gain = 0.14083333313465118
odrv0.axis0.controller.config.vel_integrator_gain = 7.041666507720947
IMPORTANT - don’t copy all commands at once, do it one after the other
odrv0.axis0.controller.config.control_mode = CONTROL_MODE_POSITION_CONTROL
odrv0.axis0.controller.config.input_mode = INPUT_MODE_PASSTHROUGH
odrv0.axis0.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL
odrv0.axis0.controller.input_pos = 0.0
odrv0.axis0.controller.start_anticogging_calibration()
import matplotlib
matplotlib.use('TkAgg')
start_liveplotter(lambda:[odrv0.axis0.encoder.pos_estimate, odrv0.axis0.controller.pos_setpoint])
Wait until odrv0.axis0.controller.config.anticogging.calib_anticogging == False
odrv0.axis0.controller.config.anticogging.pre_calibrated = True
Additionally can be checked odrv0.axis0.controller.config.anticogging.anticogging_enabled
odrv0.save_configuration()
Configuration is finished.
Usage
``` odrv0.axis0.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL odrv0.axis0.controller.config.control_mode = CONTROL_MODE_TORQUE_CONTROL odrv0.axis0.controller.input_torque = 0.0
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| launch | |
| launch_ros | |
| xacro | |
| robot_state_publisher |