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

JadTawil's profile - activity

2021-12-07 09:04:05 -0500 received badge  Famous Question (source)
2021-11-15 01:28:07 -0500 received badge  Famous Question (source)
2021-09-14 03:05:36 -0500 received badge  Famous Question (source)
2020-12-07 11:12:55 -0500 received badge  Notable Question (source)
2020-11-18 08:20:27 -0500 received badge  Notable Question (source)
2020-10-15 02:47:08 -0500 received badge  Famous Question (source)
2020-09-29 10:20:44 -0500 received badge  Student (source)
2020-09-29 10:20:39 -0500 received badge  Self-Learner (source)
2020-09-29 10:20:39 -0500 received badge  Teacher (source)
2020-09-29 05:59:28 -0500 commented answer transforming linear acceleration - robot_localization

No problem, I will uncomment and try. Another couple questions, can you provide some references for the mathematics inv

2020-09-29 05:59:17 -0500 answered a question transforming linear acceleration - robot_localization

No problem, I will uncomment and try. Another couple questions, can you provide some references for the mathematics inv

2020-09-29 05:58:11 -0500 received badge  Popular Question (source)
2020-09-28 12:42:49 -0500 received badge  Notable Question (source)
2020-09-28 12:42:49 -0500 received badge  Popular Question (source)
2020-09-27 09:32:34 -0500 received badge  Popular Question (source)
2020-09-24 18:18:39 -0500 asked a question linear acceleration transformation in robot_localization package

linear acceleration transformation in robot_localization package While inspecting the robot_localization source code, i

2020-09-24 18:17:24 -0500 asked a question transforming linear acceleration - robot_localization

transforming linear acceleration - robot_localization While inspecting the robot_localization source code, i see the fol

2020-08-31 13:28:07 -0500 received badge  Famous Question (source)
2020-05-19 11:49:37 -0500 received badge  Popular Question (source)
2020-05-19 11:49:37 -0500 received badge  Notable Question (source)
2020-05-02 07:11:34 -0500 received badge  Famous Question (source)
2020-05-01 05:44:19 -0500 received badge  Famous Question (source)
2020-05-01 05:44:19 -0500 received badge  Popular Question (source)
2020-05-01 05:44:19 -0500 received badge  Notable Question (source)
2020-02-19 07:29:05 -0500 marked best answer roscanopen - Transition timeout; Could not enable motor

roscanopen's driver initilization service call is failing with error message:

success: False message: Transition timeout; Could not enable motor

After looking at the source code, it seems like a timeout is occuring when the driver is attempting to change the state of the controller from: Switch_On_Disabled -> Ready_To_Switch_On -> Switched_On -> Operation_Enable

It is timing out when trying to change the state from Switch_On_Disabled -> Ready_To_Switch_On.

I am able to operate the controller via canbus using the manufacturer's software, and the fact that ros-canopen is able to read the initial state of the controller (Switch_On_Disabled) means that the bus communication is up and running functionally. So i highly doubt this is a hardware issue. The controller im using is a Nanotec N5-5-2 which is DS402.

The steps i took to prepare the driver included changing the control word RPDO transmission type to 1 (every sync), and the status word TPDO transmission type to 1. Also, i added a target velocity RPDO with transmission type 1 and a Current velocity TPDO with transmission type 1 for feedback in order to run the controller in profile velocity mode via ros-canopen.

sudo ip link can0 up type can bitrate 1000000

The baudrate in the controller and Node ID are set to 1Mbps, and 1, respectively (using DIP switches).

The following is the configuration of the driver, and the output of candump after the initialize service is called. I hope someone can spot the issue. I will repeat, transitioning states is functional with the manufacturer's software, but it seems like ros-canopen is failing to get the states changed.

My configuration parameters:

bus:

  device: can0

sync:

  interval_ms: 10

  overflow: 0

defaults:

  eds_pkg: my_pkg

  eds_file: "config/N5-2-2.eds"

  vel_to_device: "rint((vel))"

nodes:

  wheel_joint:

  id: 1

joint_names: [fr_wheel_joint]

joint_state_controller:

  type: joint_state_controller/JointStateController

  publish_rate: 50

wheel_joint_velocity_controller:

  type: velocity_controllers/JointVelocityController

  joint: fr_drive_joint

  required_drive_mode: 3

More importantly, here is the candump output when the initialization service of ros_canopen is called:

can0 000 [2] 82 01

can0 701 [1] 00

can0 601 [8] 2B 17 10 00 00 00 00 00

can0 581 [8] 60 17 10 00 00 00 00 00

can0 000 [2] 01 01

can0 701 [1] 05

can0 181 [3] 40 06 03

can0 281 [4] AC FF FF FF

can0 381 [2] 00 00

can0 481 [4] 00 00 00 00

can0 601 [8] 40 61 60 00 00 00 00 00

can0 581 [8] 4F 61 60 00 03 00 00 00

can0 201 [7] 00 01 03 00 00 00 00

can0 601 [8] 40 61 60 00 00 00 00 00

can0 581 [8] 4F 61 60 00 03 00 00 00

can0 080 [0]

can0 181 [3] 40 06 03

can0 481 [4] 00 00 00 00

can0 601 [8] 40 61 60 00 00 00 00 00

can0 581 [8] 4F 61 60 00 03 00 00 00

can0 201 [7] 06 01 03 00 00 00 00

//This Block Repeats for a certain period

can0 080 [0]

can0 181 [3] 40 ... (more)

2020-01-15 12:06:27 -0500 asked a question Ros-CanOpen Initialization Fails

Ros-CanOpen Initialization Fails Hello, I have a SV2D10-C-CE CanOpen Controller from Applied Motion: https://www.applied

2020-01-14 10:42:17 -0500 commented question ros_canopen driver init failed with Kollmorgen RGM

Hey Jack, Did you end up figuring this out?

2020-01-13 13:22:57 -0500 asked a question Can Not Ready Error

Can Not Ready Error Hello, I am using the SV2D10-C-CE canopen controller from Applied Motion: https://www.applied-motio

2019-12-16 06:07:10 -0500 received badge  Notable Question (source)
2019-11-13 09:38:59 -0500 received badge  Popular Question (source)
2019-10-22 01:38:54 -0500 received badge  Famous Question (source)
2019-08-12 13:10:13 -0500 received badge  Famous Question (source)
2019-08-12 13:09:54 -0500 received badge  Notable Question (source)
2019-07-23 01:48:44 -0500 marked best answer roscanopen + joint_trajectory_controller + Interpolated Position Mode

I would like clarification regarding the control flow that occurs when a joint_trajectory_controller is used with ros-canopen to control motor controllers in Interpolated Position Mode (CanOpen drive mode).

Let's describe the situation. I am actually using three canopen DS402 servomotors to control a Parallel Delta Robot. I am using ROS and will interface ROS with the servo motors using ros-canopen.

the "required_drive_mode" field in the canopen_motor_node configuration is set to 7, to indicate to the joint_trajectory_controller that the canopen controllers are in interpolated position mode.

My understanding is that ros-canopen's control loop is specified by the SYNC interval, which i specify in the canopen_chain_node using the interval_ms parameter.

I would like to define a trajectory for my delta robot, which consists of three axes in interpolated position mode. The canopen controllers only support linear interpolation between setpoints, so the interpolation data records each consist of 1 target position. My confusion arises when thinking about the writing of the setpoints to the interpolation data buffer of the canopen controllers.

When i send the joint_trajectory_controller a trajectory with positions and timestamps (no velocity or acceleration for now), the trajectory controller will write the first position data to the canopen controllers at the specified time in the trajectory message, at the next SYNC interval (as controlled by ros-canopen). The controllers will receive this setpoint, and interpolate between current positon and the setposition and begin motion. In order to have smooth motion between setpoints, i have to load another interpolation data record into the interpolation data buffer before the execution of the current setpoint is complete. The problem, is that the joint_trajectory controller will not write another value to the hardware interface until the setpoint is complete. Would this not create a situation where the axles stop everytime a setpoint is reached and wait a small amount of time to receive another record. How can i get the joint_trajectory_controller to write a bunch of setpoints to the canopen controllers to ensure smooth transition from one linear interpolation to another...

2019-06-21 07:47:06 -0500 received badge  Popular Question (source)
2019-06-21 07:46:56 -0500 received badge  Notable Question (source)
2019-06-21 01:04:52 -0500 received badge  Famous Question (source)
2019-06-21 01:04:52 -0500 received badge  Popular Question (source)
2019-06-21 01:04:52 -0500 received badge  Notable Question (source)
2019-05-29 18:00:43 -0500 edited answer How to implement velocity transformation?

Adapted from another answer https://answers.ros.org/question/196149/how-to-rotate-vector-by-quaternion-in-python/. I use

2019-04-08 01:10:31 -0500 marked best answer GPS + IMU + encoders for robot localization

Hey guys,

I want to fuse gps data i am getting from my piksi multi RTK system, and an IMU, and wheel encoders.

The GPS driver ( http://wiki.ros.org/swiftnav_piksi ) publishes the following:

sensor_msgs::NavSatFix gps/fix; nav_msgs::Odometry gps/rtkfix

the frame_id in the headers of those messages is set to "gps". the child_frame_id in the nav_msgs::Odometry message is not set to anything.

The IMU driver publishes imu/data, with the frame_id being "imu".

I plan on also having wheel encoders spitting out odometry data. I know that for those, the odom message should have a frame_id of "odom", and a child_frame_id of "base_link".

I am confused about how to prepare the data for robot_localization, in terms of frame ids. In the GPS system, the reported gps/rtkfix is the position/velocity of the rover relative the the base station. What should i set the frame_id and child_frame_id to for the RTK GPS? And what should i set the IMU frame_id to be?

Thanks,

2019-03-01 17:12:25 -0500 received badge  Famous Question (source)
2019-03-01 12:35:21 -0500 marked best answer Interpolated Position mode not producing motion

Hello all. I am attempting to run my controller in IP mode using ros-canopen but the motor fails to start motion. I am using a joint_trajectory_controller to command the controller. The controller works as expected in PP and PV modes.

I am troubleshooting by publishing the object 60C1sub1 (interpolation data record) and 6062 (Position demand value).

In PP mode, object 607A updates and 6062 updates to reflect the commanded postion shortly after. The motor moves, as expected.

In IP mode, 60C1sub1 updates as expected when a trajectory is commanded via the joint_trajectory_controller topic interface, however, 6062 does not update, and consequently, the motor never moves.

I attempted to change the RPDO transmission type of 60C1sub1 from FF to 01. Both produce the same result however.

I am using a SYNC interval of 10 ms, and i have the interpolation time period set to 10 ms as well. I tried raising it to 50 ms, but that does not change the result.

To add, i am publishing the control word and status words using the SDO troubleshooting mechanism provided by ros-canopen (6040! and 6041!). Bit 4 in the control word, which activaltes the interpolation seems to be set. Bit 12 in the status word, which indicates interpolation active/inactive, is never set. So it seems that setting the interpolation to active is being a problem. Interestingly, the target reached bit is always set... Would this be preventing motion? Also, i tried running it through the action interface, via the terminal by publishing to /goal topic, and the goal status reported is 1 active, then 3 succeeded... but the motor never moves as the position demand value never changes. how can the trajectory controller report success if the joint_states never indicated that? that seems weird. could it be transmission types of PDO's?

I am able to run IP Mode via the software of the manufacturer. The only difference i perceive is that in that software, i am writing 1 value to the data record that is very far from the current value, the controller does the interpolation and goes there. However, through ROS, i am writing the values on a ramp via the traj controller and so overwriting the value constantly. This shouldn't be a problem tho, could it be...?

The maximum buffer size of the controller i am using is 1. Could this be an issue?

Essentially, when the drive initializes, it sets bit4 in control word, which is correct, but bit 12 in status word,which indicates that ip mode is active, is never set ...

See below the terminal output of the statusword, control word, and mode display, as printed using the periodic printing provided by ros-canopen for debugging. The init service is called, and the following is outputted:

Status      Control    Mode Display

data: 38455 data: 271   data: 6   #Operation Enabled, Interpolation active

data: 38455 data: 271   data: 6

data: 38455 data: 271   data: 6

data: 38455 data: 271   data: 6

data: 38455 data: 271   data: 6

data ...
(more)
2019-02-14 04:07:01 -0500 received badge  Famous Question (source)
2019-02-06 09:18:33 -0500 asked a question homing all motors simultaneously in ros-canopen

homing all motors simultaneously in ros-canopen Hello, The current homing routine as implemented in ros-canopen homes e

2019-02-05 16:21:35 -0500 commented question image_transport vs nodelets

Okay, thanks i thought for a second it was only pointers being published over the wire..

2019-02-05 12:29:36 -0500 asked a question image_transport vs nodelets

image_transport vs nodelets Hello, After reading the image_transport documentation, it seems like you can subscribe to

2019-01-26 18:10:36 -0500 asked a question GOAL_TOLERANCE_VIOLATED ros trajectory control

GOAL_TOLERANCE_VIOLATED ros trajectory control i have an in house parallel delta robot im controller with the joint_traj