Ask Your Question

JadTawil's profile - activity

2019-11-13 09:38:59 -0600 received badge  Popular Question (source)
2019-10-22 01:38:54 -0600 received badge  Famous Question (source)
2019-08-12 13:10:13 -0600 received badge  Famous Question (source)
2019-08-12 13:09:54 -0600 received badge  Notable Question (source)
2019-06-21 07:47:06 -0600 received badge  Popular Question (source)
2019-06-21 07:46:56 -0600 received badge  Notable Question (source)
2019-06-21 01:04:52 -0600 received badge  Notable Question (source)
2019-06-21 01:04:52 -0600 received badge  Famous Question (source)
2019-06-21 01:04:52 -0600 received badge  Popular Question (source)
2019-05-29 18:00:43 -0600 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 -0600 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 -0600 received badge  Famous Question (source)
2019-03-01 12:35:21 -0600 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 -0600 received badge  Famous Question (source)
2019-02-06 09:18:33 -0600 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 -0600 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 -0600 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 -0600 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

2019-01-15 18:29:04 -0600 commented answer roscanopen + joint_trajectory_controller + Interpolated Position Mode

do you have 60C1 set as an RPDO, what transmission type are you using ?

2019-01-14 20:28:57 -0600 received badge  Famous Question (source)
2019-01-14 14:39:05 -0600 received badge  Notable Question (source)
2019-01-14 14:38:54 -0600 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...

2018-12-04 08:52:21 -0600 received badge  Famous Question (source)
2018-12-04 08:52:21 -0600 received badge  Notable Question (source)
2018-10-31 06:23:35 -0600 received badge  Notable Question (source)
2018-10-29 07:28:19 -0600 received badge  Popular Question (source)
2018-10-28 11:26:54 -0600 asked a question four wheel steering controller

four wheel steering controller Hello All, I am looking at the code in the four_wheel_steering_controller package found

2018-10-22 13:09:30 -0600 answered a question 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

2018-10-21 15:06:01 -0600 commented answer How to rotate vector by quaternion in python

Can you please explain the math being done here? Also vik748 can you elaborate?

2018-09-26 11:08:22 -0600 commented answer a hard real-time ROS?

gotcha, thanks gvd

2018-09-26 09:31:12 -0600 commented answer a hard real-time ROS?

while i understand what a real-time (soft/hard) system is, i still cannot provide myself a real world example of a robot

2018-09-20 06:30:50 -0600 received badge  Supporter (source)
2018-09-18 21:07:55 -0600 received badge  Notable Question (source)
2018-09-18 07:30:55 -0600 received badge  Popular Question (source)
2018-09-18 07:23:32 -0600 commented answer roscanopen SDO or PDO for service calls?

my email is jd224234@dal.ca, shoot me an email if this is a possibility

2018-09-18 07:22:59 -0600 commented answer roscanopen SDO or PDO for service calls?

awesome. on another note. i very much admire the software acrhitecture used in ros-canopen. I am interested in learning

2018-09-17 14:07:14 -0600 asked a question roscanopen SDO or PDO for service calls?

roscanopen SDO or PDO for service calls? If i have an object mapped to a PDO in the canopen EDS and then i go to use the

2018-09-14 17:37:29 -0600 marked best answer roscanopen + cyclic position mode + nanotec controller

Hello all,

I have a nanotec integrated servo controller (the PD6-CB87S048030-E-09), with support for CanOpen in DS402 profile.

I am wondering about the cyclic synchronous position mode, which is described as:

In this mode, the motor controller receives an absolute positional specification at fixed time intervals via the field bus. In this case, the motor controller no longer computes ramps but only follows the specifications. The target position is transfered via PDO, to which the motor controller responds promptly. Note: The target specification is absolute and thus independent of how often it was sent per cycle.

Is the cycle being refered to here the period of the SYNC message, sent by the canopen master? On the ROS side, how often do i publish to <joint_name>/command, if the joint node is registered in cyclic synchronous position mode? Do i publish at a rate that is at least greater than the cycle period?

My application is a wheeled robot, and i'm using this controller for the steering column. My controller translates cmd_vel message to absolute angles for the steering columns in rads and publishes to /command topic on every update() call. Is it better to use profile position here?

2018-09-14 13:00:06 -0600 edited question Switch Operating Mode during runtime Ros Canopen

Switch Operating Mode during runtime Ros Canopen Hello, I am using a canopen controller that only allows switching ope

2018-09-14 12:42:00 -0600 edited question Switch Operating Mode during runtime Ros Canopen

Switch Operating Mode during runtime Ros Canopen Hello, I am using a canopen controller that only allows switching ope

2018-09-14 12:23:44 -0600 received badge  Popular Question (source)
2018-09-14 12:16:46 -0600 edited question Switch Operating Mode during runtime Ros Canopen

Switch Operating Mode during runtime Ros Canopen Hello, I am using a canopen controller that only allows switching ope

2018-09-14 11:00:31 -0600 edited question Switch Operating Mode during runtime Ros Canopen

Switch Operating Mode during runtime Ros Canopen Hello, I am using a canopen controller that only allows switching ope

2018-09-14 10:58:32 -0600 edited question Switch Operating Mode during runtime Ros Canopen

Switch Operating Mode during runtime Ros Canopen Hello, I am using a canopen controller that only allows switching ope

2018-09-14 10:17:18 -0600 edited question Switch Operating Mode during runtime Ros Canopen

Switch Operating Mode during runtime Ros Canopen Hello, I am using a canopen controller that only allows switching ope

2018-09-14 09:44:01 -0600 edited question Switch Operating Mode during runtime Ros Canopen

Switch Operating Mode during runtime Ros Canopen Hello, I am using a canopen controller that only allows switching ope

2018-09-14 07:47:20 -0600 asked a question Switch Operating Mode during runtime Ros Canopen

Switch Operating Mode during runtime Ros Canopen Hello, I am using a canopen controller that only allows switching ope

2018-09-06 09:37:57 -0600 asked a question ros canopen in ready-to-switch-on mode

ros canopen in ready-to-switch-on mode Here is what i am trying to do. I want to record the joint_states of some joints