ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

af.villamil231's profile - activity

2021-12-03 01:19:42 -0500 received badge  Nice Answer (source)
2020-02-27 06:31:36 -0500 received badge  Famous Question (source)
2020-01-09 09:51:37 -0500 received badge  Necromancer (source)
2020-01-09 09:51:37 -0500 received badge  Teacher (source)
2019-07-24 04:55:11 -0500 received badge  Notable Question (source)
2019-07-23 04:52:21 -0500 answered a question General understanding of ros-canopen

I don't know if you have already managed to control your motors but I will answer anyway. So... The .eds/.dcf files

2019-07-22 11:58:48 -0500 commented answer motor oscillates after diff_drive_controller configuration

I already solved my problem, you were right Thank you! Actually I have deleted the limits from the URDF but not from the

2019-07-22 11:56:23 -0500 received badge  Supporter (source)
2019-07-22 11:56:19 -0500 marked best answer motor oscillates after diff_drive_controller configuration

Hello,

I have configured the canopen_motor_node of my robot to use a DiffDriveController, but once I start publishing angular velocities in the /cmd_vel topic the movement is not smooth, i.e. the robot turns then stops, then continues the angular movement, then stops and so on. After a while it gets stable.

I thought it could be a problem related to the pid controller embedded inside the motors (Dunkermotoren BG75CI) because the movement seems to be like an underdamped second order response trying to reach the desired velocity value but when I used socketcan_bridge_node to send velocity values it works properly. So now i think it could be related to the differential drive controller or to the frequency of publishing. I put here my controller configuration

# The joint state controller handles publishing transforms for any moving joints
joint_state_controller:
    type: joint_state_controller/JointStateController
    publish_rate: 50

# Differential Controllers ---------------------------------------

diff_drive_controller:
    type: "diff_drive_controller/DiffDriveController"
    left_wheel: 'left_wheel_joint'
    right_wheel: 'right_wheel_joint'
    publish_rate: 1000.0
    pose_covariance_diagonal: [0.001, 0.001, 1000000.0, 1000000.0, 1000000.0, 1000.0]
    twist_covariance_diagonal: [0.001, 0.001, 1000000.0, 1000000.0, 1000000.0, 1000.0]
    wheel_separation: 0.60125
    wheel_radius: 0.1

    required_drive_mode: 2

    # Wheel separation and radius multipliers
    wheel_separation_multiplier: 1.0
    wheel_radius_multiplier: 1.0

    # Velocity commands timeout [s]
    cmd_vel_timeout: 0.25

    # Base frame_id
    base_frame_id: base_link

    # Velocity and acceleration limits
    linear:
      x:
        has_velocity_limits    : true
        max_velocity           : 4.0  # m/s
        min_velocity           : -4.0 # m/s
        has_acceleration_limits: true
        max_acceleration       : 1  # m/s^2
        min_acceleration       : -1 # m/s^2
        has_jerk_limits        : true
        max_jerk               : 5.0  # m/s^3
    angular:
      z:
        has_velocity_limits    : true
        max_velocity           : 3  # rad/s
        has_acceleration_limits: true
        max_acceleration       : 1  # rad/s^2
        has_jerk_limits        : true
        max_jerk               : 1  # rad/s^3

Also my canopen configuration

bus:
  device: can0
  loopback: false
  driver_plugin: can::SocketCANInterface
  master_allocator: canopen::SimpleMaster::Allocator

sync:
  interval_ms: 0 # set to 0 to disable sync
  update_ms: 10 #update interval of control loop, must be set explecitly if sync is disabled
  overflow: 0 # overflow sync counter at value or do not set it (0, default)
# heartbeat: # simple heartbeat producer, optional!
  # rate: 20 # heartbeat rate
  # msg: "77f#05" # message to send, cansend format: heartbeat of node 127 with status 5=Started

# struct syntax
nodes:
  node1:
    id: 1
    eds_pkg: bluerobot_basic # optionals package  name for relative path
    name: right_wheel_joint
    eds_file: "/eds/Dunker_BG75mi.eds" # path to EDS/DCF file

  node2:
    id: 2
    eds_pkg: bluerobot_basic
    name: left_wheel_joint # optional name
    eds_file: "/eds/Dunker_BG75mi.eds" # absolute name
    dcf_overlay:
        "4911sub1" : "0x1B"   #Reverse flag

use_realtime_period: true

defaults:
  motor_allocator: canopen::Motor402::Allocator # select allocator for motor layer
  motor_layer: # settings passed to motor layer (plugin-specific)
    switching_state: 5 # (Operation_Enable), state for mode switching
  pos_from_device: "(obj6063*2*pi)/(4096*23)" # actual position [m] -> rad
  vel_to_device: "rint(23*(vel*60/(2*pi)))" # rad/s -> rev/min
  vel_from_device: "(obj606C*2*pi)/(60*23)" # actual velocity [rev/min] -> rad/s
#  pos_to_device: "rint(rad2deg(pos)*1000)" # rad -> m
#  eff_to_device: "rint(eff)" # just round to integer
#  eff_from_device: "0" # unset

Edit1:

I also let you the EDS dictionary of my motors.

Dictionary object

Edit 2:

I plot the target velocity value, the actual velocity ... (more)

2019-07-22 11:56:19 -0500 received badge  Scholar (source)
2019-07-18 05:13:38 -0500 edited question motor oscillates after diff_drive_controller configuration

motor oscillates after diff_drive_controller configuration Hello, I have configured the canopen_motor_node of my robot

2019-07-18 05:12:36 -0500 edited question motor oscillates after diff_drive_controller configuration

motor oscillates after diff_drive_controller configuration Hello, I have configured the canopen_motor_node of my robot

2019-07-16 08:30:41 -0500 received badge  Popular Question (source)
2019-07-10 05:42:58 -0500 commented question motor oscillates after diff_drive_controller configuration

Yes! Thank you Mathias. I updated the post with the URDF directory. The joints are in the blue_wheel.urdf

2019-07-10 05:27:28 -0500 commented question motor oscillates after diff_drive_controller configuration

Yes! Thank you Mathias. I updated the post with the URDF directory.

2019-07-10 05:25:41 -0500 edited question motor oscillates after diff_drive_controller configuration

motor oscillates after diff_drive_controller configuration Hello, I have configured the canopen_motor_node of my robot

2019-07-09 03:33:18 -0500 edited question motor oscillates after diff_drive_controller configuration

motor oscillates after diff_drive_controller configuration Hello, I have configured the canopen_motor_node of my robot

2019-07-08 03:36:23 -0500 edited question motor oscillates after diff_drive_controller configuration

motor oscillates after diff_drive_controller configuration Hello, I have configured the canopen_motor_node of my robot

2019-07-08 03:36:23 -0500 received badge  Editor (source)
2019-07-08 03:31:34 -0500 edited question motor oscillates after diff_drive_controller configuration

motor oscillates after diff_drive_controller configuration Hello, I have configured the canopen_motor_node of my robot

2019-07-03 09:40:59 -0500 asked a question motor oscillates after diff_drive_controller configuration

motor oscillates after diff_drive_controller configuration Hello, I have configured the canopen_motor_node of my robot

2019-05-03 12:03:10 -0500 commented answer Send data thanks to PDO protocol

Hello, how do you configure the mapping inside the EDS file? Once configured, to send a PDO you still have to use the sr

2019-05-03 11:50:19 -0500 commented answer Send data thanks to PDO protocol

Hello, how do you configure the mapping inside the EDS file? Once configured, to send a PDO you still have to use the sr

2019-04-30 02:35:14 -0500 received badge  Enthusiast
2019-04-29 02:30:16 -0500 received badge  Popular Question (source)
2019-04-26 09:54:21 -0500 commented question How to use ros_canopen pkg?

Hey did you find an answer? I have the same issue with different motors and the same usb-can converter. I was reading th

2019-04-23 03:54:41 -0500 asked a question Reading a topic inside a service call

Reading a topic inside a service call Hello! I want to implement a service that when called read the position of the rob